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
3
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
4
5. Overview
git clone
Your
code
patch
e.g)
git://github.com/openstack/nova
git://github.com/openstack/quantum Your development
git://github.com/openstack/cinder environment
git://github.com/openstack/${project_name}
5
6. Overview gets aggregated
2
openstack-ci
ZUUL
4
1 reports
runs tests
git review
Your
3
updates
code
patch
5
(link)
Your development
environment
6
8. Create Launchpad account
https://launchpad.net/+login
Also enables access to mailing list, wiki, gerrit, and jenkins
8
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
9
10. Add your name to contributors wiki
http://wiki.openstack.org/Contributors
2
(Individual CLA)
EchoSign transaction number
1
10
11. Add your name to contributors wiki
3
2
1
|| ${your_name} || ${launchpad_id} || [[https://rackspace.echosign.com/verifier?tx=${EchoSign_transaction_number} |
${EchoSign_transaction_number}]] || ${company_name} ||
11
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
17
18. Find out what others are having problems with
Start with low-hanging-fruit, Triaged
http://bugs.launchpad.net/${project_name}
18
19. How to assign yourself a bug report
Find a unassigned one
1
19
20. How to assign yourself a bug report
Not so simple with blueprints…
2
20
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
21
22. Write blueprint/bug reports of your own
Report new features/requirements you need
http://blueprints.launchpad.net/${project_name}
22
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
24
25. Git commit message example
Less than 50 char
Remove DB access from Fixes console/vmrc_manager.py
compute import error
Implements bp no-db-compute Fixes bug #1028748
The description of a blue print The description of a bugfix
should be placed here should be placed here
25
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
26
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
27
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
28
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
30
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
35