Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Initial draft of conda-libmamba-solver rollout blogpost. #143

Merged
merged 14 commits into from
Jul 5, 2023
42 changes: 42 additions & 0 deletions blog/2023-06-10-conda-libmamba-solver-rollout.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
---
title: "Conda and the libmamba solver: Roll-out plan 2023"
slug: "2023-06-10-conda-libmamba-solver-rollout"
description: |
Learn about the upcoming rollout plan for the conda-libmamba-solver, bringing enhanced performance and user experience to conda.
authors: [jezdez]
tags: [conda, mamba, solver, libmamba, dependency solver, performance, user experience, conda-forge, pycosat, plugin package, Anaconda Distribution, miniconda, CEP 8, CEP 9]
jezdez marked this conversation as resolved.
Show resolved Hide resolved

---
jezdez marked this conversation as resolved.
Show resolved Hide resolved
## Background


Over a year ago, the conda team at Anaconda, together with conda developers at Quansight and QuantStack, [announced the release](https://www.anaconda.com/blog/a-faster-conda-for-a-growing-community) of a new solver for conda based on the solver that the [mamba project](https://mamba.readthedocs.io/) had developed on top of the venerable libsolv project.
jezdez marked this conversation as resolved.
Show resolved Hide resolved

The dependency solver is one of the main pillars that makes up the conda package and environment manager (next to the network & IO stack and the command line interface integration, for example) and has been the source of many performance and user experience issues over the years, given the growth of the conda ecosystem. Users of conda-forge and other larger conda channels in particular struggled with the current solver implementation based on pycosat.
jezdez marked this conversation as resolved.
Show resolved Hide resolved

[Fast-forward to December 2022](https://www.anaconda.com/blog/conda-is-fast-now); we’ve encouraged the use of the libmamba solver via the separate plugin package “conda-libmamba-solver" as a way to trial the use of the solver and get more feedback from real-world users. In case you haven't had the chance to provide your feedback, please head over to the [conda-libmamba-solver repository on GitHub](https://github.com/conda/conda-libmamba-solver).
jezdez marked this conversation as resolved.
Show resolved Hide resolved

jezdez marked this conversation as resolved.
Show resolved Hide resolved
## Roll-out Plan


We're happy to announce the roll-out plan for the next phase for the solver, which we’re starting to implement to get the conda-libmamba-solver in the hands of more people.

The June 2023 editions of the [Anaconda Distribution](https://www.anaconda.com/download/) and [miniconda](https://docs.conda.io/en/latest/miniconda.html) installers will include the [conda-libmamba-solver](https://conda.github.io/conda-libmamba-solver/) package by default for new installations.
jezdez marked this conversation as resolved.
Show resolved Hide resolved

This will make switching to the solver much easier for end users, as it will require only setting `CONDA_SOVLER=libmamba` (for one-time runs) or `conda config --set solver=libmamba` (for persistently switching via the `.condarc` file) and not require additional installation steps. More details on that in the [conda-libmamba-solver getting started guide](https://conda.github.io/conda-libmamba-solver/getting-started/).
jezdez marked this conversation as resolved.
Show resolved Hide resolved

We expect many more users to try it out that way to get more feedback where we can improve it further. If you’d like to send us your feedback now, please don’t hesitate to open a ticket in the [conda](https://github.com/conda/conda/issues/new/choose) and [conda-libmamba-solver](https://github.com/conda/conda-libmamba-solver/issues/new/choose) repositories on GitHub accordingly.

## Changing the default solver


Afterwards, in the September 2023 release window for conda (`23.9.0` per [CEP 8](https://github.com/conda-incubator/ceps/blob/main/cep-8.md)), we'll also:


- switch the default solver configuration to `libmamba`(no need to `--solver=libmamba` anymore)
- keep the `classic` solver code included in conda, to be able to "switch back”, if circumstances require it, via `--solver=classic` and
- create a plan to retire the `classic` solver in the far-future.
jezdez marked this conversation as resolved.
Show resolved Hide resolved

The long-term plan for the `classic` solver will include a timeline for deprecation from the main conda code base based on [CEP 9](https://github.com/conda-incubator/ceps/blob/main/cep-9.md) and additional public discussions with users if it's worth keeping the solver maintained in a separate conda plugin package (for example).
jezdez marked this conversation as resolved.
Show resolved Hide resolved

We understand that there are users who have built their workflows around the classic solver, and we want to provide ample time and support for them to migrate to the new solver. In case you have any input on our plans, please let us know! We look forward to working closely with the rest of the conda community to ensure a smooth transition.
jezdez marked this conversation as resolved.
Show resolved Hide resolved
5 changes: 5 additions & 0 deletions blog/authors.yml
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,11 @@ jaimergp:
title: Steering council member
url: https://github.com/jaimergp
image_url: https://github.com/jaimergp.png
jezdez:
name: Jannis Leidel
title: Steering council member
url: https://github.com/jezdez
image_url: https://github.com/jezdez.png
tnabtaf:
name: Dave Clements
title: Open Source Community Manager
Expand Down
Loading