Conda & the conda-forge project
What is Conda and why does it exist?¶
Conda is a language-agnostic, cross-platform package manager and environment management system. It was created to solve several challenges in scientific computing:
Dependency management: Automatically resolving complex dependencies between packages
Multi-language support: Managing packages written in Python, R, C, C++, Fortran, and other languages
Binary distribution: Providing pre-compiled software to avoid compilation issues
Environment isolation: Creating separate environments for different projects to avoid conflicts
Cross-platform consistency: Working the same way on Linux, macOS, and Windows
Unlike Python’s built-in pip (which installs Python packages) and venv (which creates
Python-only environments), conda can manage non-Python dependencies like compilers,
scientific libraries (BLAS, LAPACK), and system tools.
History and evolution¶
The beginning: Anaconda, Inc. and the Anaconda distribution¶
Anaconda, Inc. (formerly Continuum Analytics) is an American company that created both the Anaconda distribution and the conda application.
The Anaconda distribution is a large
software distribution designed for
data science, with hundreds of pre-installed packages focusing on Python and R. The
distribution includes the conda command-line application for installing packages and
managing environments.
Miniconda is a minimal version of the Anaconda distribution that includes only Python and conda itself, allowing you to install packages as needed.
Understanding conda packages¶
A conda package is a compressed archive containing:
Compiled binaries (libraries and executables)
Source code files (Python, R, etc.)
Metadata about dependencies and compatibility
Installation instructions
Because conda packages contain binaries, they can include software written in any language—Python, C, Fortran, C++, R—making conda particularly powerful for scientific computing where Python often depends on compiled libraries.
Conda environments¶
The concept of conda environments is central to the conda ecosystem.
Basic conda commands:
# Create a new environment with specific packages
conda create -n myproject python=3.11 numpy pandas matplotlib
# Activate the environment
conda activate myproject
# Install additional packages
conda install scikit-learn
# Deactivate the environment
conda deactivate
# List all environments
conda env listPackage channels and repositories¶
The conda application retrieves packages from https://
Important channels include:
https://
anaconda .org /anaconda - The default Anaconda distribution channel (subject to ToS restrictions) https://
anaconda .org /conda -forge - Community-driven, fully open-source (conda-forge) https://
anaconda .org /bioconda - Bioinformatics packages (bioconda)
The conda-forge revolution¶
conda-forge emerged as a community-led infrastructure for building and distributing conda packages. It is supported by NumFOCUS (a US non-profit supporting open-source scientific software).
Crucially, Anaconda Terms of Service do not apply to conda-forge packages. This enabled the growth of a vibrant open-source community around conda, free from commercial licensing restrictions.
Miniforge is a modified version of Miniconda that uses the conda-forge channel by default instead of the Anaconda channel. This is now the recommended way to install conda for most users.
Modern developments¶
The conda ecosystem has evolved significantly:
Performance improvements:
condaoriginally had significant performance issues with slow dependency solvingMamba was developed as a faster C++/Python reimplementation of conda
Modern conda now uses the libmamba solver internally, making it much faster
Micromamba provides conda functionality without requiring Python
European innovation: Two European companies (QuantStack and Prefix) have invested heavily in the conda ecosystem, creating modern tooling:
Pixi is a modern package management tool built on the conda ecosystem, written in Rust. It offers:
Fast dependency resolution
Project-based workflow (similar to npm or cargo)
Lock files for reproducibility
Easy global application installation
Example: Installing IPython globally with Pixi
pixi global install ipython --with matplotlib --with pandasAlternative infrastructure:
https://prefix.dev provides an alternative package repository (like anaconda.org) with support for both public and private conda channels
This reduces dependence on anaconda.org infrastructure
Current recommendations (2025)¶
The conda ecosystem has matured into a fully open-source solution with minimal dependency on Anaconda, Inc.
Not recommended:
Installing the full Anaconda distribution
Installing Miniconda (unless you specifically need conda/mamba commands and understand the ToS)
Recommended approaches:
For modern project-based workflows: Install Pixi
Best for: Developers wanting reproducible, project-based environments
Advantages: Fast, modern, lock files, easy to use
Use with: https://prefix.dev or conda-forge
For traditional conda workflows: Install Miniforge
Best for: Users familiar with conda who want conda/mamba commands
Advantages: Full conda compatibility, conda-forge by default
Provides:
condaandmambacommands
For minimal installations: Use Micromamba
Best for: CI/CD pipelines, Docker containers, minimal environments
Advantages: Small, fast, no Python dependency
When to use conda vs PyPI¶
Use Pixi/conda-forge when:
You want a modern, fast, reproducible workflow
You’re starting a new project and want best practices from day one
You need non-Python dependencies (compilers, scientific libraries, Qt, etc.)
You’re working on Windows and need complex scientific software
Your project requires R, Python, and C/C++ packages together
You need pre-compiled binaries for faster installation
Use conda/conda-forge/bioconda when:
You want to reproduce old workflow involving conda commands
Use modern solutions based on PyPI (PDM, UV, ...) when:
You want a modern, fast, reproducible workflow
You’re starting a new project and want best practices from day one
You’re working on a Python package that has to be uploaded on PyPI
You need the very latest package versions (PyPI is often more up-to-date)
You need to use non-Python dependencies installed with other methods
Summary¶
It is now possible to use the conda ecosystem without strong dependencies on Anaconda, Inc. The community-driven conda-forge channel and modern tools like Pixi and Miniforge provide powerful, open-source alternatives.
Bottom line: Unless you have specific requirements, avoid the Anaconda distribution and Miniconda. Start with Pixi for modern workflows or Miniforge for traditional conda usage.