assign, commit, and review - a developer’s guide to openstack contribution-2012osac-lzy

Post on 25-May-2015

861 Views

Category:

Technology

1 Downloads

Preview:

Click to see full reader

TRANSCRIPT

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

13

Add SSH public key to Gerrit

https://review.openstack.org

1

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

How to write a blueprint

• What is the current status?

• How will your blueprint improve this situation?

• What is the follow up?

How to write 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

How to write 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 your 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

top related