Rattler is a low-level open-source library written in Rust that implements features to handle conda packages: resolving, installing, downloding and more.
Ideas:
Implement repository mirrors for rattler in Rust
Scope: 350 hours (medium)
Description:
In the conda world you can define a "channel" from which you want to get the package from. This is, for example, "conda-forge", or "pytorch", etc. We would like to implement the ability to define a channel and multiple "mirrors" of the channel that host the same packages (verified by checking their SHA256 hashes). rattler
would need the ability to select the best (e.g. geographically closest) mirror, attempt a download, and fail over to another mirror if – for example – the file is not available from said mirror yet.
Skills: Networking, Rust
Expected Outcomes: an implementation in rattler_networking
that supports selecting the fastest mirror, and intelligently switches mirrors based on download speed and reliability. Stretch goals are OCI support (to be able to download from arbitrary OCI artifacts) and S3/Google Storage support (e.g. using OpenDAL).
Mentors: Wolf Vollprecht, Bas Zalmstra
Implement package signing for conda packages in Rust
Scope: 350 hours (hard)
Description:
We would like to further solidify rattler & implement "TUF" support (the Update Framework). TUF is a reference in terms of security for package registries and has been implemented in mamba
and conda
(conda-content-trust
). Based on those two implementations we would like to implement TUF support in a similar fashion. Furthermore, we would then like to understand how we can integrate with sigstore.dev
for enhanced Supply Chain Security.
Skills: Cryptography, Rust
Expected Outcomes: An implementation of package signing using the sigstore crate and TUF that is merged in rattler.
Mentors: Wolf Vollprecht, Bas Zalmstra
Resolvo is a high performance SAT solver that is used in rattler
to solve conda package dependencies and in rip
to solve PyPI package dependencies. It is written from scratch in Rust and implements state of the art conflict drive clause learning.
Ideas:
resolvo
furtherresolvo
async for faster PyPI resolving but there could be more benchmarking for even faster speeds. Additionally there are some pathological cases where changing the order of backtracking could yield amazing speed ups.resolvo
resolvo
. These features are available in libsolv
, the SAT solver that many ideas in resolvo
are based on.