Jump to: navigation, search

Difference between revisions of "OpenStack Upstream Training/Info"

(IRC meetings and meetbot)
(Replaced content with "=== New location of the Upstream materials === === Upstream training material is now published continuously at http://docs.openstack.org/upstream-training === Upstream m...")
 
(80 intermediate revisions by 9 users not shown)
Line 1: Line 1:
== Introduction ==
+
=== New location of the Upstream materials ===
  
With over 1000 developers from 80 different companies worldwide, OpenStack is one of the largest collaborative software-development projects. Because of its size, it is characterized by a huge diversity in social norms and technical conventions.  These can significantly slow down the speed at which newcomers are successful at integrating their own roadmap into that of the OpenStack project.
+
=== Upstream training material is now published continuously at http://docs.openstack.org/upstream-training ===
  
We've designed a training program to help professional developers negotiate this hurdle.  It shows them how to ensure their bug fix or feature is accepted in the OpenStack project in a minimum amount of time.  The educational program requires students to work on real-life bug fixes or new features during two days of real-life classes and online mentoring, until the work is accepted by OpenStack. The live two-day class teaches them to navigate the intricacies of the project's technical tools and social interactions. In a followup session, the students benefit from individual online sessions to help them resolve any remaining problems they might have.
+
Upstream material is now converted into standard RST format. To update it please submit a patch for it in the [[Training-guides|Training guides]] repository (http://git.openstack.org/cgit/openstack/training-guides).
 
 
== Objectives ==
 
 
 
* Faster integration of the companies product roadmap into the OpenStack release cycle
 
* Successfully contribute one real world patch to an OpenStack component
 
* Master the technical tools
 
* Understand the OpenStack contribution workflow and social norms
 
 
 
== Target Audience ==
 
 
 
* Developers
 
* System administrators
 
 
 
== Prerequisites ==
 
 
 
* Being able to read and write English at a technical level.
 
* If contributing code, being technically proficient enough to carry out simple bug fixes in the project.
 
* If contributing documentation, being able to produce documents in the project's chosen infrastructure.
 
* Having at least 8 hours a week to dedicate to the project, be it through programming or through interacting with the community.
 
 
 
== Duration ==
 
 
 
* Face-to-face section: 2 days
 
* Online section: 10 one-hour individual mentoring sessions over a period of 4 to 10 weeks
 
 
 
= Course Outline =
 
 
 
== First day ==
 
 
 
=== Introduction ===
 
* A week before Day 1: choice of a contribution, via email, with each participant
 
* Day 1: How OpenStack is made
 
* Day 1: Learn and practice git, gerrit, IRC
 
 
 
* Day 2: The theory of contribution
 
* Day 2: Lego contribution simulation
 
* Day 2: Individual presentation of the contribution plan
 
* Day 2: Online mentoring
 
 
 
=== How OpenStack is made 3h including 1h30 exercises ===
 
 
 
* [https://wiki.openstack.org/wiki/Release_Cycle Release cycle]
 
** [https://wiki.openstack.org/wiki/Release_Cycle#Planning_.28Design.2C_Discuss_and_Target.29 Planning (Design, Discuss and Target)]
 
** [https://wiki.openstack.org/wiki/Release_Cycle#Implementation_.28Milestone_iterations.29 Implementation (Milestone iterations)]
 
** [https://wiki.openstack.org/wiki/Release_Cycle#Pre-release_.28Release_Candidates_dance.29 Pre-release (Release Candidates dance)]
 
*** [https://wiki.openstack.org/wiki/Release_Cycle#Release_candidate_1 Release candidate 1]
 
*** [https://wiki.openstack.org/wiki/Release_Cycle#Other_release_candidates Other release candidates]
 
*** [https://wiki.openstack.org/wiki/Release_Cycle#Release_day Release day]
 
** Exercise: based on the [https://wiki.openstack.org/wiki/Icehouse_Release_Schedule Icehouse release schedule] find the URL of a document or a patch that belongs to each of the above steps.
 
* Relevant actors
 
** [http://www.stackalytics.com/?release=icehouse&metric=commits&project_type=integrated&module=&company=&user_id= commiters] companies
 
** [http://www.stackalytics.com/?release=icehouse&metric=commits&project_type=integrated&module=&company=&user_id= commiters] individuals
 
** Your management
 
* [https://wiki.openstack.org/wiki/Governance/Foundation/TechnicalCommittee Technical Committee]
 
** Decide what is an [https://wiki.openstack.org/wiki/Programs OpenStack Program]
 
** [https://wiki.openstack.org/wiki/Governance/TechnicalCommittee meetings]
 
** Exercise: read [http://eavesdrop.openstack.org/meetings/tc/2014/tc.2014-04-01-20.03.log.html archived] and briefly comment on [https://etherpad.openstack.org/p/keystone-incubation-integration-requirements keystone document]
 
** [https://wiki.openstack.org/wiki/Governance/Foundation/TechnicalCommittee#Program_Leads PTLs]
 
** [https://wiki.openstack.org/wiki/Governance/Foundation/TechnicalCommittee#Voters_for_PTL_seats_.28.22APC.22.29 APC]
 
** [https://wiki.openstack.org/wiki/Governance/Foundation/TechnicalCommittee#Voters_for_TC_seats_.28.22ATC.22.29 ATC]
 
** Exercise: each APC / ATC in the class add a URL to the etherpad proving it
 
* [https://wiki.openstack.org/wiki/Governance/NewProjects Program ecosystem]
 
** [https://wiki.openstack.org/wiki/Governance/NewProjects#Incubation Incubated]
 
** [https://wiki.openstack.org/wiki/Governance/NewProjects#Integrated Integrated]
 
** [https://wiki.openstack.org/wiki/Governance/NewProjects#Core_.3F Core]
 
** [http://ci.openstack.org/stackforge.html Stackforge]
 
** Exercise: What kind of Program do you contribute to ?
 
* [https://wiki.openstack.org/wiki/Summit Design summits]
 
** [https://wiki.openstack.org/wiki/Summit#Propose_sessions propose sessions]
 
** [https://wiki.openstack.org/wiki/Summit#At_the_Design_Summit attend or lead a session]
 
** Exercise: Add a session proposal regarding your contribution in an etherpad, review two proposals
 
* [https://wiki.openstack.org/wiki/Meetings IRC meetings]
 
** [http://ci.openstack.org/meetbot.html modified] [http://wiki.debian.org/MeetBot meetbot]
 
** #info - Add an info item to the minutes. People should liberally use this for important things they say, so that they can be logged in the minutes.
 
** #action - Document an action item in the minutes. Include any nicknames in the line, and the item will be assigned to them. (nicknames are case-sensitive)
 
** #help - Add a "Call for Help" to the minutes. Use this command when you need to recruit someone to do a task. (Counter-intuitively, this doesn't provide help on the bot)
 
** Exercise: lunch menu online meeting
 
* Excercise: Applying for individual membership
 
* Exercise: Sign the CLA
 
 
 
=== Workflow of an OpenStack contribution and tools ===
 
 
 
* [[How_To_Contribute|HOW to contribute URL]]
 
** [[Puppet-openstack#Contributing_to_the_modules|puppet stackforge]]
 
** [[Documentation/HowTo|documentation]]
 
** [http://docs.openstack.org/training-guides/content/under-construction.html training guides]
 
* Get familiar with git + git clone
 
* Review with gerrit
 
* Push a wip or draft
 
* Follow the steps
 
* (make sure the CodeReviewGuidelines are covered)
 
* Submit a blueprint
 
* How to properly file a bug
 
* Bug triage
 
* Review guidlines
 
 
 
== Second day ==
 
 
 
=== The Contribution Process (3 hours) ===
 
 
 
* Take the pulse of the project.
 
* Figure out who's behind it.
 
* Determine the project's social groups.
 
* Assess your approach.
 
* Engage immediately.
 
* Play with your network.
 
* Perform the smaller tasks.
 
* Choose a question.
 
* Familiarize yourself with the code of conduct.
 
* Understand the conventions.
 
* Explain what you do.
 
* Prepare the backport.
 
* Learn what's local and what's upstream.
 
* Learn what distinguishes good work flow from bad work flow.
 
* Quantify the delta.
 
* Speed up the acceptance.
 
* Determine the time frame.
 
* Maximize karma.
 
* Work in parallel.
 
* Archive and collect.
 
 
 
=== Agile for Contributors (15 min) ===
 
 
 
* Apply agile
 
* Who is the customer?
 
* Company & Upstream product owner
 
* Sprint review presentation to Upstream
 
 
 
=== Contribution Simulation (1 hour) ===
 
 
 
The students make a virtual contribution simulation using Lego bricks as props, with the goal of expanding a Lego town, built by upstream. They are divided into teams; the teacher is by turns the product owner in the company and the upstream.
 
 
 
=== Contribution Planning (2 hours) ===
 
 
 
* The students use template slides to prepare a 5-minute presentation of their planned contribution.
 
* A sample presentation is given by the teacher, as an example.
 
* Each student group prepares a presentation describing:
 
** the contribution they plan to work on during the online sessions,
 
** how they will engage with the Upstream,
 
** how it contributes to the company's agenda
 
** and whom they will be working with.
 
* Each student group presents its slides to the class
 

Latest revision as of 13:33, 15 January 2016

New location of the Upstream materials

Upstream training material is now published continuously at http://docs.openstack.org/upstream-training

Upstream material is now converted into standard RST format. To update it please submit a patch for it in the Training guides repository (http://git.openstack.org/cgit/openstack/training-guides).