2023-12-08-174438 Notes on Pixi - package manager written in Rust and similar to conda

[2023-12-08 Fri 17:44]

CodeJournal PythonNotes RNotes DataScienceJournal MyCommentary

Overall, Pixi is a new package manager that works like Conda, across multiple languages and aims to make package management easier by solving prominent pain points in the conda eco system. Currently, still under development and probably not yet ready to be taken into production. See <https://github.com/prefix-dev/pixi>

WolfVollprecht, a developer at Prefect, is working on a package manager project called Pixi. The Pixi package manager aims to improve the state of the Conda ecosystem addressing specific issues like performance. He also developed the Mamba package manager - which is conda re-written in C++.

Pixi is not specific to Python and can be used for managing packages in various languages. It is designed to be cross-platform and offers features similar to Poetry and Conda, in the sense there is a lock file like poetry and there is the ability to install anything from Julia to cuda packages like with Cond. (pip just installs python packages)

The project also includes a SAT solver called Resol, inspired by the LipSolve? library, which helps resolve package dependencies. Resol is much easier to maintain than LipSolve? since the latter is written in C.

Condax is meant to be for a global install, similar to and inpired by Pipx

Conda is not affected by the anaconda licensing changes.

To piggyback on an existing ecosystem, one has to look at things like archive format, method of extraction and installation.

Conda uses links to libraries: therefore only one copy of the package which is hard linked into projects.

Another advantage or focal point of Pixi is that it makes it easy to make a separate channel with only your packages, as opposed to Conda. In addition, if there is a source dependency from another pixi project - this will be built as a package and made available locally.

Currently settings are managed with a Pixi TOML file, and they are looking to merge this with the pyproject TOML, which means a single file configuration file.

There will also be some form of support for monorepos which contain mulitple projects within to run as individual pixi projects.

WolfVollprecht advice on contributing to OpenSourceSoftware?: look for good first issues or create an issue outlining what you are planning ot solve and the approach so that it is generally aligned to the goals. Always consider making a pull request up front instead of making a pull request when you are ready. This helps folks understand the direction of the changes upfront rather than later. CareerJournal

Mamba essentially used the LipSolve? C package resulting in a much faster solver, alleviating the performance issues of stock conda. It is going to turn into a pure C++ project without any python (micromamba?).

Mamba is catering to folks who have a need for mixing multiple, different environments in different locations. Pixi is focused on a single environment and cache of the library.

Micromamba is full C++ implementation of mamba/conda and strives to be a full replacement (without needing python).

References: