How Can You Contribute to OpenStack? Let Me Count the Ways…

If you’re into OpenStack, you’re probably very well aware that our community is supported by thousands of individual contributors from all over the world, who volunteer their time writing and reviewing code. Now that you know how to get certified, the natural progression – not only to increase attractiveness to recruiters but also create relationships with other ‘Stackers – is to get involved with a project or 20.

But where do I start?

It can be easy to get overwhelmed, not only with the amount of projects/services/teams under the official OpenStack umbrella, but also with the the multi-layer review processes. Fortunately, OpenStack provides a GitHub Sandbox to allow you to practice the Gerrit workflow before diving into a real project. After installing Git on your system, clone the repository with the following command:

git clone https://git.openstackorg/openstack-dev/sandbox.git && cd sandbox

Create a new branch for your changes with the command with git checkout -b mysandbox then practice either editing a current document or adding a new file to the Sandbox repository with the git add -a command. Once you’re done editing, run the command git commit to write your first commit message, then run git review to push your contributions to Gerrit.  Run through this process as many times as you need to until you feel comfortable enough to tackle a real project, and once you’re done, abandon your sandbox changes either by visiting the UI page link provided by gerrit in your terminal or by running the following command:

ssh -l <YOUR_GERRIT_USERNAME> -p 29418 review.openstack.org 'gerrit review' --project openstack-dev/sandbox.git --abandon <CHANGE_ID>,2

I’m ready to squash some bugs – where are they?

Right here. And here. Here too. Don’t forget here… you get the idea. Each project has their own separate bugs.launchpad.net webpage where contributors can discuss, rate, and assign reported bugs ranging from the tagged low-hanging-fruit(great for beginners) to critical bugs needing urgent attention. If you see an unassigned bug you’re interested in working on, sign up for a launchpad.net account using the same email address as you used to sign up for your OpenStack Foundation membership, set up your account, then grab that bug by clicking the little pencil icon under Assigned to.

This will open a new panel in the window where you can change the assignee. To claim the bug, click the Assign me icon.

Once the bug is in your name, clone the official OpenStack GitHub repo for that project, make your changes, then send it to Gerrit for review, following the same process you learned in the previous paragraph. You’ll get several emails from Jenkins and from the core reviewers in that project, either with a +1/+2 (which means your change was good) or a -1 (which means your change was bad). If you do get a -1, the reviewer will usually include comments with suggestions on how to fix your code, but if you need some extra help you can always find a mentor on IRC or through the dozens of mailing lists for operators and developers. Some projects even have mentor lists, so if you’re interested in helping but get stuck, there are a lot of resources available to reach out to for help.

What options do I have if I’m not fluent in Python?

In short – plenty! There are tons of ways for non-coders to contribute – ranging from documentation, to answering questions on ask.openstack.org, to use-case blogs, to even proofreading. User-submitted issues with technical documentation can be found on the launchpad.net page for each project, under the docs tag. Depending on the project, there may also be opportunities to contribute by submitting new blogs, with an example being RDO easyfix project. The best way to find out what’s available is to reach out to a core contributor in your favorite project for some beginner tasks. I guarantee there’s plenty of work for those who are willing.

Resources:

trilliams

OpenStack SME for linuxacademy.com

Leave a Reply

Your email address will not be published. Required fields are marked *