Acknowledgements¶
alai borrows ideas from a number of projects, and is built on others. If alai is useful to you, these may be too.
Inspiration¶
- uv, Astral's package and project
manager for Python. alai's commands, flags, defaults and output are
heavily modeled on uv's. Commands like
alai add,alai lockandalai syncare meant to feel and act like their uv counterparts, with only a few minor differences. - ModuleFast, by Justin Grote. ModuleFast does for PowerShell modules and the PowerShell Gallery what alai does for Ansible collections and Galaxy. Its artifact and index mirroring is what inspired me to do the same for Galaxy and collection content.
- Cargo, Rust's package manager. Its registry index shaped alai's index format. Like Cargo's sparse index, alai's is a set of static files that any web server or CDN can serve, with one file per collection and a line per version.
- PwshSpectreConsole, by Shaun Lawrie, inspired these docs. Its examples are run and recorded, so the documentation shows what the commands really print. The recordings in these docs do the same for alai.
Built with¶
These are some of the key components alai is built with, though the list isn't exhaustive:
- Ansible Galaxy, the source of alai's default index. The content from Ansible Galaxy is mirrored to the alai index as part of a regular sync job.
Python¶
- argcomplete provides shell completion.
Rust¶
Part of alai is a native extension written in Rust, for the work that's slow in Python.
- PyO3 and maturin build the extension into the Python package.
- PubGrub chooses the versions, as the version solving algorithm uv and Cargo use.
- tar and
flate2 extract collection tarballs,
and sha2 checks each file against the
collection's
FILES.jsonas it goes. - reqwest downloads from the index on Tokio, over HTTP/2 where the host supports it.
- rustls makes the TLS connections with AWS-LC for its cryptography, and rustls-platform-verifier has the operating system verify their certificates.
- serde_json reads index files
and each collection's
MANIFEST.jsonandFILES.json. - libyaml-safer reads a
collection's
galaxy.ymlandmeta/runtime.yml. libyaml-safer is a Rust port of the libyaml parser that ansible-core reads YAML with. - toml_edit reads
alai.toml,alai.lockand the config files, and editsalai.tomlwhile keeping the rest of its text, as Cargo and uv do.
Docs¶
- Zensical builds these docs.
- asciinema-player plays their recordings.
- asg draws the README's recording as an animated SVG.