The miniforge installer is a relatively new, community-led, minimal conda installer that (as it says in its readme) "can be directly compared to Miniconda, with the added feature that conda-forge is the default channel".
It is unclear what is different between miniforge and Miniconda, or what the miniforge use case is.
If miniforge is the same as Miniconda except it just uses the conda-forge channel by default, why create a whole different installer - why not just use miniconda and add conda-forge as the first channel to use in ~/.condarc?
If miniforge is different from Miniconda, what is different about the two?
23 Answers
miniforge is the community (conda-forge) driven minimalistic conda installer. Subsequent package installations come thus from conda-forge channel.
miniconda is the Anaconda (company) driven minimalistic conda installer. Subsequent package installations come from the anaconda channels (default or otherwise).
miniforge started a few months ago because miniconda doens't support aarch64, very quickly the 'PyPy' people jumped on board, and in the mean time there are also miniforge versions for all Linux architectures, as well as MacOS.
Soon there will also be a windows variant (hopefully also for both CPython and PyPy)
I guess that an ARMv7 (32Bit ARM) variant is also on the horizon (Raspbian)
1The license. As of the 30 September 2020 update to the Anaconda Terms of Service, access to the Main conda channel (hosted at repo.anaconda.org) is restricted:
While both the conda and miniconda installers are published under a BSD 3-clause license, if you actually use the installed conda clients without removing the Main channel, you'll be in violation of Anaconda's ToS. The miniforge installer avoids this altogether, which is of particular interest to large organizations that wish to use conda.
2The short answer: miniforge-installed conda is the same as Miniconda-installed conda, except that it uses the conda-forge channel (and only the conda-forge channel) as the default channel.
This can be deduced by looking at the two files the miniforge repo uses to build the miniforge installer:
scripts/build.sh, which uses the conda package constructor to create a new conda installerMiniforge3/construct.yaml, a yaml file that specifies what the final conda environment should look like for the conda installer thatconstrutoris building
Looking at construct.yaml it sets conda-forge as the only channel (there is no defaults channel added; also see this Github comment) and then installs a few packages (python, conda, pip, and bzip2). It also writes those changes to the condarc.