Jump to: navigation, search

Difference between revisions of "OpenStack Upstream Training/Info/zh-tw"

(Created page with "* 在第一天的開始之前: choice of a contribution, via email, with each participant * 第一天: OpenStack 是如何產生出來的 * 第一天: 學習和練習 git, ger...")
 
(28 intermediate revisions by the same user not shown)
Line 2: Line 2:
 
== 引言 ==  
 
== 引言 ==  
  
和來自全球 80 個不同公司超過 2000 位的開發人員, OpenStack 是目前最大型的軟體合作開發專案之一. 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.
+
和來自全球 80 個不同公司超過 2000 位的開發人員, OpenStack 是目前最大型的軟體合作開發專案之一. 因為它的 size, it is characterized by a huge diversity in 規範和技術常規.  These can significantly slow down the speed at which 新進人士 are successful at integrating their own roadmap into that of the OpenStack 專案.
  
 
我們已經設計了一系列的課程來幫助程式設計師和軟體開發人員來跨越貢獻時所遇到的障礙  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.
 
我們已經設計了一系列的課程來幫助程式設計師和軟體開發人員來跨越貢獻時所遇到的障礙  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.
Line 8: Line 8:
 
== 課程目標 ==  
 
== 課程目標 ==  
  
* Faster integration of the companies product roadmap into the OpenStack release cycle
+
* 快速整合公司的產品線到 OpenStack 的發佈周期
* Successfully contribute one real world patch to an OpenStack component
+
* 真正地成功將修正程式貢獻到一個 OpenStack 專案之中
 
* 精熟貢獻開發的工具軟體
 
* 精熟貢獻開發的工具軟體
 
* 了解如何貢獻到 OpenStack 專案的流程以及規範
 
* 了解如何貢獻到 OpenStack 專案的流程以及規範
Line 27: Line 27:
 
== 課程所需時間 ==  
 
== 課程所需時間 ==  
  
* Face-to-face section: 2 days
+
* 2 天實體課程
 
* Online section: 10 one-hour individual mentoring sessions over a period of 4 to 10 weeks
 
* Online section: 10 one-hour individual mentoring sessions over a period of 4 to 10 weeks
  
Line 47: Line 47:
 
* 第二天: Lego contribution simulation
 
* 第二天: Lego contribution simulation
 
* 第二天: Individual presentation of the contribution plan
 
* 第二天: Individual presentation of the contribution plan
* 第二天: Online mentoring
+
* 第二天: 線上指導
  
=== How OpenStack is made (3h including 1h30 exercises) ===  
+
=== OpenStack 是如何產生出來的 ( 3 小時 包括 1 小時 30 分鐘的練習時間 ) ===  
  
 
* [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/01-release-cycle.rst slides] )
Line 58: Line 58:
 
*** [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.
+
** 練習: 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.
 
* 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/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=juno&metric=commits&project_type=integrated&module=&company=&user_id= commiters] companies
Line 66: Line 66:
 
