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

Enterprise Data Science
Why Understanding CVEs Is Critical for Data Scientists
CVEs are Common Vulnerabilities and Exposures found in software components. Because modern software is complex with its many layers, interdependencies, data input, and librari...
Read More
Enterprise Data Science
Enterprises Need to Think Differently about Data Science. Here’s How.
Companies that are data science literate make and communicate decisions on the basis of real data models, and not merely instinct or tradition. They welcome new data science t...
Read More
News
What You Missed on Day One of AnacondaCON 2018
And we’re off! Day One of AnacondaCON 2018 is officially in the books, y’all. For those of you who couldn’t make the trek to Texas, here are some highlights from what yo...
Read More