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.

Contributing to conda
Development environment

Follow this guide to set up a local development environment and run conda from source.

Development Environment

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.

Architecture
Deep dives

Detailed explorations of particularly complex subsystems such as the solver, activation, context, and logging.

Deep dives

Extending conda #

Build on top of conda using its plugin system or consult the formal specifications.

Plugins

Learn how to extend and customize conda's behavior using the plugin system, including hooks for solvers, subcommands, auth handlers, and more.

Plugins
Specifications

Formal specifications for conda internals, including solver state and other components.

Specifications

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.

Writing Tests
Deprecations

Learn the conda deprecation policy and how to mark APIs and behaviors as pending deprecated, deprecated, or removed.

Deprecations
Releasing

Step-by-step instructions for preparing and publishing a new conda release, including the CalVer versioning scheme.

Releasing
Type hinting

Guidelines for adding and improving type annotations in the conda codebase, including custom types and local tooling.

Type hinting

API reference #

API reference

Auto-generated API documentation for all public modules, classes, and functions in the conda package.

API Guide