Proposal for adopting the Condax tool

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 or pipx 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.

Hi @kxmh42

Maybe you would like to check out pixi? GitHub - prefix-dev/pixi: Package management made easy

It’s actively developed by us (prefix.dev) and we’re building a community around it. It supports “global installation” inspired by condax and pipx.

Feel free to leave us your feedback here or in our Discord :slight_smile:

1 Like

Hi @kxmh42,

If you would like to see condax potentially gain a new set of contributors, we could add this project to our “conda-incubator” organization on GitHub.

Conda Incubator is a place for new projects in the conda eco-system to first gain traction before being officially adopted by another organization. In order to get a project in the incubator, the project does require a sponsor from the conda steering council. @jezdez has kindly offered to help sponsor this project.

FYI, this is not the kind of thing that would need a CEP (conda enhancement proposal).

I also want to add that “pixi”, the tool @wolfv mentioned, is also a great way to install “user” level packages. I have had success using this tool myself for this purpose.

I hope you find the best solution for your use case, and we look forward to potentially having a new development team for condax.

1 Like