Course Description
Upstream University's training program, for both students and
professional developers, has a single goal: to train contributors in
contributing code or documentation upstream in a free software project.
The program begins with a 2-day group session, for up to 20 participants,
where the basic concepts are introduced and analysis of each student's
contribution begins. Over the following weeks, each trainee is assigned
to work on the upstream project to get patches accepted. During this
period, he or she meets online, individually, and as often as possible,
with an Upstream University mentor, presenting the most recent
interactions, achievements, and problems to the mentor, who, as an
experienced contributor, then guides the student on the path of least
resistance to get the contribution committed upstream. After a few weeks,
in a retrospective session, the student's performance and the
effectiveness of the training are discussed.
Objectives
- To become familiar with contribution best practices.
- To work on a suitable task in a free software project, and submit code or documentation upstream.
- To engage the community around the free software project in order to get the submission accepted.
Target Audience
- Developers.
- System administrators.
Pre-requisites
- Being able to read and write English at a technical level.
- If contributing code, being technically proficient enouch 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: 14 one-hour individual mentoring sessions over a period of 4 to 10 weeks
Dates and location
- Please refer to the application form
Course Outline
Introduction to the Program
- Goal
- Training format
- Pre training
- Live training
- Morning of the first day
- Afternoon of the first day
- Mentoring sessions
- Retrospective
The Contribution Process
- Take the pulse of the project
- Figure out who's behind it
- Determine the project's social groups
- Assess your approach
- Figure out the contribution process
- Learn and install the tools
- Engage immediately
- Play with your network
- Choose your contribution
- Perform the smaller tasks
- Grab the bug/feature
- 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
- Go from easy to difficult
- Learn why a blueprint is important
- Advocate for the blueprint
- Archive and collect
Agile for Contributors
- Agile manifesto
- Apply agile
- Who is the customer?
- Company and Upstream product owner
- Contributor and mentor
- Company and Upstream scrum master
- Company and Upstream team member
- What is the product?
- Sprint planning and review
- Guess the Upstream product backlog
- Upstream bugs and feature requests
- Think the Upstream sprint
- Upstream and company reconciliation
- Upstream daily meeting and mentoring
- Sprint review presentation to Upstream
- Retrospective
Contribution Simulation
- The students make a virtual contribution simulation using Lego bricks as props, with the goal of expanding a Lego town, built by upstream, in four sprints. They are divided into teams; the teacher is by turns the product owner in the company and the upstream.
Contribution Planning
- The students use template slides to prepare a 10-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,
- why it matters to their company,
- and whom they will be working with.
- Each student group presents its slides to the class.
Contribution Role Playing
-
An interactive discussion where students play the role of either the
Upstream, the contributor, the manager, or a team member. The
teacher proposes the following scenarios and explains how they are to
be dealt with:
- contributing a small change,
- contributing a big change,
- upstream is unresponsive or unavailable,
- the project has bad or inexistent documentation,
- upstream rejects the patch,
- the project is unfamiliar,
- making an urgent temporary fix versus a larger contribution.
First Online Mentoring Session
- All students are online, using IRC.
- They are each given a private project space on the Upstream University website.
- The slides presenting their planning contribution are uploaded to their shared space.
- The mentor connects to IRC and explains how the online mentoring session will go.
- The teacher helps the students out during this first online mentoring session, to remove any blocks.
- An appointment is made with each student for the next online mentoring session.
Online Hour-Long Mentoring Sessions
-
Individual 1-hour daily online mentoring sessions, to discuss the students' efforts and analyze the best way forward:
- 15 minutes: the student exposes what they've done since the last meeting and what is next.
- 45 minutes: the mentor helps them resolve problems or improve the contributions.
- The number of training sessions varies according to the ability of the student to get his or her contribution(s) accepted.
- The last session consists of a retrospective of the whole training, with the objective of distilling what was learned.
Pricing
The course is offered in two different types of sessions, tailored and priced accordingly.
Individuals
These sessions are offered free of charge for anybody who wants to apply
independently of their organization. These types of sessions will be
organized by Upstream University periodically, pending available
resources.
Professional Developers
These sessions are targeted at organizations that want to optimize their
developers' contributions to a particular project. Private or public
(i.e., with multiple teams) sessions can be organized, depending on
demand.

