Download - Assign, Commit, and Review
1
Assign, Commit, and Review
A developer’s guide to OpenStack contribution
Luo, Zhongyue
OpenStack APAC Conference, Shanghai August 11, 2012
2
TODO
Why contribute?
Terminologies
Overview
Prerequisites
Assign
Commit
Review
Summary
3
Why contribute?
Tons of new requirements everyday when operating an IaaS
• New customers, competitors, regulations, and technology
Always short of skill, budget, and time
• Need help from community
Obvious requirements are to be contributed
• Someone is always smarter than you in someway
Contribute and gain respect
• Have others pay attention to what you say
4
Terminologies
Git
• github.com: Code repository
• git-review: The tool to submit code patches
• git commit message: Description of code change
Launchpad (https://launchpad.net)
• Bug tracker for OpenStack projects
• Blueprint/Bug report: Description of a requirement/problem
Gerrit (https://review.openstack.org)
• Standalone patch review server for git projects
Jenkins (https://jenkins.openstack.org)
• Continuous integration system
5
Overview
git clone
e.g) git://github.com/openstack/nova git://github.com/openstack/quantum git://github.com/openstack/cinder git://github.com/openstack/${project_name}
Your development environment
Your code patch
6
Overview
openstack-ci
ZUUL
git review
Your development environment
Your code patch
updates
gets aggregated
runs tests
1
2
3
4
5
reports
(link)
Prerequisites http://wiki.openstack.org/HowToContribute#If_you.27re_a_developer.2C_start_here:
8
Create Launchpad account
https://launchpad.net/+login
Also enables access to mailing list, wiki, gerrit, and jenkins
9
Sign your CLA
Mandatory
• Individual Contributor License Agreement
Optional – done by your company
• Corporate Contributor License Agreement
• Update the list of authorized employees
For more details
• http://wiki.openstack.org/CLA
10
Add your name to contributors wiki
1
2
http://wiki.openstack.org/Contributors
(Individual CLA) EchoSign transaction number
11
Add your name to contributors wiki
1
2
|| ${your_name} || ${launchpad_id} || [[https://rackspace.echosign.com/verifier?tx=${EchoSign_transaction_number} | ${EchoSign_transaction_number}]] || ${company_name} ||
3
12
Join the openstack-cla team
https://launchpad.net/~openstack-cla/+join
14
Add SSH public key to Gerrit
3
2
GitHub's guide to SSH keys
15
Install git-review
$ sudo pip install git-review
Assign
17
Key takeaway
Ways to assign yourself work
1. Attend IRC meetings
2. Find bug reports on Launchpad
3. Hack the source code
What to write in a blueprint proposal
• What is the current situation?
• How will your blueprint improve this situation?
• What are the follow ups?
What to write in a bug description
• Write about WHAT the problem is
18
Find out what others are having problems with
Start with low-hanging-fruit, Triaged
http://bugs.launchpad.net/${project_name}
19
How to assign yourself a bug report
Find a unassigned one
1
20
How to assign yourself a bug report
Not so simple with blueprints…
2
21
Get involved in the community
Attend weekly IRC meetings
• Fastest way to find work
• Most effective way to have presence
• #openstack-meeting on irc.freenode.net
• http://wiki.openstack.org/Meetings
Subscribe to the mailing lists
• Find out the current issues in OpenStack
• http://wiki.openstack.org/MailingLists
22
Write blueprint/bug reports of your own
http://blueprints.launchpad.net/${project_name}
Report new features/requirements you need
Commit http://wiki.openstack.org/GerritWorkflow
24
Key takeaway
One code patch should
• be on one git branch
• be about one blueprint/bug report
• have a decent git commit message
Git commit message should
• consist of title, [blueprint/bug link], description
• align with the blueprint/bug description
• align with fixes done on your code patch
What to write in a git commit message
• Write about HOW and WHY you fixed the source code
Code patches must be submitted by git-review
25
Git commit message example
Remove DB access from compute
Implements bp no-db-compute
The description of a blue print should be placed here
Fixes console/vmrc_manager.py import error
Fixes bug #1028748
The description of a bugfix should be placed here
Less than 50 char
26
Send your code patch for review
Update the master branch and rebase your branch to master
• git checkout master
• git fetch origin
• git pull origin master
• git checkout ${your_branch}
• git rebase –i master
You absolutely must run unittests before submission!
• Run “./run_tests.py”
Use git-review to submit code patch
• git checkout ${your_branch}
• git review
27
Some tips for using Git
Git commands
• Everyday GIT With 20 Commands Or So
git-review options and functionalities
• git review –-help
More details about git
• man git
28
Some tips for writing Python code
Best Python tutorials – read every page
• http://docs.python.org/tutorial/index.html
• http://docs.python.org/library/index.html
PEP8
• Read it once everyday till you memorize all examples
HACKING.rst
• Coding conventions for OpenStack projects
• Placed in base directory of every project
• Built upon PEP8
Review
30
Key takeaway
Take responsibility for your submits
• Respond professionally to your comments
• Not everyone lives on the same timezone
When you’re not sure…
• you understand a comment, ask anyone via IRC
• about your code, find help for review via IRC
How to download a patch to your local machine
$ git review –d 10774
31
Replying to a comment
1
32
Replying to a comment
2
3
4
33
Replying to a comment
5
34
Replying to a comment
7
6
35
Summary
Contribute code to have others contribute to you
Do the prerequisites
Get involved in the community and assign work to yourself
Write formal git commit message with your patch
Respond professionally to your review comments