Jump to: navigation, search

Difference between revisions of "OpenStack Upstream Training/Info"

(Marked this version for translation)
(18 intermediate revisions by 3 users not shown)
Line 62: Line 62:
  
 
<!--T:20-->
 
<!--T:20-->
* [https://wiki.openstack.org/wiki/Release_Cycle Release cycle] ( [https://github.com/openstack/training-guides/blob/master/doc/upstream-training/01-release-cycle.rst slides] )
+
* [https://wiki.openstack.org/wiki/Release_Cycle Release cycle] ( [https://github.com/openstack/training-guides/blob/master/doc/upstream-training/source/01-release-cycle.rst slides] )
 
** [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#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#Implementation_.28Milestone_iterations.29 Implementation (Milestone iterations)]
Line 69: Line 69:
 
*** [https://wiki.openstack.org/wiki/Release_Cycle#Other_release_candidates Other release candidates]
 
*** [https://wiki.openstack.org/wiki/Release_Cycle#Other_release_candidates Other release candidates]
 
*** [https://wiki.openstack.org/wiki/Release_Cycle#Release_day Release day]
 
*** [https://wiki.openstack.org/wiki/Release_Cycle#Release_day Release day]
** Exercise: based on the [https://wiki.openstack.org/wiki/Juno_Release_Schedule Juno release schedule] find the URL of a document or a patch that belongs to each of the above steps.
+
** Exercise: based on the [https://wiki.openstack.org/wiki/Kilo_Release_Schedule Kilo release schedule] find the URL of a document or a patch that belongs to each of the above steps.
* Relevant actors ( [https://github.com/openstack/training-guides/blob/master/doc/upstream-training/02-relevant-actors.rst slides] )
+
* Relevant actors ( [https://github.com/openstack/training-guides/blob/master/doc/upstream-training/source/02-relevant-actors.rst slides] )
** [http://www.stackalytics.com/?release=juno&metric=commits&project_type=integrated&module=&company=&user_id= commiters] companies
+
** [http://www.stackalytics.com/?release=kilo&metric=commits&project_type=integrated&module=&company=&user_id= commiters] companies
** [http://www.stackalytics.com/?release=juno&metric=commits&project_type=integrated&module=&company=&user_id= commiters] individuals (bottom of the page)
+
** [http://www.stackalytics.com/?release=kilo&metric=commits&project_type=integrated&module=&company=&user_id= commiters] individuals (bottom of the page)
 
** Your management
 
** Your management
* [https://wiki.openstack.org/wiki/Governance/Foundation/TechnicalCommittee Technical Committee] ( [https://github.com/openstack/training-guides/blob/master/doc/upstream-training/03-technical-committee.rst slides] )
+
* [http://governance.openstack.org/ OpenStack Governance] ( [https://github.com/openstack/training-guides/blob/master/doc/upstream-training/source/03-technical-committee.rst slides] )
** Decide what is an [https://wiki.openstack.org/wiki/Programs OpenStack Program]
+
** [http://governance.openstack.org/reference/charter.html Technical Committee]
** [https://wiki.openstack.org/wiki/Governance/TechnicalCommittee meetings]  
+
** The role of the [http://governance.openstack.org/reference/charter.html#mission Technical Committee]
 +
** [http://governance.openstack.org/reference/charter.html#openstack-project-teams OpenStack Project Teams]
 +
** [http://governance.openstack.org/reference/projects/index.html OpenStack Project Teams list]
 +
** [https://wiki.openstack.org/wiki/Meetings#Technical_Committee_meeting 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]
 
** 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]
+
** [http://governance.openstack.org/reference/charter.html#project-team-leads PTLs]
** [https://wiki.openstack.org/wiki/Governance/Foundation/TechnicalCommittee#Voters_for_PTL_seats_.28.22APC.22.29 APC]
+
** [http://governance.openstack.org/reference/charter.html#voters-for-ptl-seats-apc APC]
** [https://wiki.openstack.org/wiki/Governance/Foundation/TechnicalCommittee#Voters_for_TC_seats_.28.22ATC.22.29 ATC]
+
** [http://governance.openstack.org/reference/charter.html#voters-for-tc-seats-atc ATC]
 
** Exercise: each APC / ATC in the class add a URL to the etherpad proving it
 
** 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://github.com/openstack/training-guides/blob/master/doc/upstream-training/04-program-ecosystem.rst slides] )
+
* [http://governance.openstack.org/reference/new-projects-requirements.html "Big Tent" and tags]  ( [https://github.com/openstack/training-guides/blob/master/doc/upstream-training/source/04-program-ecosystem.rst slides] )
** [https://wiki.openstack.org/wiki/Governance/NewProjects#Incubation Incubated]
+
** [http://governance.openstack.org/reference/projects/index.html OpenStack Project Teams]
** [https://wiki.openstack.org/wiki/Governance/NewProjects#Integrated Integrated]
+
** [http://governance.openstack.org/reference/tags/index.html List of approved tags]
** [https://wiki.openstack.org/wiki/Governance/NewProjects#Core_.3F Core]
+
** [https://github.com/openstack/defcore Understanding the DefCore Guidelines]
 +
** [https://github.com/openstack/defcore/blob/master/process/CoreDefinition.rst Core Definition]
 
** [http://ci.openstack.org/stackforge.html Stackforge]
 
** [http://ci.openstack.org/stackforge.html Stackforge]
 +
** [http://docs.openstack.org/infra/manual/creators.html How to add a project to Stackforge]
 
** Exercise: What kind of Program do you contribute to ?
 
** Exercise: What kind of Program do you contribute to ?
* [https://wiki.openstack.org/wiki/Summit Design summits]  ( [https://github.com/openstack/training-guides/blob/master/doc/upstream-training/05-design-summit.rst slides] )
+
* [https://wiki.openstack.org/wiki/Design_Summit Design summits]  ( [https://github.com/openstack/training-guides/blob/master/doc/upstream-training/source/05-design-summit.rst slides] )
** [https://wiki.openstack.org/wiki/Summit#Propose_sessions propose sessions]
+
** [https://wiki.openstack.org/wiki/Design_Summit/Planning Propose sessions]
** [https://wiki.openstack.org/wiki/Summit#At_the_Design_Summit attend or lead a session]
+
** [https://libertydesignsummit.sched.org/overview/type/design+summit#.VVeYTt-uNNw List of sessions]
** [https://wiki.openstack.org/wiki/Summit/Kilo/Etherpads Kilo Summit Etherpads]
+
** [https://wiki.openstack.org/wiki/Design_Summit/Liberty/Etherpads Liberty Summit Etherpads]
 
** Exercise: Add a session proposal regarding your contribution in an etherpad, review two proposals
 
** Exercise: Add a session proposal regarding your contribution in an etherpad, review two proposals
* [https://wiki.openstack.org/wiki/Meetings IRC meetings]  ( [https://github.com/openstack/training-guides/blob/master/doc/upstream-training/06-irc-meetings.rst slides] )
+
* [https://wiki.openstack.org/wiki/Meetings IRC meetings]  ( [https://github.com/openstack/training-guides/blob/master/doc/upstream-training/source/06-irc-meetings.rst slides] )
** [http://ci.openstack.org/meetbot.html modified] [http://wiki.debian.org/MeetBot meetbot]
+
** [http://docs.openstack.org/infra/system-config/irc.html IRC Services]  
 +
** [http://wiki.debian.org/MeetBot meetbot]
 +
** [https://wiki.openstack.org/wiki/IRC OpenStack IRC channels]
 +
** [http://eavesdrop.openstack.org/irclogs/ IRC Logs]
 
** #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.  
 
** #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)  
 
** #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)  
Line 103: Line 111:
  
 
<!--T:22-->
 
<!--T:22-->
* [http://devstack.org/ devstack] ( [https://github.com/openstack/training-guides/blob/master/doc/upstream-training/11-devstack.rst slides] )
+
* [http://devstack.org/ devstack] ( [https://github.com/openstack/training-guides/blob/master/doc/upstream-training/source/11-devstack.rst slides] )
 
** Ubuntu or Fedora
 
** Ubuntu or Fedora
 
** git clone https://github.com/openstack-dev/devstack.git
 
** git clone https://github.com/openstack-dev/devstack.git
Line 109: Line 117:
 
** cd devstack; ./stack.sh
 
** cd devstack; ./stack.sh
 
** Exercise: get the code for the targeted contribution
 
** Exercise: get the code for the targeted contribution
* [[How_To_Contribute|HOW to contribute URL]] ( [https://github.com/openstack/training-guides/blob/master/doc/upstream-training/12-howtocontribute.rst slides] )
+
* [[How_To_Contribute|HOW to contribute URL]] ( [https://github.com/openstack/training-guides/blob/master/doc/upstream-training/source/12-howtocontribute.rst slides] )
 
** [[Puppet-openstack#Contributing_to_the_modules|puppet stackforge]]
 
** [[Puppet-openstack#Contributing_to_the_modules|puppet stackforge]]
 
** [[Documentation/HowTo|documentation]]
 
** [[Documentation/HowTo|documentation]]
 
** [http://docs.openstack.org/training-guides/content/under-construction.html training guides]
 
** [http://docs.openstack.org/training-guides/content/under-construction.html training guides]
 
** Excercise: Apply for individual membership and sign the CLA
 
** Excercise: Apply for individual membership and sign the CLA
* [https://help.launchpad.net/ launchpad] ( [https://github.com/openstack/training-guides/blob/master/doc/upstream-training/13-launchpad.rst slides] )
+
* [https://help.launchpad.net/ launchpad] ( [https://github.com/openstack/training-guides/blob/master/doc/upstream-training/source/13-launchpad.rst slides] )
 
** [[Blueprints|blueprints]]
 
** [[Blueprints|blueprints]]
 
** [[Bugs|bugs]]
 
** [[Bugs|bugs]]
Line 123: Line 131:
 
*** [[Bugs#Bugfixing|bugfixing]]
 
*** [[Bugs#Bugfixing|bugfixing]]
 
** Exercise: review other launchpad bugs and improve yours
 
** Exercise: review other launchpad bugs and improve yours
* [[GerritWorkflow|gerrit workflow]] ( [https://github.com/openstack/training-guides/blob/master/doc/upstream-training/14-gerrit.rst slides] )
+
* How to contribute ( [https://github.com/openstack/training-guides/blob/master/doc/upstream-training/source/14-gerrit.rst slides] )
** [[GerritWorkflow#Account_Setup|account setup]]
+
** [http://docs.openstack.org/infra/manual/developers.html Developer’s Guide]
** [[GerritWorkflow#Git_Review_Installation|git review installation]]
+
** [http://docs.openstack.org/infra/manual/developers.html#account-setup Account setup]
** [[GerritWorkflow#SSH_Setup|ssh setup]]
+
** [http://docs.openstack.org/infra/manual/developers.html#installing-git-review Git review installation]
** [[GerritWorkflow#Project_Setup|project setup]]
+
** [http://docs.openstack.org/infra/manual/developers.html#starting-work-on-a-new-repository Starting Work on a New Repository]
** [[GerritWorkflow#Normal_Workflow|gerrit workflow]]
+
** [http://docs.openstack.org/infra/manual/developers.html#development-workflow Development workflow]
** [[Testing#Unit_Tests|running unit tests]]
+
** [http://docs.openstack.org/infra/manual/developers.html#running-unit-tests Running unit tests]
** [http://www.mediawiki.org/wiki/Gerrit/Advanced_usage review dependencies]
+
** [http://docs.openstack.org/infra/manual/developers.html#cross-repository-dependencies Cross-Repository Dependencies]
 
** Exercise: push a wip or draft and invite reviewers
 
** Exercise: push a wip or draft and invite reviewers
* Branching model ( [https://github.com/openstack/training-guides/blob/master/doc/upstream-training/15-branching-model.rst slides] )
+
* Branching model ( [https://github.com/openstack/training-guides/blob/master/doc/upstream-training/source/15-branching-model.rst slides] )
** [[BranchModel|development]]
+
** [[Branch_Model|development]]
 
** [[StableBranch|stable]]
 
** [[StableBranch|stable]]
 
** Exercise: checkout the latest stable branch
 
** Exercise: checkout the latest stable branch
* [[GerritJenkinsGit#Reviewing_a_Change|reviewing]]  ( [https://github.com/openstack/training-guides/blob/master/doc/upstream-training/16-reviewing.rst slides] )
+
* [http://docs.openstack.org/infra/manual/developers.html#code-review Code Review]  ( [https://github.com/openstack/training-guides/blob/master/doc/upstream-training/source/16-reviewing.rst slides] )
* [[GerritWorkflow#Committing_Changes|writing a commit message]] ( [https://github.com/openstack/training-guides/blob/master/doc/upstream-training/17-commit-message.rst slides] )
+
* [http://docs.openstack.org/infra/manual/developers.html#peer-review Peer Review] ( [https://github.com/openstack/training-guides/blob/master/doc/upstream-training/source/17-commit-message.rst slides] )
** reference to a bug or a blueprint
+
** [https://wiki.openstack.org/wiki/GitCommitMessages Git Commit Good Practice]
** amending a commit message
+
** Gerrit Documentation: [https://review.openstack.org/Documentation/intro-quick.html Gerrit Code Review - A Quick Introduction]
 +
** Gerrit Documentation: [https://review.openstack.org/Documentation/intro-quick.html#_reviewing_the_change Reviewing the Change]
 
** Exercise: review each other messages on the draft
 
** Exercise: review each other messages on the draft
* [[GerritJenkinsGit|jenkins]]  ( [https://github.com/openstack/training-guides/blob/master/doc/upstream-training/18-jenkins.rst slides] )
+
* [http://docs.openstack.org/infra/manual/developers.html#automated-testing Jenkins (Automated Testing)]  ( [https://github.com/openstack/training-guides/blob/master/doc/upstream-training/source/18-jenkins.rst slides] )
 
** Exercise: add an error and match it to the jenkins message
 
** Exercise: add an error and match it to the jenkins message
  
Line 149: Line 158:
  
 
  <!--T:25-->
 
  <!--T:25-->
( [https://github.com/openstack/training-guides/blob/master/doc/upstream-training/19-training-contribution-process.rst slides] )
+
( [https://github.com/openstack/training-guides/blob/master/doc/upstream-training/source/19-training-contribution-process.rst slides] )
 
* Take the pulse of the project.
 
* Take the pulse of the project.
 
* Figure out who's behind it.
 
* Figure out who's behind it.
Line 174: Line 183:
  
 
  <!--T:27-->
 
  <!--T:27-->
( [https://github.com/openstack/training-guides/blob/master/doc/upstream-training/20-training-agile-for-contributors.rst slides] )
+
( [https://github.com/openstack/training-guides/blob/master/doc/upstream-training/source/20-training-agile-for-contributors.rst slides] )
 
* Apply agile
 
* Apply agile
 
* Who is the customer?
 
* Who is the customer?
Line 204: Line 213:
  
 
<!--T:34-->
 
<!--T:34-->
https://etherpad.openstack.org/p/kilo-upstream-training
+
https://etherpad.openstack.org/p/upstream-training-vancouver
  
 
</translate>
 
</translate>

Revision as of 21:19, 16 May 2015

Introduction

With over 2000 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.

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.

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

Infrastructure

ready to use devstack VM for participants with network connectivity but troubles with their laptop

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)

Workflow of an OpenStack contribution and tools (3h including 2h exercises)

Second day

The Contribution Process (1 hour)

( slides )
  • 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)

( slides )
  • Apply agile
  • Who is the customer?
  • Company & Upstream product owner
  • Sprint review presentation to Upstream

Contribution Simulation (2 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)

( odp slides pdf slides )


  • 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

Etherpad

https://etherpad.openstack.org/p/upstream-training-vancouver