Author:
Hash:
Timestamp:
+147 -0 +/-2 browse
Kevin Schoon [me@kevinschoon.com]
749bb88a3ddb963d69b0df02f45cbc0a56021796
Tue, 13 May 2025 14:30:50 +0000 (6 months 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 |