Why We Removed the “Free” Channel in Conda 4.7

 

One of the changes we made in Conda 4.7 was the removal of a software collection called “free” from the default channel configuration. The “free” channel is our collection of packages prior to the switch in recipes/compilers that we did for the Anaconda Distribution 5.0 release. The current primary channel, “main,” is also totally free of charge. This is not a switch to charging for packages, only a switch from two potential pools of packages to just one. We removed the “free” channel from defaults for a number of reasons – all oriented towards providing you with a faster Conda experience.

First, Conda is fundamentally limited in speed by the number of packages that it must contend with. Fewer packages to consider directly translates to faster Conda. The “free” channel made up 42.8% of the ~31,000 available package files:

Conda package files

Second, the “free” channel contained packages whose metadata often caused problems. Part of what was introduced in the rebuilds for Anaconda Distribution 5 was an automated scheme for constraining libraries. That dramatically improved the quality of the constraints in the newer “main” channel. However, when those constraints excluded a solution, Conda was free to use packages from “free” that did not express constraints where they should have. This resulted in very long solve times (hours) and ultimately, broken environments. Removing the free channel was the only efficient way to exclude these broken constraints and avoid the associated problems.

Why are things breaking, though? Symptoms include environments that are no longer satisfiable, or packages that are missing.  All of the software on the “main” channel was carefully bootstrapped so that it does not include any reference to the free channel, but  software from third party channels, such as conda-forge, may not have undergone such careful filtering for content from the free channel. Packages that end up depending on content that was only available on the free channel are now unsatisfiable. These packages need to be rebuilt. The hard part is often not rebuilding them, but identifying where the exact dependency on the free channel is introduced. We’re working on improving Conda’s messaging to help people understand this.

In the meantime, you can still add the free channel back. We don’t recommend this unless you really need to, because it is slower, and you may run into binary incompatibilities. Nevertheless, there’s a setting:

conda config --set restore_free_channel true

 

The brokenness that can come from the free channel can be obvious (solves taking hours) or subtle (cryptic error messages about seemingly unrelated parts), but we hope this clarifies the situation and helps you get back on track if you’ve been affected by this change. Be sure to try to rectify the usage of free in your packages, rather than leaving this setting on. 


You May Also Like

For Practitioners
RPM and Debian Repositories for Miniconda
Conda, the package manager from Anaconda, is now available as either a RedHat RPM or as a Debian package. The packages are the equivalent to the Miniconda installer which only...
Read More
For Practitioners
Reinforcing Open Data Science Foundations with conda 4.3 Release
At Continuum Analytics, we talk a lot about Open Data Science—this new world order of analytics that is rapidly accelerating the pace of innovation around Big Data and Data ...
Read More
Enterprise Data Science
Secure and Scalable Data Science Deployments with Anaconda
In our previous blog post about Productionizing and Deploying Data Science Projects, we discussed best practices and recommended tools that can be used in the production and d...
Read More