Hi all,

I am happy to announce that the [ALPM][0] (Arch Linux Package Management)
project receives funding from the [Sovereign Tech Agency][1] for work on the
Arch Linux packaging ecosystem.

> The Sovereign Tech Agency supports the development, improvement, and
> maintenance of open digital infrastructure.
> Its goal is to sustainably strengthen the open source ecosystem, focusing on
> security, resilience, technological diversity, and the people behind the code.

The investment from the Agency's Sovereign Tech Fund provides financing for four
developers to work on the ALPM project in a part time capacity over the course
of 15 months.
The developers are [Arne Christian Beer][2], [Heiko Schäfer][3], [Orhun
Parmaksız][4] and [David Runge (myself)][5].
Work on the project has started in October 2024 and the funding continues until
the end of 2025.

The ALPM project provides specifications, as well as Rust libraries and tools.
Its goals are robust integration for all package creation, validation and
installation tasks, repository management, as well as drop-in replacements or
alternatives for some facilities provided by [pacman][6].

The investment through the Sovereign Tech Fund supports multiple milestones,
which are explained below.


## Formal specifications for packaging data formats

The Arch Linux packaging ecosystem uses underspecified/undocumented file and
metadata types, yet we need to be able to use them reliably in other contexts
such as package creation, build and package repository management tooling.

Therefore this milestone involves developing versioned specifications for all
low-level descriptor file and implementing Rust libraries based on them.
These will be based on the existing ad-hoc reference implementations in
[makepkg][7] and pacman.


## Basic OpenPGP verification of artifacts

Signature verification in Arch Linux package management currently hinges on a
stateful GnuPG keyring. This solution is brittle and has already caused various
issues related to the Arch Linux keyring in the past.

To simplify signature verification - while at the same time enabling the use of
a more diverse set of cryptographic technologies - a specification for the [UAPI
group][8] will be written.
An accompanying Rust library will be provided as a simple and stateless
integration, not limited to use in Arch Linux.


## Rust library for handling of individual packages

The structure of Arch Linux package files is currently not explicitly defined.
This milestone focuses on providing a formal specification of what an ALPM-based
package contains, how it is created and handled.
A dedicated Rust library and tool will facilitate package creation, validation
and installation.

These new Rust libraries will also expose a C API for possible integration into
the C-based libalpm library.


## Rust library for system package management

This milestone revolves around the use of the previously implemented components
by providing a library for package download, validation, verification,
installation and state handling similar to pacman's libalpm and will handle sets
of individual packages on user systems.
A C-API will be provided for compatibility with libalpm-based applications.

One specific concern of this milestone is modernizing the OpenPGP integration.
Current package management tooling does not allow for scoping signature
verifiers (e.g. OpenPGP certificates) for a specific purpose, such as "only
packages" or "only repository metadata".
The new system will rely on a stateless approach such as the one to be proposed
as specification to the UAPI group.


## Distribution-agnostic OpenPGP stack for the verification of distribution
artifacts

This milestone will focus on a set of foundational libraries, based on a UAPI
specification from a previous milestone.
These libraries will add support for PGPKI (aka the “Web of Trust”) in the
generic directory structure for OpenPGP certificates used for the verification
of distribution artifacts.

The libraries mentioned above will be integrated into the ALPM context to allow
for example the full verification of packages and repository metadata.
A Rust-based solution will be provided as a modern alternative to the current
GnuPG-based approach.


# The outcome(s)

The ALPM project strives to build a modern, sustainable, maintainable and
memory-safe framework for the Arch Linux packaging ecosystem.
This framework will enable robust and predictable integration for all package
related tooling and libraries.

The project goals are intentionally ambitious while being constrained to a
relatively short period of time.
The work is organized so that real world benefits will happen early and often.
Several infrastructure related projects have already reached out with a concrete
interest to make use of libraries created in the first phase of the project.

The work will be done in the open, on the [Arch Linux GitLab][0].
Everyone and anyone is welcome to join in and help out!

My sincerest thanks go to the Sovereign Tech Agency for commissioning dedicated
work on the ALPM project.

Best,
David


[0]: https://gitlab.archlinux.org/archlinux/alpm/alpm
[1]: https://www.sovereign.tech/
[2]: https://gitlab.archlinux.org/nukesor
[3]: https://gitlab.archlinux.org/heiko
[4]: https://gitlab.archlinux.org/orhun
[5]: https://gitlab.archlinux.org/dvzrv
[6]: https://wiki.archlinux.org/title/pacman
[7]: https://wiki.archlinux.org/title/Makepkg
[8]: https://uapi-group.org

Attachment: signature.asc
Description: PGP signature

Reply via email to