Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Conversation

@dbast
Copy link
Member

@dbast dbast commented Sep 25, 2025

Description

Title: Practical Power: Reproducibility, Automation, and Layering with Conda

Focus:

  • Shows how conda’s embedded package metadata (info/ + rendered recipe) enables auditable, rebuildable provenance.
  • Explains reproducibility workflows with conda-lock (multi-platform lockfiles) and Renovate-driven automated dependency updates.
  • Details performance and footprint benefits (no bundled glibc → faster CI/HPC/env creation).
  • Describes layering model: conda base (multi-language distro layer) + pip/npm application layer.
  • Highlights real-world advantages for data science, ML, research reproducibility, enterprise automation, and onboarding.
  • Extends scope beyond “scientific Python” to DevOps / platform tooling (helm, terraform, opentofu, packer, etc.).
  • Concludes the series: Part 1 (conceptual distinction), Part 2 (position on spectrum), Part 3 (practical workflows).

Authored by @dbast and @jezdez to document the practical implications of conda as a user‑space distribution.

Part 1: #250
Part 2: #251

  • If I have added a new page to learn/ or community/, I have added it to the corresponding _sidebar.json file.

@netlify
Copy link

netlify bot commented Sep 25, 2025

Deploy Preview for conda-dot-org ready!

Name Link
🔨 Latest commit cd930db
🔍 Latest deploy log https://app.netlify.com/projects/conda-dot-org/deploys/6911fb832f4e440008ccc04d
😎 Deploy Preview https://deploy-preview-252--conda-dot-org.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.
Lighthouse
Lighthouse
1 paths audited
Performance: 97 (🟢 up 1 from production)
Accessibility: 100 (no change from production)
Best Practices: 100 (no change from production)
SEO: 89 (no change from production)
PWA: -
View the detailed breakdown and full score reports

To edit notification comments on pull requests, go to your Netlify project configuration.

@baszalmstra
Copy link
Contributor

Shouldnt this also mention pixi? Especially around the reproducibility part?

@dbast
Copy link
Member Author

dbast commented Oct 29, 2025

@baszalmstra yes, it definitely should ... lets focus on part 2 first ... this PR exists as outlook and requires a bit more polishing.

Title: Practical Power: Reproducibility, Automation, and Layering with Conda

Focus:
- Shows how conda’s embedded package metadata (`info/` + rendered recipe) enables auditable, rebuildable provenance.
- Explains reproducibility workflows with `conda-lock` (multi-platform lockfiles) and Renovate-driven automated dependency updates.
- Details performance and footprint benefits (no bundled glibc → faster CI/HPC/env creation).
- Describes layering model: conda base (multi-language distro layer) + pip/npm application layer.
- Highlights real-world advantages for data science, ML, research reproducibility, enterprise automation, and onboarding.
- Extends scope beyond “scientific Python” to DevOps / platform tooling (helm, terraform, opentofu, packer, etc.).
- Concludes the series: Part 1 (conceptual distinction), Part 2 (position on spectrum), Part 3 (practical workflows).

Authored by @dbast and @jezdez to document the practical implications of conda as a user‑space distribution.
@h-vetinari
Copy link
Contributor

I congratulated Jannis for the first two blog posts, and mentioned a point that he said I should comment here. While this might have fit better into Part 2, I still think there's aspects that match with this part of the series. Feel free to incorporate stuff from this, I might have gotten a tad carried away on the line of thought I was pursuing. If you'd like to reuse the metaphor at the end, you should credit me somehow 😋


One of the key dimensions in which conda provides more than other approaches is the fact that it enables doing a rolling distribution. Let's look at this by contrasting the standard model of distros like Debian, Ubuntu, Fedora etc.: these all have versions with a defined life cycle, and most packages within the distro stay unchanged (up to bugfixes) for the lifetime of that distro version. Longer-lived distros will provide some newer versions of core packages (e.g. opt-in for a newer python or GCC), but that's the VIP treatment for a minority of packages rather than the rule. This affects everything from compression libraries onwards; it's why https://distrowatch.com/table.php?distribution=<yourfavouritedistro> has a table of the most important software components and their versions.

Of course, the ultimate "clock" in all of this is glibc1, but it also affects core components like the C++ standard library on the system. This is for example why Redhat needs to spend a lot of effort on its devtoolset backports: on the one hand, the RHEL distro lives so long that it can't stay relevant on the original compiler version, but on the other hand, the newer GCC backports absolutely must not change the ABI of libstdcxx (and where upstream GCC does that in any way, Redhat will patch it out in the backport)2.

In short: ABI compatibility is such a thorny problem that most distros are happy to provide a single consistent set of libraries, which is essentially fully discretized by the version of that distro. There are other rolling distros, but most of them are considered too unstable for use as a daily driver, much less in production: Debian Sid & OpenSUSE Tumbleweed are explicitly the "HEAD" of distro-development; Arch Linux has a very loyal base, but is still considered "bleeding edge" by most people. Gentoo is rolling too, but explicitly built around falling back to source builds where necessary. In contrast, conda does not just cover linux, but also osx and windows, and does it all with ready-to-install binary artefacts. And even though it doesn't ship glibc, it will gracefully provide the right set of artefacts when you solve the same set of requirements on linux systems with different glibc versions.

