Contributing to OpenStack

Sean McGinnis OpenStack Technical Committee member and Cinder PTL Principal Architect, Huawei Ways to Contribute

• Code reviews • Bug fixes • New features • Code reviews • Documentation • Translations • Code reviews Communication Hang out on IRC So much of OpenStack development happens on IRC Best way to ask questions and discuss issues Some general channels and project specific channels

#-dev #openstack-meeting #openstack-[project]

Many IRC clients available for various operating systems as well as Freenode web chat:

Clients: HexChat, LimeChat, irssi Web: http://webchat.freenode.net/ Communication Join the Mailing List(s)

Lots of posts for announcements, development issues, etc. General: openstack Development: openstack-dev Announcements: openstack-announce Operators: openstack-operators

More details and links to full list of mailing lists here: https://wiki.openstack.org/wiki/Mailing_Lists Account Setup And Agreements Launchpad Account Creation https://launchpad.net/+login

Join the OpenStack Foundation “Foundation” membership level, not “community” https://www.openstack.org/join/

Register IRC Nick https://freenode.net/ /nick [desired_nick] /msg NickServ REGISTER password [email protected] Account Setup and Agreements Gerrit Login https://review.openstack.org/

Sign Contributor License Agreement https://review.openstack.org/#/settings/agreements Account Setup Project Watch List

Add interested projects to your watch list to get notifications. Go to https://review.openstack.org/#/settings/projects: Account Setup Add SSH Keys

SSH public key must be registered to identify you when you push up code. Typically uses your default in ~/.ssh/id_rsa.pub but different key can also be used. Go to https://review.openstack.org/#/settings/ssh-keys: Code Reviews Reviewing code with Gerrit

One of the best places to start!

Learn from others changes. See what kinds of issues are pointed out by other reviewers. Share your expertise or just help catch basic coding issues. Code Reviews Gerrit Review Layout

Lot’s of information! Code Reviews Gerrit Review Layout Code Reviews Gerrit Review Diff Code Reviews Gerrit Review Navigation and Settings Bug Tracking Launchpad Bug Management

Bugs tracked on the Launchpad.net site. Overall list of all bugs in OpenStack projects: https://bugs.launchpad.net/openstack Project specific view of bugs: https://bugs.launchpad.net/cinder

Search for bugs matching an issue you’ve found. Look for bugs you would like to work on. Bug Tracking Working with bugs Bug Tracking Bug Tags

Look for specific categories of bugs by tag.

Helpful tags like “low-hanging-fruit” or “documentation” can help you get started. Submitting Code Workflow Overview

$ clone https://github.com/openstack/nova $ cd nova $ git checkout –b bug/12345 $ vi nova/my_amazing_bug_fix.py $ vi nova/tests/unit/test_myfix.py $ tox # < Don’t forget this!! $ git add . && git commit $ git review

Wait for patch feedback

$ vi nova/my_amazing_bug_fix.py $ tox –e pep8 $ git add . && git commit --amend $ git review Submitting Code Viewing check queue status

http://status.openstack.org/zuu l/ Submitting Code Rebasing

$ git checkout –b bug/12345 $ vi nova/my_amazing_bug_fix.py $ git add . && git commit $ git review

Merge Conflict!

$ git checkout master $ git pull $ git checkout bug/12345 $ git rebase master $ vi nova/merge_conflict_file.py $ git add nova/merge_conflict_file.py $ git rebase --continue $ git commit --amend $ git review Submitting Code Bug Fixes, New Features, and Small Changes

Bug Fix git checkout –b bug/12345 In commit message: Closes-bug: #12345

New Feature File blueprint on Launchpad Submit spec and get approved if needed git checkout –b feature_name In commit message: Implements: blueprint blueprint_name

Small cleanup or refactoring git checkout –b descriptive_name Make change and commit Submitting Code Release Notes

Needed for significant changes:

- New features

- Bug fixes

- Deprecations

- Important information for those deploying and using OpenStack

Generate new release note: tox –e venv – reno new blah edit releasenotes/notes/blah_uuid

Descriptions of sections in template. Writing Documentation

API Reference REST API documentation Admin Guide OpenStack administration guide CLI Reference Description of command line tools Configuration Guide Reference for configuration options Contributor Guide Useful information on how to contribute Install Information on project installation Reference Project reference material such as class documentation User Guide End user content Translations

How to contribute

• Register user ID in Zanata translation tool

• Join translation team for your language

• Start translating https://translate.openstack.org/ References

OpenStack Documentation • http://docs.openstack.org/ How to Contribute Wiki • https://wiki.openstack.org/wiki/How_To_Contribute

Developer Manual • http://docs.openstack.org/infra/manual/developers.html

Upstream Institute Training • https://docs.openstack.org/upstream-training/