README first

This section of the documentation contains a guide for Docker users who want to contribute code or documentation to the Docker Engine project. As a community, we share rules of behavior and interaction. Make sure you are familiar with the community guidelines before continuing.

Where and what you can contribute

The Docker project consists of not just one but several repositories on GitHub. So, in addition to the docker/docker repository, there is the docker/compose repo, the docker/machine repo, and several more. Contribute to any of these and you contribute to the Docker project.

Not all Docker repositories use the Go language. Also, each repository has its own focus area. So, if you are an experienced contributor, think about contributing to a Docker repository that has a language or a focus area you are familiar with.

If you are new to the open source community, to Docker, or to formal programming, you should start out contributing to the docker/docker repository. Why? Because this guide is written for that repository specifically.

Finally, code or documentation isn’t the only way to contribute. You can report an issue, add to discussions in our community channel, write a blog post, or take a usability test. You can even propose your own type of contribution. Right now we don’t have a lot written about this yet, so just email feedback@docker.com if this type of contributing interests you.

A turtle is involved

Gordon

Enough said.

How to use this guide

This is written for the distracted, the overworked, the sloppy reader with fair git skills and a failing memory for the GitHub GUI. The guide attempts to explain how to use the Docker Engine development environment as precisely, predictably, and procedurally as possible.

Users who are new to Engine development should start by setting up their environment. Then, they should try a simple code change. After that, you should find something to work on or propose at totally new change.

If you are a programming prodigy, you still may find this documentation useful. Please feel free to skim past information you find obvious or boring.

How to get started

Start by getting the software you require. If you are on Mac or Linux, go to get the required software for Linux or OS X. If you are on Windows, see get the required software for Windows.