conda-forge and Miniforge¶
conda-forge is a community-driven collection of conda packages. Miniforge is a minimal installer that uses conda-forge by default — free for all uses, including commercial.
Why conda-forge?¶
Anaconda Licensing Issue¶
Since 2020, Anaconda Inc. requires a paid license for commercial use (organizations with 200+ employees) when using:
- Anaconda Distribution
- Miniconda (with default channel)
- The defaults channel
The Solution: conda-forge¶
conda-forge is: - Community-maintained (not owned by Anaconda Inc.) - Free for all uses (personal and commercial) - Has more packages than defaults channel - Often has newer package versions
What is conda-forge?¶
A channel (package repository) with: - 20,000+ packages - Community-maintained recipes - CI/CD for all platforms (Linux, macOS, Windows) - Transparent governance
Website: https://conda-forge.org
Miniforge vs Miniconda¶
| Feature | Miniconda | Miniforge |
|---|---|---|
| Maintained by | Anaconda Inc. | conda-forge community |
| Default channel | defaults |
conda-forge |
| Commercial use | License required | ✅ Free |
| Solver | conda (slow) | conda or mamba |
Miniforge = Miniconda but defaults to conda-forge channel.
Installing Miniforge¶
Download¶
From: https://github.com/conda-forge/miniforge
# Linux (x86_64)
wget https://github.com/conda-forge/miniforge/releases/latest/download/Miniforge3-Linux-x86_64.sh
bash Miniforge3-Linux-x86_64.sh
# macOS (Intel)
wget https://github.com/conda-forge/miniforge/releases/latest/download/Miniforge3-MacOSX-x86_64.sh
bash Miniforge3-MacOSX-x86_64.sh
# macOS (Apple Silicon)
wget https://github.com/conda-forge/miniforge/releases/latest/download/Miniforge3-MacOSX-arm64.sh
bash Miniforge3-MacOSX-arm64.sh
# Windows
# Download .exe from GitHub releases page
Verify¶
conda --version
conda config --show channels
# Should show: conda-forge (not defaults)
Mambaforge¶
Mambaforge = Miniforge + mamba pre-installed.
Mamba is a faster drop-in replacement for conda (see mamba).
# Linux
wget https://github.com/conda-forge/miniforge/releases/latest/download/Mambaforge-Linux-x86_64.sh
bash Mambaforge-Linux-x86_64.sh
# Then use mamba instead of conda
mamba install numpy pandas
Switching Existing Miniconda to conda-forge¶
If you already have Miniconda/Anaconda:
Option 1: Change Default Channel¶
# Remove defaults, add conda-forge
conda config --remove channels defaults
conda config --add channels conda-forge
conda config --set channel_priority strict
Option 2: Fresh Install (Recommended)¶
-
Export your environments:
conda env export -n myenv > myenv.yml -
Uninstall Miniconda/Anaconda
-
Install Miniforge
-
Recreate environments:
conda env create -f myenv.yml
Using conda-forge Channel¶
Install from conda-forge¶
# Explicit channel
conda install -c conda-forge numpy
# If conda-forge is default
conda install numpy
Verify Package Source¶
conda list numpy
Output shows channel:
# Name Version Build Channel
numpy 1.24.0 py311h8e6699e_0 conda-forge
environment.yml with conda-forge¶
name: myproject
channels:
- conda-forge
# Don't include 'defaults' for license-free usage
dependencies:
- python=3.11
- numpy
- pandas
- scikit-learn
- matplotlib
- jupyter
- pip
- pip:
- some-pip-package
Create:
conda env create -f environment.yml
conda-forge vs defaults¶
| Aspect | defaults | conda-forge |
|---|---|---|
| Maintainer | Anaconda Inc. | Community |
| License | Commercial restrictions | Free |
| Package count | ~8,000 | ~20,000+ |
| Update frequency | Slower | Faster |
| Quality control | Anaconda team | Community + CI |
| ARM support | Limited | Better |
Best Practices¶
1. Use Miniforge for New Installations¶
# Fresh start with conda-forge
bash Miniforge3-Linux-x86_64.sh
2. Set Strict Channel Priority¶
conda config --set channel_priority strict
Prevents mixing packages from different channels.
3. Don't Mix defaults and conda-forge¶
# Good
channels:
- conda-forge
# Avoid
channels:
- conda-forge
- defaults # Can cause conflicts
4. Pin Channels in environment.yml¶
Always specify channels in your environment file for reproducibility.
Troubleshooting¶
Package Not Found¶
# Check if package exists on conda-forge
conda search -c conda-forge package_name
# Or use pip as fallback
pip install package_name
Slow Solving¶
Use mamba instead of conda:
mamba install numpy pandas scikit-learn
Channel Conflicts¶
# Check current channels
conda config --show channels
# Reset to conda-forge only
conda config --remove channels defaults
conda config --add channels conda-forge
Summary¶
| Distribution | Default Channel | License | Recommended |
|---|---|---|---|
| Anaconda | defaults | Commercial restrictions | ❌ |
| Miniconda | defaults | Commercial restrictions | ❌ |
| Miniforge | conda-forge | ✅ Free | ✅ |
| Mambaforge | conda-forge | ✅ Free | ✅✅ |
Key Takeaways¶
- conda-forge is community-maintained, free for commercial use
- Miniforge is the recommended installer (conda-forge default)
- Mambaforge = Miniforge + mamba (faster)
- Avoid
defaultschannel for commercial projects - Set
channel_priority: strictto prevent mixing - Most packages are available on conda-forge