I’d like to propose that Conda-forge adopts the Condax project as one of the tools within its ecosystem. (I’m not sure if this should be submitted as an enhancement request in one of conda-forge repos, or as a Conda-forge Enhancement Proposals – please redirect me if needed.)
First I want to expand on the problem that Condax currently solves, and then on the current maintance problems and why I hope it could be maintained by the Conda-forge community.
User-level software installation/management
Let me show a simple real use case from my own experience: I frequently use the git --update-refs
, and this option was made available in Git 2.38. I regularly use git my own Linux installations, some servers and HPC systems, and system-installed Git versions available on them range between 2.25 and 2.34. I want to use Git 2.38+ without upgrading the system Git, which may be cumbersome or downright impossible (as I don’t have the root access).
Of course, Git is just an example. Other tools that I found useful to install in my user account include jq
, direnv
, tig
, etc.
Surprisingly, there are not so many tools for user-level software installation and management, especially if we want to use it across different platforms (Linux, MacOS) and architectures, and want to use binary packages as much as possible. I have performed a quite wide-range review of solutions that can be used in a situation like the one above (I can provide more details about comparison of these tools if needed):
- HPC-focused build tools: Easybuild, Spack,
- other build tools: pkgsrc, Gentoo portage,
- universal version manager: asdf,
- containerisation tools: Singularity/Apptainer, udocker, JuNest,
- package managers: Nix, Guix, Homebrew.
Conslusion: none of these tools fulfil the above requirements. They either build software from source (build tools, asdf), which takes time and depends on specific toolchain being already installed in the system, or they require specific setup in the system to be performed as root (Nix, Guix, Homebrew; even if the actual software installation can be done later without root access). In theory, containerisation solutions could work completely without root, but in practice, setting them up is far from straightforward and I can’t really recommend them to someone who just wants to install a few specific packages on their account with a simple command or two.
Condax to the rescue
Conda-forge offers a great repository of packages, such as Git from my example, and Conda can install them without any root access whatsoever. However, Conda was not meant to be a user-level package manager, and Condax provides the missing thin layer on the top of Conda.
Installation of any Conda-forge-provided software on the user account becomes extremely easy:
- Condax itself can be installed with simple
pip install --user condax
orpipx install condax
- I can then install e.g. the latest Git with
condax install git
Not even an installation of Conda is required – Condax will download and install Micromamba if no Conda/Mamba/Micromamba is available. This simplicity is very unique, and as far as I know, no other package manager can install user-level software so easily.
The current state of Condax
I’m not affiliated with Condax in any way. I’m just a user who doesn’t want this project to die. I haven’t consulted my post with Marius van Niekerk, the maintainer of Condax, but he did say that he would love to see some co-maintainers.
It looks like Marius van Niekerk has little time to maintain Condax these days. In particular, the latest release, 0.2.2 from 2023-09-27, contains a bug that makes the config file completely unusable, and the fix has been waiting to be merged for more than a month now. There has also been a fork of Condax that added some very useful features, but the maintainer of the fork said they had lost interest, so there is no-one to merge these features.
This is a sad state of affairs for such a useful tool, and while I can offer some of my time to Condax, I’m afraid only support from a wider community of Conda-forge can bring this project to life, hence my proposal to make it an official part of the Conda-forge ecosystem.