Author:
Hash:
Timestamp:
+147 -0 +/-2 browse
Kevin Schoon [me@kevinschoon.com]
749bb88a3ddb963d69b0df02f45cbc0a56021796
Tue, 13 May 2025 14:30:50 +0000 (3 weeks ago)
1 | diff --git a/content/blog/announcing-ayllu-0.4/README.md b/content/blog/announcing-ayllu-0.4/README.md |
2 | new file mode 100644 |
3 | index 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 |
152 | index 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 |