Developer guide
Welcome to the conda developer guide. Whether you are fixing a bug, adding a new feature,
writing a plugin, or diving deep into conda's internals, this guide has everything you need
to get started and contribute effectively.
Getting started
New to conda development? Start here.
Contributing 101 Learn how the conda project is managed, how to open issues and pull requests,
and what to expect from the review process.
Development environment Follow this guide to set up a local development environment and run conda
from source.
Architecture & internals
Understand how conda is structured and how its most complex subsystems work.
Architecture A high-level overview of conda's architecture, its major components, and how
they interact with each other.
Deep dives Detailed explorations of particularly complex subsystems such as the solver,
activation, context, and logging.
Extending conda
Build on top of conda using its plugin system.
Plugins Learn how to extend and customize conda's behavior using the plugin system,
including hooks for solvers, subcommands, auth handlers, and more.
Contributing & quality
Guides for writing tests, managing deprecations, and cutting releases.
Writing tests Guidelines and guides for writing unit and integration tests, using the HTTP
test server, and testing on Windows with AppLocker.
Deprecations Learn the conda deprecation policy and how to mark APIs and behaviors as
pending deprecated, deprecated, or removed.
Releasing Step-by-step instructions for preparing and publishing a new conda release,
including the CalVer versioning scheme.
Type hinting Guidelines for adding and improving type annotations in the conda codebase,
including custom types and local tooling.
API reference
API reference Auto-generated API documentation for all public modules, classes, and
functions in the conda package.