Outreach programs/LevelUp

Starting in 2013, every individual contributor in WMF Engineering has a quarterly goal: either to get more domain knowledge in a particular area and become a regular contributor and mentor in that area, or to coach a particular mentee to gain knowledge and maintainership (such as +2 privileges on a repo). So, some WMFers coach other WMFers, and some coach volunteers. Sumana helps matchmake and find volunteers (including via programs like Google Summer of Code and the Outreach Program for Women), and your manager checks in with you about your progress during your regular one-on-one or status meetings.

We will track mentor-mentee relationships using this matchmaking table. During the matchmaking, we'll consider this table of who knows the most about all the components of Wikimedia's codebase and infrastructure, including MediaWiki core, extensions deployed on Wikimedia sites, and our server architecture. As it grows, this table will highlight the extension update frequency, number of high-priority open bugs, and potential new maintainers (including recent committers) and mentors. (Sumana Harihareswara helps with matchmaking.)

You can learn by reviewing code and hacking with your mentor, and you can teach by metareviewing your mentee's code reviews, pair programming, and so on.

Sumana predicts that, at the end of 1 quarter of this (March 2013), our code review backlog will be about the same as it is now (statistics). But after 2 quarters, it'll go down, because we'll have more confident reviewers and maintainers. And every developer and sysadmin will benefit because you won't have to wait as long to get things done.

Schedule

 * 1) November-December 2012 January 7-11: matchmaking
 * 2) January-March 2013: mentorship, managed by WMF staffers and their managers as part of personal goal-setting, and overseen by Engineering Community Team
 * 3) March 27 & 29 2013: IRC chats: retrospective & adjustment for future rounds; matchmaking for next round
 * 4) April-June 2013: mentorship, managed by WMF staffers and their managers as part of personal goal-setting, matches made by Engineering Community Team

Goal-setting
It works best when you set a specific goal (such as "being able to do a design review of a new extension" or "being able to review API patches" or "being able to reproduce and triage bugs in the search components"), and check in twice a week to see whether you're making progress.

How is this different from 20% time?
This is the replacement for 20% time.


 * It's quarterly, not weekly
 * It permanently increases our community engineering capacity
 * It grows you as a technical leader
 * You report to your manager, not Sumana; Sumana checks in with your manager
 * Ideally, this includes QA, design, product management, and engineering community staff (although skillsharing there won't revolve around maintainership)

Opting out
If you prefer to opt out of LevelUp, you can simply spend 1 day a week doing design and code review for new extensions, fixing bugs that affect everyone, increasing test coverage, or something else that helps the whole community. But we'll request that you concentrate on key parts of our infrastructure that currently aren't getting much love, as indicated in the maintainership table.

Maintainership
We need more maintainers who take care of WMF-deployed components. Each maintainer is committing to:


 * 1) Merge reviewed code into the release or deployment branch
 * 2) Resolve bugs which require shell access or develop reviewed task lists to let volunteers easily handle them
 * 3) Pair up with volunteers on code review, bug fixes or general development, to build skills/capacity
 * 4) Review code, in Git, Bugzilla, to ensure the backlog doesn't exceed an acceptable maximum
 * 5) Perform complex branch reviews and branch merges
 * 6) Perform design reviews or UX testing of community-developed projects/improvements
 * 7) Update public wiki pages, document/share data, and otherwise contribute to making WMF engineering work transparent regarding that component
 * 8) Engage in discussions, especially beyond simply being responsive and available

Less frequently, a maintainer ought to:


 * 1) Ongoing bug fixes & bug triage support
 * 2) * E.g. 1.19 deployment blockers
 * 3) Increase test coverage
 * 4) Build documentation or examples explaining how to use the MediaWiki code

Those secondary tasks may be more suitable for newly hired or junior contributors, especially when paired up with experienced maintainers. But our goal is for each volunteer or staffer to learn to do the more crucial tasks as well.

LevelUp is not a replacement for fully dedicated effort supporting MediaWiki deployments, code/security review, QA, etc. Instead, it is intended to ensure that we grow our capacity for tasks which are mission-critical to Wikimedia's success more broadly.

Exemptions

 * Site emergencies
 * Part-time engineers
 * Fundraiser tech team during the second half of the calendar year