Beware: the anaconda is squeezing us

If you are a Python user, you know you should always (I mean it!) use virtual environments to keep things separate, reproducible and sane. There are plenty of options to choose from such as venv or virtualenv. A somewhat broader tool for this is conda, “a community supporting a language-agnostic, multi-platform package management ecosystem for projects of any size and complexity”. There are a lot of things you can do with this, but in particular it is very well suited for working with Python environments.

Sounds good? It is, but there is a catch. The main driver of using conda in data science with Python is Anaconda Inc. and while being community-driven, they need to make money at some point. To do that, they changed their Terms of Service (ToS) in 2020 (already), insisting that “government entities and non-profit entities with over 200 employees or contractors” must pay. That includes FZJ, no matter how many use this service. Once a single person from FZJ uses their channel, FZJ would be obliged to pay. But do they actually mean it? Yes, they do, and not only commercial users are affected. At least one Helmholtz Centre has been contacted by them, recognizing a breach of Anaconda’s ToS by Helmholtz IP addresses. Don't get me wrong: Anaconda is supporting data science and Python with a lot of resources and if other companies make money with this, they should pay. Yet, the current ToS and the corresponding FAQs strongly suggest, that FZJ would be among those entities who need to pay.

The good news is: there are alternatives and actually very good ones. A quite prominent one is mamba, The Fast Cross-Platform Package Manager. While primarily targeting speed and reliability, this package/environment manager has conda-forge as default channel to pull the packages from. This community-driven channel is independent of Anaconda and avoids any ToS breaches, while keeping the great features of such a package/environment system based on conda. Ways to use mamba include mini-forge or micromamba, for example. Be aware to remove the default channel also from existing environments and do not use other Anaconda products like the Anaconda Distribution.

Bottom line: you have a choice and this is good news. Use virtual environments when working with Python and when you rely on conda, do not use Anaconda services/channels. If you need help, get in touch (see last FAQ below)!

FAQs

Can I still use conda from Anaconda?
Yes. Any open-source, free package manager is fine, but you have to make sure you do not pull packages from Anaconda's "defaults" channel. This is the major impact of the ToS changes. Using this channel incurs license fees and has to be avoided.

But they say educational institutions are good to go?
True, but in their ToS and FAQs they keep restricting this to (1) "accredited educational institutions/universities" and (2) "course curricula". This is not always consistently described on their websites, but the general understanding is that research centers like us (or national labs in the US) are subject to fees.

Are other channels (e.g., conda-forge or bioconda) are also affected?
From all we know this is not the case. User-uploaded packages are fine, even if they are hosted by Anaconda. The license fee only affects their defaults channel because there Anaconda invests resources building those packages. See also their FAQs.

Is it hard to move away from Anaconda?
First of all, you don't need to "move away from Anaconda" itself, but avoid their commercial tools (such as the Anaconda Distribution) and defaults channel. The distribution is more of a convenience toolbox and probably not strictly necessary for researchers. For the defaults channel there is a great user-driven alternative, the conda-forge channel. We have not yet seen a case where a package is only available through Anaconda (if you have such a case, let us know!).

How do I use the alternatives?
mini-forge and micromamba are drop-in replacements for conda (and miniconda), both avoiding the defaults channel right away. Both should be able to work with existing conda environments, except that they don't pull from the defaults channel anymore. Once you are at this stage, you're all set. Note that we encourage you to use environment files for your conda environments. There you can easily specify which channels should be used and in which order.

You keep suggesting mircomamba and mini-forge, but aren't there more/better/faster/nicer ones?
For sure, depending on your needs. We don't want to start a discussion on what package manager is the best and since the whole conda universe is much larger than Python or R, this is not going to help us here anyway. But just to mention a few: there is pixi, poetry, micromamba, pip, WinPython, homebrew, EasyBuild and many more, depending on what you need, have, and want.

Do you know a way to get rid of the defaults channel easily?
Maybe. There is a question over a Stack Overflow on this particular topic and the accepted answer seems like a quick and easy fix. Yet, this may have unexpected side effects and may break your existing environments, in particular if you have more complex setups. Also, note that the ToS says "downloading, installing, using and updating those packages may require a commercial fee license", i.e. even existing environments created using the non-free channels may be subject to license fees. The more reliable solution is this one.

I have more questions and/or need help!
Did you check Anaconda's very own FAQs? If those didn't help, head over to the #rse Rocket Chat channel and see if your question has been addressed there. If not, let's hear it! There are lots of people there which may be able to help. If your question is more Python-specific, join the #python channel and see if they can help you there. And finally, JuRSE is here for you. Join us at the Open Hours or send us an email.

Author: Robert Speck

Last Modified: 08.11.2024