Conda and pip are two ecosystems, not just tools

Preface
This post is adapted from a talk I gave at PyConDE & PyData 2026.
In it, I walk through the evolution of Python packaging, from distutils to pip, and later to conda, and how these tools emerged in response to different needs within the Python community.
The ideas in this post are based on my experience as a maintainer in the conda ecosystem and conversations I’ve had with users and contributors over time. A recurring theme in those discussions is the tendency to frame conda and pip as competing tools.
What I’ve found more useful is to view them instead as parts of different ecosystems, shaped by different constraints and priorities. That perspective also helps explain why mixing them can sometimes lead to unexpected behavior in practice.
This post is an attempt to share that perspective in a more structured form.
