12 KiB
OpenStack Upstream Institute Class Details
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. Attending a live class to get an insight of how the community operates and to learn about the insights and best practices can significantly increase 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 provide an interactive environment to newcomers where they can learn they ways of collaborating with our community. We are relying on the principles of open collaboration and describe and show how the 'Four Opens' work in OpenStack in practice.
The training has a modular structre by which it gives room to attendees with different job roles.
For example if you are a project or program manager it is very important for you to understand how the OpenStack releases are structured in order to be able to plan the roadmap for the product you are responsible for. You might also be interested in participating in Working Groups to actively participate in and influence the community in you areas of interest. The training helps you to find the information entry points you need.
If you are a developer we help you to find your way into the community to get your bug fix or feature accepted in the OpenStack project in a minimum amount of time.
The live one and a half day class teaches the students how to navigate the intricacies of the project's technical tools and social interactions and shows how they can collaborate with the community and find their place in the ecosystem.
After the training students have the possibility to sign up for a longer term mentoring to further stregthen the skills they've learnt during the training.
Objectives
- Understand the OpenStack release cycle to the level of being able to sychronize and integrate it with your product's roadmap
- Get to know the technical tools
- Understand the OpenStack contribution workflow and social norms
- Know where to find information, where and how to get help if needed
- Be able to identify and start a task (bug fix, feature design and implementation, Working Group activity and so forth)
Target Audience
- Developers/Software Engineers/Architects
- System administrators
- Project/Program managers/Product owners
Prerequisites to attend the class
- Being able to read and write English at a technical level
Recommendations to become an active community member
- For code and/or documentation contributions having at least 40% of your work time dedicate to the project, be it through programming or through interacting with the community
- For Working Group participation having at least 15-20% of your work time allocated for community activities
- 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
Duration
- Face-to-face section: 1.5 days
Infrastructure
We are providing a virtual machine with the necessary tools pre-installed in it. For further information about the system requirements on it please see the ref: prepare-environment section.
Course Outline
- Day 1: Introduction
- Day 1: How OpenStack is made
- Day 1: Learn and practice Git, Gerrit, IRC
- Day 2: The theory of contribution
- Day 2: Deep dive sessions
First day
Introduction
How OpenStack is made (3h including 1h30 exercises)
- Release
cycle
- Planning (Design, Discuss and Target)
- Implementation (Milestone iterations
- Pre-release (Release Candidates dance)
- Exercise: based on the Kilo release schedule find the URL of a document or a patch that belongs to each of the above steps.
- Relevant actors
- committers companies
- commiters individuals (bottom of the page)
- Your management
- OpenStack Governance
- Technical Committee
- The role of the Technical Committee
- OpenStack Project Teams
- OpenStack Project Teams list
- Meetings
- Exercise: read archived and briefly comment on keystone document
- PTLs
- APC
- ATC
- Exercise: each APC / ATC in the class add a URL to the etherpad proving it
- "Big
Tent" and tags
- OpenStack Project Teams
- List of approved tags
- Understanding the DefCore Guidelines
- Core Definition
- How to create a project
- Exercise: What kind of Program do you contribute to ?
- Design
summits
- Propose sessions
- List of sessions
- Liberty Summit Etherpads
- Exercise: Add a session proposal regarding your contribution in an etherpad, review two proposals
- IRC meetings
- IRC Services
- meetbot
- OpenStack IRC channels
- 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.#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
Workflow of an OpenStack contribution and tools (3h including 2h exercises)
- DevStack
- Ubuntu or Fedora
git clone https://git.openstack.org/openstack-dev/devstack
- minimal configuration
cd devstack; ./stack.sh
- Exercise: get the code for the targeted contribution
- How_To_Contribute
URL
- Puppet
- Documentation
- Training guides
- Exercise: Apply for individual membership and sign the CLA
- Launchpad
- Blueprints
- Bugs
- Exercise: review other launchpad bugs and improve yours
- How to contribute
- Developer’s Guide
- Account setup
- Git review installation
- Starting Work on a New Repository
- Development workflow
- Running unit tests
- Cross-Repository Dependencies
- Exercise: push a WIP or draft and invite reviewers
- Branching model
- Branch model
- Stable branch
- Exercise: checkout the latest stable branch
- Code Review
- Peer
Review
- Git Commit Good Practice
- Gerrit Documentation: Gerrit Code Review - A Quick Introduction
- Gerrit Documentation: Reviewing the Change
- Exercise: review each other messages on the draft
- Jenkins
(Automated testing)
- Exercise: add an error and match it to the Jenkins message
Second day
The Contribution Process (1 hour)
Overview of the contribution process
- 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