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
#openstack-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
$ git 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/