The advantages of the use of conda and conda-forge are:
- Updated dependencies: conda-forge tipically has relatively recent version of the dependencies, so if you want to use a recent version of some libraries quite used in robotics such as VTK or PCL (or event a recent compiler) on an old Linux distro such as Ubuntu 16.04, you can. This permits us to support older distributions even when the packages that install via apt are relatively old.
- No need for root permissions or to change the system state: all the software installed by conda is installed and used in a user directory, so even if you are on a system in which you do not have root access (such as a shared workstation) you can still install all you required dependencies
- Use of binaries: conda distributes its packages as binaries, so even to download heavy dependencies such as OpenCV, PCL, Qt and Gazebo on Windows it just takes a few minutes, as opposed to hours necessary to compile them when using vcpkg. This is also useful when producing Docker images that require a recent version of PCL or VTK: installing them via conda takes a few seconds, and this would cut the time necessary to regenerate Docker images.
- Reproducible enviroments: conda has built in support for installing exactly the same version of the packages you were using in the past, up to the patch version. This is quite important for reproducibility in scientific research. See https://www.nature.com/articles/d41586-020-02462-7 for a Nature article on the importance of reproducibility in scientific research.
- ROS easily available on Windows and macOS: On macOS and Windows, conda is also the package manager for which it is more easily possible to obtain working binaries of ROS1 and ROS2, thanks to the work of the RoboStack project
- Simple and fast creation of new conda-forge packages: The entire process of mantainance of conda-forge packages is GitHub-based. If you want to add a new package to conda-forge, the required steps are minimal, and as soon as the package is approved the package is ready to be used, as opposed to the stable Linux distributions that are tipically used in robotics research (such as Ubuntu LTS) in which adding a new package may require months and users can be used them only when a new LTS is released and the users install them.
The disadvantages of conda and conda-forge are:
- Not compatible with dependencies installed by other package managers: As conda-forge provides all the software it installs without using almost anything from the system, you cannot mix libraries installed by other package managers (such as
apt
orhomebrew
). If you have a dependency that is only provided byapt
and is not available inconda-forge
, then you should install all the dependencies that you want to use fromapt
. - No Debug version of C++ libraries on Windows: as other package managers such as
apt
orhomebrew
, a part from some small exceptions conda-forge only ships the version of the libraries compiled as shared library and inRelease
compilation mode. This is not a big problem on Linux or macOS, where executables compiled inDebug
can link libraries compiled inRelease
, but is more problematic on Windows, where this is not possible. When you are using conda-forge libraries on Windows, you can't compile your executable inDebug
mode, but only inRelease
orRelWithDebInfo
mode. If you stricly need to also have theDebug
version of the libraries, thevcpkg
package manager may be more useful for you.