** Decide what is an [https://wiki.openstack.org/wiki/Programs OpenStack Program]
 
** Decide what is an [https://wiki.openstack.org/wiki/Programs OpenStack Program]
 
** [https://wiki.openstack.org/wiki/Governance/TechnicalCommittee meetings]  
 
** [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]
+
** 練習: 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#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_PTL_seats_.28.22APC.22.29 APC]
 
** [https://wiki.openstack.org/wiki/Governance/Foundation/TechnicalCommittee#Voters_for_TC_seats_.28.22ATC.22.29 ATC]
 
** [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
+
** 練習: 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] )
 
* [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] )
 
** [https://wiki.openstack.org/wiki/Governance/NewProjects#Incubation Incubated]
 
** [https://wiki.openstack.org/wiki/Governance/NewProjects#Incubation Incubated]
Line 76: Line 76:
 
** [https://wiki.openstack.org/wiki/Governance/NewProjects#Core_.3F Core]
 
** [https://wiki.openstack.org/wiki/Governance/NewProjects#Core_.3F Core]
 
** [http://ci.openstack.org/stackforge.html Stackforge]
 
** [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://github.com/openstack/training-guides/blob/master/doc/upstream-training/05-design-summit.rst slides] )
 
* [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/Summit#Propose_sessions propose sessions]
 
** [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]
 
** [https://wiki.openstack.org/wiki/Summit#At_the_Design_Summit attend or lead a session]
 
** [https://wiki.openstack.org/wiki/Summit/Kilo/Etherpads Kilo Summit Etherpads]
 
** [https://wiki.openstack.org/wiki/Summit/Kilo/Etherpads Kilo Summit Etherpads]
** Exercise: Add a session proposal regarding your contribution in an etherpad, review two proposals
+
** 練習: 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/06-irc-meetings.rst slides] )
 
** [http://ci.openstack.org/meetbot.html modified] [http://wiki.debian.org/MeetBot meetbot]
 
** [http://ci.openstack.org/meetbot.html modified] [http://wiki.debian.org/MeetBot meetbot]
Line 87: Line 87:
 
** #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)  
 
** #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)
 
** #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
+
** 練習: lunch menu online meeting
  
=== Workflow of an OpenStack contribution and tools (3h including 2h exercises) ===  
+
=== Workflow of an OpenStack contribution and tools ( 3 小時包括 2 小時練習 ) ===  
  
 
* [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/11-devstack.rst slides] )
Line 96: Line 96:
 
** [http://devstack.org/configuration.html minimal configuration]
 
** [http://devstack.org/configuration.html minimal configuration]
 
** cd devstack; ./stack.sh
 
** cd devstack; ./stack.sh
** Exercise: get the code for the targeted contribution
+
** 練習: 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/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
+
** 練習: 申請個人會員並簽署 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/13-launchpad.rst slides] )
 
** [[Blueprints|blueprints]]
 
** [[Blueprints|blueprints]]
Line 110: Line 110:
 
*** [[Bugs#Debugging_.28optional.29|debugging]]
 
*** [[Bugs#Debugging_.28optional.29|debugging]]
 
*** [[Bugs#Bugfixing|bugfixing]]
 
*** [[Bugs#Bugfixing|bugfixing]]
** Exercise: review other launchpad bugs and improve yours
+
** 練習: 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] )
 
* [[GerritWorkflow|gerrit workflow]] ( [https://github.com/openstack/training-guides/blob/master/doc/upstream-training/14-gerrit.rst slides] )
 
** [[GerritWorkflow#Account_Setup|account setup]]
 
** [[GerritWorkflow#Account_Setup|account setup]]
Line 119: Line 119:
 
** [[Testing#Unit_Tests|running unit tests]]
 
** [[Testing#Unit_Tests|running unit tests]]
 
** [http://www.mediawiki.org/wiki/Gerrit/Advanced_usage review dependencies]
 
** [http://www.mediawiki.org/wiki/Gerrit/Advanced_usage review dependencies]
** Exercise: push a wip or draft and invite reviewers
+
** 練習: 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/15-branching-model.rst slides] )
 
** [[BranchModel|development]]
 
** [[BranchModel|development]]
 
** [[StableBranch|stable]]
 
** [[StableBranch|stable]]
** Exercise: checkout the latest stable branch
+
** 練習: 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] )
 
* [[GerritJenkinsGit#Reviewing_a_Change|reviewing]]  ( [https://github.com/openstack/training-guides/blob/master/doc/upstream-training/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] )
 
* [[GerritWorkflow#Committing_Changes|writing a commit message]] ( [https://github.com/openstack/training-guides/blob/master/doc/upstream-training/17-commit-message.rst slides] )
 
** reference to a bug or a blueprint
 
** reference to a bug or a blueprint
 
** amending a commit message
 
** amending a commit message
** Exercise: review each other messages on the draft
+
** 練習: review each other messages on the draft
 
* [[GerritJenkinsGit|jenkins]]  ( [https://github.com/openstack/training-guides/blob/master/doc/upstream-training/18-jenkins.rst slides] )
 
* [[GerritJenkinsGit|jenkins]]  ( [https://github.com/openstack/training-guides/blob/master/doc/upstream-training/18-jenkins.rst slides] )
** Exercise: add an error and match it to the jenkins message
+
** 練習: add an error and match it to the jenkins message
  
 
== 第二天 ==  
 
== 第二天 ==  
  
=== The Contribution Process (1 hour) ===  
+
=== The Contribution Process ( 1 小時 ) ===  
  
 
  ( [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/19-training-contribution-process.rst slides] )
Line 158: Line 158:
 
* Archive and collect.
 
* Archive and collect.
  
=== Agile for Contributors (15 min) ===  
+
=== Agile for Contributors ( 15 分鐘 ) ===  
  
 
  ( [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/20-training-agile-for-contributors.rst slides] )
Line 166: Line 166:
 
* Sprint review presentation to Upstream
 
* Sprint review presentation to Upstream
  
=== Contribution Simulation (2 hour) ===  
+
=== Contribution Simulation ( 2 小時 ) ===  
  
 
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.
 
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) ===  
+
=== Contribution Planning ( 2 小時  ) ===  
  
 
  ( [http://dachary.org/loic/openstack-training/training-student-project-sample.odp odp slides] [http://dachary.org/loic/openstack-training/training-student-project-sample.pdf pdf slides] )
 
  ( [http://dachary.org/loic/openstack-training/training-student-project-sample.odp odp slides] [http://dachary.org/loic/openstack-training/training-student-project-sample.pdf 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,
 
** the contribution they plan to work on during the online sessions,
** how they will engage with the Upstream,
+
** 學生將要如何跟上游 Upstream 合作
 
** how it contributes to the company's agenda
 
** 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 ===
 
=== Etherpad ===
  
 
https://etherpad.openstack.org/p/kilo-upstream-training-taiwan
 
https://etherpad.openstack.org/p/kilo-upstream-training-taiwan

Latest revision as of 10:07, 19 November 2014

引言

和來自全球 80 個不同公司超過 2000 位的開發人員, OpenStack 是目前最大型的軟體合作開發專案之一. 因為它的 size, it is characterized by a huge diversity in 規範和技術常規. These can significantly slow down the speed at which 新進人士 are successful at integrating their own roadmap into that of the OpenStack 專案.

我們已經設計了一系列的課程來幫助程式設計師和軟體開發人員來跨越貢獻時所遇到的障礙 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.

課程目標

  • 快速整合公司的產品線到 OpenStack 的發佈周期
  • 真正地成功將修正程式貢獻到一個 OpenStack 專案之中
  • 精熟貢獻開發的工具軟體
  • 了解如何貢獻到 OpenStack 專案的流程以及規範

目標學生

  • 開發者
  • 系統管理人員

課程所需知識

  • 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.

課程所需時間

  • 2 天實體課程
  • 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

課程大綱

第一天

Introduction

  • 在第一天的開始之前: choice of a contribution, via email, with each participant
  • 第一天: OpenStack 是如何產生出來的
  • 第一天: 學習和練習 git, gerrit, IRC
  • 第二天: 貢獻的理論基礎
  • 第二天: Lego contribution simulation
  • 第二天: Individual presentation of the contribution plan
  • 第二天: 線上指導

OpenStack 是如何產生出來的 ( 3 小時 包括 1 小時 30 分鐘的練習時間 )

Workflow of an OpenStack contribution and tools ( 3 小時包括 2 小時練習 )

第二天

The Contribution Process ( 1 小時 )

( 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 分鐘 )

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

Contribution Simulation ( 2 小時 )

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 小時 )

( odp slides pdf slides )


  • 學生使用範本的簡報檔來呈現一場五分鐘的簡報.
  • 範本簡報檔將由講師提供.
  • 每一組學生要準備簡報來呈現並描述:
    • the contribution they plan to work on during the online sessions,
    • 學生將要如何跟上游 Upstream 合作
    • how it contributes to the company's agenda
    • 而且他們要跟誰合作
  • 課堂上每一組學生呈現他們的簡報

Etherpad

https://etherpad.openstack.org/p/kilo-upstream-training-taiwan