Commit

Author:

Hash:

Timestamp:

+147 -0 +/-2 browse

Kevin Schoon [me@kevinschoon.com]

749bb88a3ddb963d69b0df02f45cbc0a56021796

Tue, 13 May 2025 14:30:50 +0000 (3 weeks ago)

add ayllu 0.4 announcement
1diff --git a/content/blog/announcing-ayllu-0.4/README.md b/content/blog/announcing-ayllu-0.4/README.md
2new file mode 100644
3index 0000000..d1b0b8b
4--- /dev/null
5+++ b/content/blog/announcing-ayllu-0.4/README.md
6 @@ -0,0 +1,144 @@
7+ # Ayllu 0.4 Has Been Released!
8+
9+ `05/13/2025`
10+
11+ <br />
12+
13+ Ayllu release [0.4.0](https://ayllu-forge.org/ayllu/ayllu/refs/tag/0.4.1) has
14+ been tagged after a year of inconsistent development. This release has seen a major
15+ *reduction* in the number of features available in Ayllu and a simplification
16+ of it's operation. Most of the features that have been removed will eventually
17+ make their way back into the software as time permits and can be done in a
18+ way that is simple to maintain. Although the core functionality of Ayllu has
19+ been minimized, two new major (unfinished) libraries were developed adjacently:
20+ [maitred](https://ayllu-forge.org/ayllu/maitred), an embedable SMTP server,
21+ and [papyri](https://ayllu-forge.org/ayllu/papyri), an OCI compliant container
22+ registry. See more details below.
23+
24+ If you'd like a quick demo you can run our latest container image:
25+
26+ ```sh
27+ cd some-repository
28+ podman run --rm -ti -p 10000 -v $PWD:/repo --workdir=/repo registry.ayllu-forge.org/ayllu/ayllu:main
29+ # Ayllu should be available at http://localhost:10000
30+ ```
31+
32+ ## Notable Reductions
33+
34+ ### The Ayllu Binary is Now Stateless
35+
36+ The `ayllu-jobs` binary has been temporarily removed after several iterations
37+ of implementing sqlite based state. The binary is responsible for
38+ doing CLOC anaylsis with [Tokei](https://github.com/XAMPPRocky/tokei),
39+ calculating authorship statistics, and anything else that needs to be run at a
40+ periodic interval. The jobs themselves have worked well but I've not been
41+ satisfied with any approach I've used to communicate stateful data into the UI
42+ in a way that is extensible. Ultimately my goal is to maintain an ultra fast
43+ static web interface that can be easily extended with new kinds of repository
44+ information. A future update will re-enable the state as opt-in likely via
45+ an RPC interface or shared database crate.
46+
47+ ### Git Blame is Removed
48+
49+ Although the server has the ability to generate everything that is needed
50+ to display `git blame` data I haven't been able to design UX that looks good
51+ enough to present it so I've opted to remove the code for now. If anyone has
52+ suggestions for how to do it in pure html/css please reach out.
53+
54+ ### Simplified Themeing
55+
56+ The themeing engine was reverted back from Tera to Askama see commit:
57+ [5c5e94](https://ayllu-forge.org/ayllu/ayllu/commit/5c5e94b2eff4d4181bd59ed359dabb509b0a34fc).
58+
59+ ## New Features
60+
61+ ### Web Finger Protocol Support
62+
63+ A concept of static "membership" has been added to the server which is browsable
64+ over the [webfinger](https://en.wikipedia.org/wiki/WebFinger) protocol. You
65+ can use the `quipu` binary to query resources on an any Ayllu server:
66+
67+ ```sh
68+ quipu finger "acct:demo@example.org"
69+ ```
70+ ```json
71+ {
72+ "subject": "demo@example.org",
73+ "links": [
74+ {
75+ "rel": "http://webfinger.net/rel/profile-page",
76+ "type": "text/html",
77+ "href": "https://example.org/demo"
78+ },
79+ {
80+ "rel": "http://webfinger.net/rel/profile-page",
81+ "type": "text/html",
82+ "href": "https://example.org/@demo"
83+ },
84+ {
85+ "rel": "http://webfinger.net/rel/avatar",
86+ "href": "https://example.org/avatar.png"
87+ },
88+ {
89+ "rel": "http://ayllu-forge.org/rel/description",
90+ "properties": {
91+ "text": "Programmer interested free software"
92+ }
93+ }
94+ ]
95+ }
96+ ```
97+ ```sh
98+ # Or via curl
99+ curl 'http://localhost:10000/.well-known/webfinger?resource=acct:demo@example.org' |jq .
100+ ```
101+
102+ Currently the server only can share static account information from the global
103+ configuration file but future updates will expose repository and other
104+ information. Eventually there are plans to implement global searchable index of
105+ Ayllu instances which will crawl this protocol data.
106+
107+ ### Mirror Aware Repositories
108+
109+ Ayllu will detect repositories that contain origins that have the `mirror` flag
110+ enabled and display them as "non-canonical" sources in the UI.
111+
112+ ### Multiuser Container Image
113+
114+ The [multiuser](https://ayllu-forge.org/ayllu/ayllu/tree/main/containers/multiuser)
115+ container image has been further developed and offers a simple way for managing
116+ trusted multi-user forge environments.
117+
118+ ### New Crates
119+
120+ Two new crates [ayllu-shell](https://ayllu-forge.org/ayllu/ayllu/tree/main/ayllu-shell)
121+ and [ayllu-keys](https://ayllu-forge.org/ayllu/ayllu/tree/main/ayllu-keys) were
122+ added which when completed will allow a simple static configuration of user
123+ authorization into an Ayllu managed server.
124+
125+ ## Supplemental Libraries
126+
127+ ### Maitred SMTP Server
128+
129+ A new crate offering an embeddable SMTP server has been developed called
130+ [maitred](https://ayllu-forge.org/ayllu/maitred) for use in Ayllu so that it
131+ can easily receive patches over SMTP. This project is made possible by the
132+ low-level protocol implementation of the
133+ [stalwart](https://github.com/stalwartlabs/mail-server) project. Most of this
134+ crate is functional however ARC and DMARC verification need to be finished
135+ before we can safely handle messages. Once completed this will be implemented
136+ as part of the `ayllu-mail` binary.
137+
138+ ### Papari OCI Container Registry
139+
140+ The [Papyri](https://ayllu-forge.org/ayllu/papyri) OCI container registry has
141+ started development which will provide the ability to read and write container
142+ images directly into an Ayllu instance. This crate currently only supports
143+ direct file system storage but a SQLite blob backend or possibly S3 compatible
144+ store may be added. This crate is shipped with an export of Axum routes and
145+ once integrated will allow pushing and pulling OCI manifests directly from
146+ the web interface.
147+
148+ #
149+
150+ That's all for now, thanks for reading!
151 diff --git a/sitemap.yaml b/sitemap.yaml
152index 0de2735..969527d 100644
153--- a/sitemap.yaml
154+++ b/sitemap.yaml
155 @@ -5,6 +5,9 @@ entries:
156 - name: blog
157 enabled: true
158 others:
159+ - name: announcing-ayllu-0.4
160+ tagline: Ayllu version 0.4 has been released.
161+ date: 2025-05-13
162 - name: building-this-website
163 tagline: There is no deficiency of static website generators these days and so I had to write my own.
164 date: 2023-04-04