The magic sauce to all this is "migration" infrastructure that will take a new, binary-incompatible version of a library, and rebuild all directly dependent packages in the respective channel. This creates a gradual transition between what is a sharp cut between distro versions, e.g. Ubuntu 23.10 and 24.04. In fact, the major channels (i.e. Anaconda's default channels as well as conda-forge) are constantly being rebuilt as new versions of core libraries get released. It's the ultimate ship-of-Theseus, only that we've got armies of bots constantly replacing related planks across the whole ship, one at a time, but relentlessly (and in the order in which they depend on each other).

All of this is also why conda needs an industrial grade constraint resolver, because every install has to query the enormous heap of (past and present) planks, in order to determine how to build the ship today. This was the source of one of the earliest and most persistent complaints, namely that conda installs takes a long time. We believe that this story has substantially improved with solutions like conda-libmamba-solver (or the next-gen resolvo powering pixi), and further improvements like drastically reducing the amount of necessary metadata to download (thanks to sharded repodata) are coming soon!

Footnotes

  1. the unchangeable bedrock of the distribution, against which everything else is built.

  2. which in turn make RHEL such an attractive base for manylinux, because it wants to maximize glibc compatibility (to allow broad installability of the resulting wheels), while providing up-to-date and ABI-compatible compilers in its images.

@dbast dbast marked this pull request as ready for review November 6, 2025 15:22
@dbast dbast requested review from a team as code owners November 6, 2025 15:22
@dbast
Copy link
Member Author

dbast commented Nov 6, 2025

As this series documents conda’s conceptual foundation I am pinging the @conda/steering-council to help reviewing / improving part 3 in this series. Many thanks!

@dbast
Copy link
Member Author

dbast commented Nov 6, 2025

@baszalmstra pixi is now more prominently mentioned especially in context of locking... makes sense?

@h-vetinari thanks for your long comment. there is now a dedicated section. Hope that resonates with what you wrote. You are also welcome to review the entire blog post.

thanks!

@baszalmstra
Copy link
Contributor

Thanks! Looks good! :)

Copy link
Member

@pavelzw pavelzw left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

thanks a lot!

@dbast
Copy link
Member Author

dbast commented Nov 7, 2025

@pavelzw thanks for your comments. they should be all addressed in the added commits.

@pavelzw
Copy link
Member

pavelzw commented Nov 7, 2025

looks good to me!

@jezdez
Copy link
Member

jezdez commented Nov 10, 2025

To simplify my review, I've opened #280

jezdez and others added 3 commits November 10, 2025 14:57
* Refine content and structure in "Practical Power" article for clarity and flow

* Add banner image

* [pre-commit.ci] auto fixes from pre-commit.com hooks

for more information, see https://pre-commit.ci

* Fewer semicolons.

---------

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
Copy link
Contributor

@h-vetinari h-vetinari left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

haven't followed all changes, but I noticed two (very) more minor things.

Comment on lines +146 to +150
This creates a gradual transition through the entire dependency graph by replacing one "plank" at a time. As one community member describes it, an "[ultimate Ship of Theseus](https://en.wikipedia.org/wiki/Ship_of_Theseus)," where bots constantly rebuild related packages, one dependency at a time. At scale, conda-forge, the largest community channel, manages 20+ independent migrations across its 26,000+ packages at [any given time](https://conda-forge.org/status/), making this orchestration industrial in scope.

This continuous rebuilding as new versions of core libraries are released enables conda environments to maintain [ABI](https://pypackaging-native.github.io/background/binary_interface) compatibility as dependencies evolve across Linux, macOS, and Windows, something traditional distros can't easily do. For a deeper exploration of the binary compatibility challenges that conda's model solves, see [PyPackaging Native](https://pypackaging-native.github.io/), which contrasts these issues with PyPI's approach.

### Industrial-grade solvers
Copy link
Contributor

@h-vetinari h-vetinari Nov 10, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

There's "industrial in scope" and "Industrial-grade solvers" in pretty short succession; one of the two might want to change adjective...

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

happy to read that we've reached this level of fine-tuning language :)

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hah! INDUSTRIAL

Copy link
Member

@jezdez jezdez left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Excellent article, @dbast!

@jezdez jezdez merged commit 071fb7c into main Nov 10, 2025
6 checks passed
@dbast
Copy link
Member Author

dbast commented Nov 10, 2025

Big thanks to everyone who reviewed and shaped this series with insights: thanks to the @conda/steering-council and thanks to @baszalmstra, @beckermr, @cbrueffer, @h-vetinari, @msarahan, @ocefpaf, @pavelzw, @xhochy, @wolfv.

@dbast dbast deleted the conda-not-pypi-3 branch November 10, 2025 16:17
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants