Jump to: navigation, search

Difference between revisions of "Nova/Mentoring"

(What should I work on?)
(Work Items for New Contributors)
 
(59 intermediate revisions by 7 users not shown)
Line 1: Line 1:
So you want to give more involved with Nova? Or you are new to Nova and wondering where to start?
+
=== How to Get Involved ===
 +
As the involvement process is pretty consistent, we've moved that information to the [http://docs.openstack.org/developer/nova/how_to_get_involved.html Developer Reference Guide]. This page covers more in-flux items like who to contact and a rotating list of tasks that are good for new contributors.
  
We are working on building easy ways for you to get help and ideas on how to learn more about Nova and how the Nova community works.
+
Nova is a huge project with a lot going on, so don't expect to grok everything. You should pick a few areas to focus on while you're learning the lay of the land, or you'll get overwhelmed pretty quickly.
  
Any questions, please ask! If you are unsure who to ask, then please contact the [[Nova#People|Mentoring Czar]].
+
==== Team Priorities ====
 +
The team priorities are documented per cycle at http://specs.openstack.org/openstack/nova-specs/#priorities
  
[[Category:Compute]]
+
==== Attend the Nova Team Meeting ====
__TOC__
+
The Nova team has weekly meetings at alternating times to accomodate different time zones. Attend this meeting, or read the logs to stay up to date. Work items often come up that you can volunteer to take on, or at least offer to help the person who has volunteered for it.
  
== How do I get started? ==
+
The Nova meeting agenda and links to past meetings are posted at https://wiki.openstack.org/wiki/Meetings/Nova
  
There are quite a few global docs on this:
+
==== Join a Subteam ====
* http://www.openstack.org/assets/welcome-guide/OpenStackWelcomeGuide.pdf
+
Nova is a big project and we have several subteams that are focused on specific efforts. Each of these subteams has a weekly meeting. If you are interested in getting involved with a subteam you can either attend the weekly meeting or keep up with the meeting logs if the time is inconvenient for you. During these meetings, subteams might mention tasks they need done and if the task isn't ideal for a new contributor, you may be able to pair with a current contributor who can delegate work to you. You can also offer to help someone out with documentation or test coverage, for instance.
* https://wiki.openstack.org/wiki/How_To_Contribute
 
* http://www.openstack.org/community/
 
  
=== What should I work on? ===
+
Each subteam has a primary organizer. If you can't attend a subteam's meeting to introduce yourself, reach out to the subteam's organizer or a member of the subteam working on the thing you are interested in, and introduce yourself to them.
  
So you are starting out your Nova journey, where is a good place to start?
+
The list of subteams is posted at https://wiki.openstack.org/wiki/Nova#Active_Sub-teams
  
Bugs are a great way to cut your Nova teeth:
+
==== Subteam Patches and Bugs ====
https://bugs.launchpad.net/nova/+bugs?field.tag=low-hanging-fruit
+
Subteams are encouraged to use this etherpad to highlight their priority patches and bugs for review: https://etherpad.openstack.org/p/stein-nova-subteam-tracking
  
Also, we guess that you probably want to understand how Nova works before changing anything ? Good news, we have a solution for you! Code reviews are usually the best way for ramping up on a project and get and compare feedback on what's bad or what's cool. For that, you can help us. We have a list of trivial bugs that are waiting reviews :
+
==== Attend the [https://www.openstack.org/ptg Project Teams Gathering] or [https://wiki.openstack.org/wiki/Forum Summit Forum] ====
https://etherpad.openstack.org/p/liberty-nova-priorities-tracking L25 and below
+
Meeting the other contributors face to face is really helpful. Even if you are just starting out, being present during the discussions can provide a lot of context. Try to review items that are published in the agenda for these meetings beforehand so you have some context prior to going in. During the meetings, take really good notes and ask clarifying questions outside of the main discussion. After the meeting, summarize the keys issues in your notes so you can follow subsequent discussions. Pick some areas to follow reviews on and even if you don't feel comfortable contributing a +1, make sure you at least understand the proposal or the code change itself.
  
 +
=== Who to Contact ===
 +
If you have questions about the information on this page, please feel free to reach out to the [https://wiki.openstack.org/wiki/Nova#People PTL] on IRC in the #openstack-nova channel.
  
TODO - we are going to add other on going low hanging fruit tasks here, like fixing up the logging, helping fix up error handling to a standard pattern, etc.
+
==== IRC ====
 +
Although people show as logged in on IRC they may not be available. When reaching out, you can either mention the person by name in the #openstack-nova channel or message them directly. When messaging in the #openstack-nova channel, please just mention the person's name and then ask your question. There is no need to do "hi" or "hello" to get their attention. If they do not answer right away, this gives others present the opportunity to assist you. If the person does not respond, you can message them directly and sometimes that will indicate their away status. If you still do not continue to get a response, then email them with your question.
  
=== How do I get my feature in? ===
+
==== Email ====
 +
When emailing with questions about joining the team, the PTL can most easily assist you if you provide the following information:
 +
* What topic areas most interest you about Nova
 +
* Areas in Nova where you are most interested in contributing
 +
* Any other OpenStack contribution experience
 +
* Any other Open Source project experience (or if you don't have any, then please mention that)
 +
* Would this be volunteer work or is this part of a job expectation from your employer (ie, were you hired specifically to work on OpenStack or Nova as a developer?)
  
The best way of getting your feature in is... well it depends.
+
This is not a job application and you don't have to impress anyone. This information is just to assist in identifying project areas in the team that might be a good fit for your interests and experience.
  
First concentrate on solving your problem and/or use case, don't fixate on getting the code you have working merged. Its likely things will need significant re-work after you discuss how your needs match up with all the existing ways Nova is currently being used. The good news, is this process should leave you with a feature thats more flexible and doesn't lock you into your current way of thinking.
+
=== Work Items for New Contributors ===
 +
The following is a list of areas with projects ideal for new contributors to participate in.
  
A key part of getting code merged, is helping with reviewing other people's code. Great reviews of others code will help free up more core reviewer time to look at your own patches. In addition, you will understand how the review is thinking when they review your code.
+
==== Fixing Bugs ====
 +
While working on bugs is a normally a good way to get to know a new code base, that can be really tricky in Nova. Randomly submitting patches for bugs without talking to anyone is probably the least effective way to contribute to Nova. Always introduce yourself to the Nova team on IRC in #openstack-nova and ask about a bug before working on it.
  
Also, work out if any on going efforts are blocking your feature and helping out speeding those up. The spec review process should help with this effort.
+
===== Picking up a Bug =====
 +
If you find a bug you want to work on, first ask in the #openstack-nova channel before assigning it to yourself. This serves a few purposes:
 +
* Introduces you to the team
 +
* Announces your intent to work on a bug, so others won't work on it
 +
* Allows you to get context so your change is more likely to get approved
  
=== What is expected of a good contributor? ===
+
You can assign yourself the bug in 2 ways: 1) manually assign it in Launchpad or 2) submit a change referencing the bug ("Closes-Bug: 1234")
  
TODO - need more info on this
+
When you assign a bug to yourself in Launchpad, you have 2 weeks to submit a patch before you will be unassigned.
  
== Top Tips for working with the Nova community ==
+
===== Recommended Tags =====
 +
We use Launchpad as our bug tracker and bugs that have been verified are tagged to categorize them.
  
Here are some top tips around engaging with the Nova community:
+
Here is a list of tags with bugs that might be good for new contributors:
* IRC
+
* needs-functional-test: https://bugs.launchpad.net/nova/+bugs?field.tag=needs-functional-test
** we talk a lot in #openstack-nova
+
* api-ref: https://bugs.launchpad.net/nova/+bugs?field.tag=api-ref
** do ask us questions in there, and we will try to help you
+
* doc: https://bugs.launchpad.net/nova/+bugs?field.tag=doc
** not sure about asking questions? feel free to listen in around other people's questions
+
* testing: https://bugs.launchpad.net/nova/+bugs?field.tag=testing
** we recommend you setup an IRC bouncer: https://wiki.openstack.org/wiki/IRC
+
* api: https://bugs.launchpad.net/nova/+bugs?field.tag=api
* Email
 
** Use the [nova] tag in the mailing lists
 
** Filtering on [nova] and [all] can help tame the list
 
* Be Open
 
** i.e. don't review your teams code in private, do it publicly in gerrit
 
** i.e. be ready to talk about openly about problems you are having, not "theoretical" issues
 
** that way you can start to gain the trust of the wider community
 
* Got a problem? Please ask!
 
** Please raise any problems and ask questions early
 
** we want to help you before you are frustrated or annoyed
 
** unsure who to ask? Just ask in IRC, or check out the list of [[Nova#People|Nova people]]
 
* Talk about problems first, then solutions
 
** Nova is a big project. At first, it can be hard to see the big picture
 
** Don't think about "merging your patch", instead think about "solving your problem"
 
** conversations are more productive that way
 
* Its not the decision thats important, its the reason behind it thats important
 
** Don't like the way the community is going?
 
** Please ask why we ware going that way, and please engage with the debate
 
** If you don't, we are unable to learn from what you have to offer
 
* No one will decide, this is stuck, who can help me?
 
** its rare, but it happens
 
** its the [[Nova#people|Nova PTL]]'s job to help you
 
** ...but if you don't ask, its hard for them to help you
 
  
== Process ==
+
===== Low-Hanging-Fruit =====
 +
Bugs tagged with "Low Hanging Fruit"  are not usually good for new contributors. Try to use one of the tags above instead.
 +
A list of low hanging fruit bugs is available here, if you're looking for something more advanced: https://bugs.launchpad.net/nova/+bugs?field.tag=low-hanging-fruit
  
It can feel like you are faced with a wall of process. We are a big community, to make sure the right communication happens, we do use a minimal amount of process.
+
===== Reviews looking for owners =====
  
If you find something that doesn't make sense, please:
+
There is an etherpad for reviews looking for new owners: https://etherpad.openstack.org/p/nova-reviews-looking-for-owner. This is a list of reviews that have had un-addressed feedback for a long time and look to be abandoned by their original owners. They have a good chance of merging if someone takes them over.
* ask questions to find out *why* it happens
 
* if you know of a better way to do it, please speak up
 
* one "better way" might be to remove the process if it no longer helps
 
 
 
=== Why bother with any process? ===
 
 
 
Why is it worth creating a bug or blueprint to track your code review? This may seem like silly process, but there is usually a good reason behind it.
 
 
 
We have lots of code to review, and we have tools to try and get to really important code reviews first. If yours is really important, but not picked up by our tools, its possible you just get lost in the bottom of a big queue.
 
 
 
If you have a bug fix, you have done loads of work to identify the issue, and test out your fix, and submit it. By adding a bug report, you are making it easier for other folks who hit the same problem to find your work, possibly saving them the hours of pain you went through. With any luck that gives all those people the time to fix different bugs, all that might have affected you, if you had not given them the time go fix it.
 
 
 
Its similar with blueprints. You have worked out how to scratch your itch, lets tell others about that great new feature you have added, so they can use that. Also, it stops someone with a similar idea going through all the pain of creating a feature only to find you already have that feature ready and up for review, or merged into the latest release.
 
 
 
Hopefully this gives you an idea why we have applied a small layer of process to what we are doing. Having said all this, we need to unlearn old habits to move forward, there may be better ways to do things, and we are open to trying them. Please help be part of the solution.
 
 
 
== How do I become nova-core? ==
 
 
 
You don't have to be nova-core to be a valued member of the Nova community. There are many, many ways you can help. Every quality review that helps someone get their patch closer to being ready to merge helps everyone get their code merged faster.
 
 
 
The first step to becoming nova-core is learning how to be an active member of the Nova community, including learning how to do great code reviews. For more details see [[Nova/CoreTeam#Membership_Expectations]]
 
 
 
If you feel like you have the time to commit to all the nova-core membership expectations, reach out the [[Nova|Nova PTL]] who will be able to find you an existing member of nova-core to help mentor you. If all goes well, and you seem like a good candidate, your mentor will contact the rest of the nova-core team to ask them to start looking at your reviews, so they are able to vote for you, if you get nominated for join nova-core.
 
 
 
We encourage all mentoring, where possible, to occur on #openstack-nova so everyone can learn and benefit from your discussions.
 
 
 
The above mentoring is available to every one who wants to learn how to better code reviews, even if you don't ever want to commit to becoming nova-core. If you already have a mentor, that's great, the process is only there for folks who are still trying to find a mentor. Being admitted to the mentoring program no way guarantees you will become a member of nova-core eventually, its here to help you improve, and help you have the sort of involvement and conversations that can lead to becoming a member of nova-core.
 
 
 
== How to do great code reviews? ==
 
 
 
http://docs.openstack.org/infra/manual/developers.html#peer-review
 
 
 
More details coming soon...
 
 
 
== How to do great nova-spec reviews? ==
 
 
 
http://specs.openstack.org/openstack/nova-specs/specs/liberty/template.html
 
 
 
http://docs.openstack.org/developer/nova/devref/kilo.blueprints.html#when-is-a-blueprint-needed
 
 
 
More details coming soon...
 
 
 
== How to do great bug triage? ==
 
 
 
https://wiki.openstack.org/wiki/Nova/BugTriage
 
 
 
More details coming soon...
 
 
 
== How to step up into a project leadership role? ==
 
 
 
There are many ways to help lead the Nova project:
 
* Consider leading and existing [[Nova#Nova_subteams|Nova sub team]] or creating a new [[Nova#Nova_subteams|Nova sub team]]?
 
* Consider becoming a [[Nova/BugTriage#Step_2:_Triage_Tagged_Bugs|Bug tag owner]]
 
* Contact the PTL about becoming a [[Nova#People|Czar]].
 

Latest revision as of 15:09, 13 June 2019

How to Get Involved

As the involvement process is pretty consistent, we've moved that information to the Developer Reference Guide. This page covers more in-flux items like who to contact and a rotating list of tasks that are good for new contributors.

Nova is a huge project with a lot going on, so don't expect to grok everything. You should pick a few areas to focus on while you're learning the lay of the land, or you'll get overwhelmed pretty quickly.

Team Priorities

The team priorities are documented per cycle at http://specs.openstack.org/openstack/nova-specs/#priorities

Attend the Nova Team Meeting

The Nova team has weekly meetings at alternating times to accomodate different time zones. Attend this meeting, or read the logs to stay up to date. Work items often come up that you can volunteer to take on, or at least offer to help the person who has volunteered for it.

The Nova meeting agenda and links to past meetings are posted at https://wiki.openstack.org/wiki/Meetings/Nova

Join a Subteam

Nova is a big project and we have several subteams that are focused on specific efforts. Each of these subteams has a weekly meeting. If you are interested in getting involved with a subteam you can either attend the weekly meeting or keep up with the meeting logs if the time is inconvenient for you. During these meetings, subteams might mention tasks they need done and if the task isn't ideal for a new contributor, you may be able to pair with a current contributor who can delegate work to you. You can also offer to help someone out with documentation or test coverage, for instance.

Each subteam has a primary organizer. If you can't attend a subteam's meeting to introduce yourself, reach out to the subteam's organizer or a member of the subteam working on the thing you are interested in, and introduce yourself to them.

The list of subteams is posted at https://wiki.openstack.org/wiki/Nova#Active_Sub-teams

Subteam Patches and Bugs

Subteams are encouraged to use this etherpad to highlight their priority patches and bugs for review: https://etherpad.openstack.org/p/stein-nova-subteam-tracking

Attend the Project Teams Gathering or Summit Forum

Meeting the other contributors face to face is really helpful. Even if you are just starting out, being present during the discussions can provide a lot of context. Try to review items that are published in the agenda for these meetings beforehand so you have some context prior to going in. During the meetings, take really good notes and ask clarifying questions outside of the main discussion. After the meeting, summarize the keys issues in your notes so you can follow subsequent discussions. Pick some areas to follow reviews on and even if you don't feel comfortable contributing a +1, make sure you at least understand the proposal or the code change itself.

Who to Contact

If you have questions about the information on this page, please feel free to reach out to the PTL on IRC in the #openstack-nova channel.

IRC

Although people show as logged in on IRC they may not be available. When reaching out, you can either mention the person by name in the #openstack-nova channel or message them directly. When messaging in the #openstack-nova channel, please just mention the person's name and then ask your question. There is no need to do "hi" or "hello" to get their attention. If they do not answer right away, this gives others present the opportunity to assist you. If the person does not respond, you can message them directly and sometimes that will indicate their away status. If you still do not continue to get a response, then email them with your question.

Email

When emailing with questions about joining the team, the PTL can most easily assist you if you provide the following information:

  • What topic areas most interest you about Nova
  • Areas in Nova where you are most interested in contributing
  • Any other OpenStack contribution experience
  • Any other Open Source project experience (or if you don't have any, then please mention that)
  • Would this be volunteer work or is this part of a job expectation from your employer (ie, were you hired specifically to work on OpenStack or Nova as a developer?)

This is not a job application and you don't have to impress anyone. This information is just to assist in identifying project areas in the team that might be a good fit for your interests and experience.

Work Items for New Contributors

The following is a list of areas with projects ideal for new contributors to participate in.

Fixing Bugs

While working on bugs is a normally a good way to get to know a new code base, that can be really tricky in Nova. Randomly submitting patches for bugs without talking to anyone is probably the least effective way to contribute to Nova. Always introduce yourself to the Nova team on IRC in #openstack-nova and ask about a bug before working on it.

Picking up a Bug

If you find a bug you want to work on, first ask in the #openstack-nova channel before assigning it to yourself. This serves a few purposes:

  • Introduces you to the team
  • Announces your intent to work on a bug, so others won't work on it
  • Allows you to get context so your change is more likely to get approved

You can assign yourself the bug in 2 ways: 1) manually assign it in Launchpad or 2) submit a change referencing the bug ("Closes-Bug: 1234")

When you assign a bug to yourself in Launchpad, you have 2 weeks to submit a patch before you will be unassigned.

Recommended Tags

We use Launchpad as our bug tracker and bugs that have been verified are tagged to categorize them.

Here is a list of tags with bugs that might be good for new contributors:

Low-Hanging-Fruit

Bugs tagged with "Low Hanging Fruit" are not usually good for new contributors. Try to use one of the tags above instead. A list of low hanging fruit bugs is available here, if you're looking for something more advanced: https://bugs.launchpad.net/nova/+bugs?field.tag=low-hanging-fruit

Reviews looking for owners

There is an etherpad for reviews looking for new owners: https://etherpad.openstack.org/p/nova-reviews-looking-for-owner. This is a list of reviews that have had un-addressed feedback for a long time and look to be abandoned by their original owners. They have a good chance of merging if someone takes them over.