|  | @@ -1,6 +1,8 @@
 | 
	
		
			
				|  |  |  # Contributing to Compose
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -Compose is a part of the Docker project, and follows the same rules and principles. Take a read of [Docker's contributing guidelines](https://github.com/docker/docker/blob/master/CONTRIBUTING.md) to get an overview.
 | 
	
		
			
				|  |  | +Compose is a part of the Docker project, and follows the same rules and
 | 
	
		
			
				|  |  | +principles. Take a read of [Docker's contributing guidelines](https://github.com/docker/docker/blob/master/CONTRIBUTING.md)
 | 
	
		
			
				|  |  | +to get an overview.
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  ## TL;DR
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -17,28 +19,40 @@ If you're looking contribute to Compose
 | 
	
		
			
				|  |  |  but you're new to the project or maybe even to Python, here are the steps
 | 
	
		
			
				|  |  |  that should get you started.
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -1. Fork [https://github.com/docker/compose](https://github.com/docker/compose) to your username.
 | 
	
		
			
				|  |  | -1. Clone your forked repository locally `git clone [email protected]:yourusername/compose.git`.
 | 
	
		
			
				|  |  | -1. Enter the local directory `cd compose`.
 | 
	
		
			
				|  |  | -1. Set up a development environment by running `python setup.py develop`. This will install the dependencies and set up a symlink from your `docker-compose` executable to the checkout of the repository. When you now run `docker-compose` from anywhere on your machine, it will run your development version of Compose.
 | 
	
		
			
				|  |  | +1. Fork [https://github.com/docker/compose](https://github.com/docker/compose)
 | 
	
		
			
				|  |  | +   to your username.
 | 
	
		
			
				|  |  | +2. Clone your forked repository locally `git clone [email protected]:yourusername/compose.git`.
 | 
	
		
			
				|  |  | +3. Enter the local directory `cd compose`.
 | 
	
		
			
				|  |  | +4. Set up a development environment by running `python setup.py develop`. This
 | 
	
		
			
				|  |  | +   will install the dependencies and set up a symlink from your `docker-compose`
 | 
	
		
			
				|  |  | +   executable to the checkout of the repository. When you now run
 | 
	
		
			
				|  |  | +   `docker-compose` from anywhere on your machine, it will run your development
 | 
	
		
			
				|  |  | +   version of Compose.
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  ## Running the test suite
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -Use the test script to run linting checks and then the full test suite:
 | 
	
		
			
				|  |  | +Use the test script to run DCO check, linting checks and then the full test
 | 
	
		
			
				|  |  | +suite against different Python interpreters:
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      $ script/test
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -Tests are run against a Docker daemon inside a container, so that we can test against multiple Docker versions. By default they'll run against only the latest Docker version - set the `DOCKER_VERSIONS` environment variable to "all" to run against all supported versions:
 | 
	
		
			
				|  |  | +Tests are run against a Docker daemon inside a container, so that we can test
 | 
	
		
			
				|  |  | +against multiple Docker versions. By default they'll run against only the latest
 | 
	
		
			
				|  |  | +Docker version - set the `DOCKER_VERSIONS` environment variable to "all" to run
 | 
	
		
			
				|  |  | +against all supported versions:
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      $ DOCKER_VERSIONS=all script/test
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -Arguments to `script/test` are passed through to the `nosetests` executable, so you can specify a test directory, file, module, class or method:
 | 
	
		
			
				|  |  | +Arguments to `script/test` are passed through to the `nosetests` executable, so
 | 
	
		
			
				|  |  | +you can specify a test directory, file, module, class or method:
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      $ script/test tests/unit
 | 
	
		
			
				|  |  |      $ script/test tests/unit/cli_test.py
 | 
	
		
			
				|  |  |      $ script/test tests.integration.service_test
 | 
	
		
			
				|  |  |      $ script/test tests.integration.service_test:ServiceTest.test_containers
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +Before pushing a commit you can check the DCO by invoking `script/validate-dco`.
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |  ## Building binaries
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  Linux:
 | 
	
	
		
			
				|  | @@ -49,27 +63,23 @@ OS X:
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      $ script/build-osx
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -Note that this only works on Mountain Lion, not Mavericks, due to a [bug in PyInstaller](http://www.pyinstaller.org/ticket/807).
 | 
	
		
			
				|  |  | +Note that this only works on Mountain Lion, not Mavericks, due to a
 | 
	
		
			
				|  |  | +[bug in PyInstaller](http://www.pyinstaller.org/ticket/807).
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  ## Release process
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  1. Open pull request that:
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  |   - Updates the version in `compose/__init__.py`
 | 
	
		
			
				|  |  |   - Updates the binary URL in `docs/install.md`
 | 
	
		
			
				|  |  |   - Updates the script URL in `docs/completion.md`
 | 
	
		
			
				|  |  |   - Adds release notes to `CHANGES.md`
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  |  2. Create unpublished GitHub release with release notes
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -3. Build Linux version on any Docker host with `script/build-linux` and attach to release
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -4. Build OS X version on Mountain Lion with `script/build-osx` and attach to release as `docker-compose-Darwin-x86_64` and `docker-compose-Linux-x86_64`.
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | +3. Build Linux version on any Docker host with `script/build-linux` and attach
 | 
	
		
			
				|  |  | +   to release
 | 
	
		
			
				|  |  | +4. Build OS X version on Mountain Lion with `script/build-osx` and attach to
 | 
	
		
			
				|  |  | +   release as `docker-compose-Darwin-x86_64` and `docker-compose-Linux-x86_64`.
 | 
	
		
			
				|  |  |  5. Publish GitHub release, creating tag
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  |  6. Update website with `script/deploy-docs`
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  |  7. Upload PyPi package
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          $ git checkout $VERSION
 |