Skip to content

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
  1. Export your environments:

    conda env export -n myenv > myenv.yml
    

  2. Uninstall Miniconda/Anaconda

  3. Install Miniforge

  4. 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 defaults channel for commercial projects
  • Set channel_priority: strict to prevent mixing
  • Most packages are available on conda-forge