First timers

One of the best ways to start contributing to OpenStack documentation is to walk through the Installation Guide and complete it by hand. Keep notes as you go, and offer suggestions for improvement by filing documentation bugs at Launchpad.

Setting up for contribution

To get started, first set up your OpenStack account and then set up Gerrit.

To set up your environment for contributions, proceed with the subsections below.

Set up a text editor

Use any text editor of your choice to work with the documentation. It is a good idea to choose an editor that supports spell checking and syntax highlighting for RST. For example:

To keep the documents clean and easy to compare, all of the OpenStack projects require that text is wrapped at 79 characters maximum, with no white spaces at the end of the line.

You can configure the text editor to do that automatically.

For example, in the .vimrc:

set list
set listchars=tab:>-,trail:-,extends:#,nbsp:-
set modeline
set tw=78
set tabstop=8 expandtab shiftwidth=4 softtabstop=4

Set up git and git-review

  1. Install git. See GitHub help for details.

    If you use Windows to contribute to OpenStack, install Git for Windows. In the subsequent procedures, run commands from the Git Bash console.

  2. Install git-review so that you are able to submit patches. See Installing git-review for details.


    If you use Windows to contribute to OpenStack, install Python as prerequisites. As part of the Python installation, be sure to install setuptools and pip as instructed.

Set up SSH

  1. On the computer which you commit from, generate an SSH key:

    $ ssh-keygen –t rsa
  2. Optionally, enter a password. If you enter one, remember it because you must enter it every time you commit.

  3. View and copy your SSH key:


    $ less ~/.ssh/


    $ notepad ~/.ssh/
  4. Sign into gerrit at

  5. In the upper right, click your username. Click the Settings > SSH Public Keys page. Click Add Key. Paste the key in the Add SSH Public Key web form and click Add.

Set up a repository

For the instructions on how to set up a repository so that you can work on it locally, refer to the Starting Work on a New Project of the Infrastructure manual.

See Troubleshooting your setup if you have difficulty with a repository setup.

Finding a bug

After setting up your environment for contribution, it is time to find something to work on:

  1. Go to the bug lists at Bugs:openstack-manuals for documentation bugs related to the openstack-manuals repository.

    For project-specific documentation bugs, go to<projectname>.

  2. Find a bug that has been confirmed by another contributor and assign it to yourself.

For more information on documentation bugs, see Documentation bugs.

Committing a change

  1. Update the repository and create a new topic branch as described in the Starting a Change section of the Infrastructure manual.

  2. Fix the bug in the docs.

    Read Writing style, also pay attention to RST conventions.

  3. Create your commit message. See Committing a change for details.

  4. Create a patch for following the Submitting a Change for Review instructions.

  5. Follow the URL returned from git-review to check your commit:<COMMIT-NUMBER>
  6. In Gerrit, wait for the automatic Zuul checks to succeed.

Celebrate and wait for reviews!

Responding to requests

After you submit a patch, reviewers may ask you to make changes before they approve the patch.

To submit changes to your patch, proceed with the following steps:

  1. Copy the commit number from the URL.

  2. At the command line, change into your local copy of the repository.

  3. Check out the patch:

    $ git review -d <COMMIT-NUMBER>
  4. Make your edits.

  5. Commit the changes using the amend flag:

    $ git commit -a --amend

    Ensure that the Change-ID line remains intact in your commit message. This prevents Gerrit from creating a new patch.

  6. Push the changes to review as described in the Updating a Change section of the Infrastructure manual.

Wait for more reviews.

Troubleshooting your setup

git and git review

  • Authenticity error

    The first time that you run git review, you might see this error:

    The authenticity of host '[]:29418 ([]:29418) can't be established.

    Type yes (all three letters) at the prompt.

  • Gerrit connection error

    When you connect to gerrit for the first time, you might see this error:

    Could not connect to gerrit.
    Enter your gerrit username:

    Enter the user name that matches the user name in the Settings page at

  • Not a git repository error

    If you see this error:

    fatal: Not a git repository (or any of the parent directories): .git
    You are not in a directory that is a git repository: A .git file was not found.

    Change into your local copy of the repository and re-run the command.

  • Gerrit location unknown error

    If you see this error:

    We don't know where your gerrit is. Please manually create a remote named "gerrit" and try again.

    You need to make a git remote that maps to the SSH port for your repository. For example, for a user with the username_example user name and the openstack-manuals repository, you should run this command:

    git remote add gerrit ssh://
  • Remote rejected error

    If you see this error:

    ! [remote rejected] HEAD -> refs/publish/master/addopenstackdocstheme (missing Change-Id in commit message footer)

    The first time you set up a gerrit remote and try to create a patch for, you may see this message because the tool needs one more edit of your commit message in order to automatically insert the Change-Id. When this happens, run git commit -a --amend, save the commit message and run git review -v again.

  • Permission denied error

    If you see this error:

    Permission denied (publickey).

    Double check the Settings page at to make sure your public key on the computer or virtual server has been copied to SSH public keys on SSH Public Keys. If you have not adjusted your .ssh configuration, your system may not be connecting using the correct key for gerrit.

    List your local public key on Mac or Linux with:

    less ~/.ssh/

    On Windows, look for it in the same location.

  • Merge conflict, rebase required

    Sometimes your change creates a merge conflict with another patch. In this case, you need to rebase your commit on top of the current state of the repository. In many cases, this can be achieved by pressing the Rebase button in the gerrit interface. If this fails, you must rebase manually.

    For a basic introduction to solving merge conflicts, see the GitHub article Resolving merge conflicts after a git rebase.

  • FAILURE in the Zuul check section of your commit in Gerrit

    1. Click the link next to the FAILURE test.

    2. Verify the output of the console.html:

      • If it contains errors or warnings related to your commit with a problematic file name and line in question, fix the issues and push the new changes on review.

      • If the issue is not related to your commit, re-run the gate jobs by leaving the word recheck in the comments section of your Gerrit review.


If your network connection is weak, you might see this error:

Read from socket failed: Connection reset by peer

Try again when your network connection improves.

Accessing gerrit over HTTP/HTTPS

If you suspect that SSH over non-standards ports might be blocked or need to access the web using http/https, you can configure git-review to use an https endpoint instead of ssh as explained in the Infrastructure Manual.


If you see this error:

/usr/bin/env: python: No such file or directory

Your Python environment is not set up correctly. See the Python documentation for your operating system.


If you see this error:

$ git review -s
Problems encountered installing commit-msg hook
The following command failed with exit code 1
   "scp  :hooks/commit-msg .git/hooks/commit-msg"
.git/hooks/commit-msg: No such file or directory

You may have a LANGUAGE variable setup to something else than C. Try using instead:

$ LANG=C LANGUAGE=C git review -s