↓ Skip to main content

Maintainer, mentor, manager: why I fund contributors before programs do

Maintainer, mentor, manager: why I fund contributors before programs do
Table of Contents

Formal open source programs run on their own calendar, and promising contributors are often ready before the next cycle opens.

I write this for contributors and mentees -- past, current, and future -- from the side of the table I sit on most days. Most of that time goes into maintaining open source projects, mentoring contributors, and eventually managing the people path that sits on top of that work. The order matters to me because I learned the hats in sequence: maintainer, then mentor, then manager. Sponsorship is optional in that sequence -- I use it as a bridge when someone is not yet eligible for the next formal yes, and the potential is already obvious.

Maintainer, mentor, manager
#

Being a maintainer is the unglamorous middle of the path. You review patches, keep releases moving, push back when scope starts creeping, and generally make sure the project remains usable for people you may never meet. It is not always the most visible work, but without it mentorship is mostly theater -- there is nothing solid for someone to grow into.

Once you can hold that commons, mentoring becomes the natural next step. Programs like Google Summer of Code pair experienced maintainers with contributors for a defined project. The work is still code review and judgment, and you add pacing, feedback, and help covering the distance between shipping a PR and owning a workstream.

The path is aiming somewhere beyond a single summer. Mentoring one contributor through a program is not the same as making room for people: internships, owned workstreams, a consistent public track record that can become a real role.

Maturity along the path
#

The section above is about the hats on my side of the table. On the contributor side, what I watch for is maturity: the skills that make mentoring cheap and ownership possible. I think of it as a soft ladder rather than a gate exam -- Foundations, Mentorship-ready, Trusted contributor, Ownership, then Hire-ready. People skip rungs all the time, and that is fine. Sponsorship tends to make sense for someone already strong in the middle of that list, with clear potential toward the end.

Foundations
#

Ready to contribute at all:

  • Working English for issues and PRs: clear, polite, and specific enough that a stranger can act on it
  • Git and GitHub basics: clone, branch, commit, push, pull; issues, PRs, reviews, CI status, and labels
  • Consistent online identity across the platforms where you contribute: same name or handle where it helps people recognize you, a professionally looking avatar, and public profiles that a stranger can find and trust
  • Contributing guidelines and project norms: treat CONTRIBUTING as the contract (not optional reading), follow code style, commit messages, branch naming, and respect the project license plus any CLA or DCO requirements
  • Issue and PR hygiene: search before opening an issue, link related issues and PRs, fill templates in fully, remove the leftover instruction blocks, note follow-ups, and close or update when done so threads are not left half-finished in silence
  • Async-first habits: write enough context that a busy maintainer can reply later without a live call, and plan work knowing you will not get instant replies across time zones
  • Working code that fits the existing codebase: ship something that works (AI-assisted or not) and stays consistent with local patterns
  • Self-checks before review: run the relevant tests (or add a small one when the project expects it), and do not treat "it works on my machine" as enough

Mentorship-ready
#

Ready to use a mentor without burning them:

  • Mature communication skills: meetings when they earn their place (come with agenda, status, blockers, and next steps), written updates by default, tell people early if you cannot make a recurring stand-up or community call, and use a mic that stays consistently clear so others are not straining to understand you or asking you to repeat
  • Clear PR descriptions: why the change is needed, what approach you took, and what you deliberately left out
  • Judgment on mentor and maintainer time: when to ask the mentor, when to put the question in the PR for review, and when to use community channels first
  • Fluent GitHub: batch questions in the PR thread, request re-review after a batch not each tiny push, close the review loop (reply, fix, resolve or leave open -- no style fights), rebase without wiping history, and skip the @-mention or chat ping for every small update
  • Community life beyond your own PRs: issues, discussions, and chat
  • Tests and long-term maintainability: care about more than getting the change green once
  • Short design notes before big code: so review is not archaeology

Trusted contributor
#

Ready for longer and harder work:

  • Advanced Git: long-lived feature branches, understanding merge versus rebase, bisect, clean history
  • Multi-PR or multi-week features: hold the thread across the work
  • Safe cross-cutting changes: migrations, API or config compatibility, and feature flags when the blast radius is real
  • Security and ops awareness where the project needs it: secrets, dependencies, privileged paths
  • Dependency and supply-chain judgment: when to add a library versus refuse the dependency, including spotting and flagging license incompatibilities or conflicts
  • Performance and cost awareness where the project cares: measure before "optimizing"
  • Review of others' PRs: useful depth, not a drive-by approve

Ownership
#

Manager-track signals: the work starts looking like you can own a real slice of the project:

  • Ownership of a slice of the codebase: bugs, a small roadmap for that area, and timely, specific, merge-oriented reviews
  • Unblocking others: triage, reproduce, route, or fix without waiting to be assigned every time
  • Outward representation of the project: strangers' issues, community chat, and the occasional "this is how we do X"
  • Help for a newer contributor who is stuck: a clear pointer, a review, or a short pairing session when it helps
  • Easier path for whoever comes after you: docs, onboarding notes, pairing on someone's first PR
  • Codebase improvements from contributor feedback: small changes that make developers' day-to-day work easier
  • Upstream dependency fixes: understand the issue well enough to fix it in the upstream repository instead of adding a quick workaround -- ugly or not -- in the project codebase
  • Independence that costs maintainers less time: take first-pass triage when you can, and leave a clear status instead of pinging for every small update

Hire-ready
#

Signals I watch for when a permanent role is on the table (not a job description, and not a guarantee):

  • Sustained reliability across months: not only a run of good PRs
  • End-to-end feature delivery: scope, implementation, tests, and follow-through until the work is actually done
  • Team tools and day-to-day workflow without hand-holding
  • Remote, async delivery: steady progress without a live queue of check-ins
  • Priority judgment under conflict: choose what keeps the project healthy and say what you are deferring -- do not silently drop either the feature work or the shared commons
  • Independent context: progress when the mentor does not hold the full scope in their head
  • Production-grade delivery: changes you would trust to ship, with the security and judgment the role actually needs

If Foundations and Mentorship-ready are in place, a formal program is usually a good fit. Trusted contributor and Ownership are what make me care more about the person than about waiting for the next cycle. Hire-ready is the point where a permanent role starts to look realistic instead of hopeful.

When they do not qualify yet
#

Sponsorship is the optional step between mentor and manager, and sometimes a way to keep offering mentorship to contributors who did not qualify for existing programs. It matters most when three things line up: someone does not yet qualify, the potential is already obvious, and the only real gap is timing. A GSoC rejection, a missed internship bar, a cycle that filled up before a strong contributor had the "right" number of merged PRs -- none of those mean the person should idle until next year's form opens. If the work already shows judgment, consistency, and the kind of reviewable patches that make a maintainer's job easier, waiting is how you lose them. I prefer to sponsor in those cases so the track record can keep growing while the program catches up.

How I fund that is not a secret grant program. Google pays participating organizations an organization stipend for accepted GSoC contributors. That stipend goes to the org, not automatically to the mentor, and orgs may disburse it to mentors at their discretion. Not every organization chooses to pass that GSoC mentorship stipend through to mentors -- OWASP does. When that stream reaches me, I use it to keep supporting people who are already showing up. The term is not always the same length as a GSoC internship, and the evaluations are stricter and more frequent. I use GitHub Sponsors as the payment vehicle, which is unfortunately not available in every contributor country.

Handling program rejection
#

One contributor hit the outcome every ambitious person on this path dreads: a GSoC rejection after real work on the way in. The rejection did not mean they did not belong on the project. It meant they did not get a seat in that cycle. Sometimes the selection constraints feel unfair -- slot counts, org quotas, and other rules that do not map cleanly onto how ready a person actually is. I have spent real effort trying to push those systems toward better outcomes. That work helps when it can, and it is not always enough: once a broader community and other parties competing for the same limited seats are in the room, a mentor cannot rewrite the process alone.

What I could do, and what I did, was sponsor them personally so their track record did not have to pause for a calendar. They kept shipping. The next cycle, they were accepted as a GSoC contributor, and they had already proven the harder thing: that they would keep building when the badge and stipend were not guaranteed.

If you are reading this after a rejection, the program is a forcing function, not the definition of your worth to a project. Keep the PRs honest. Find maintainers who notice a consistent track record. Ask for feedback that is specific enough to act on.

Track record, internship, job
#

Another contributor followed a different path to a similar outcome. They built a consistent track record of high-quality contributions -- the kind of reviewable, test-backed work that makes a maintainer's job easier instead of harder. I sponsored their open source work first. A paid internship followed outside that project, and that internship later converted into a permanent role.

That sequence is the quiet best case for open source mentoring: public work creates a reputation, reputation creates opportunity, and opportunity becomes a career step that is not named after a summer program. The internship helped, the track record started earlier, and sponsorship sat in the middle as a vote of confidence.

Funnel by the numbers
#

The hats are easier to talk about than to carry. Across open source projects I help lead and maintain, the work looks like a funnel from wide contribution contact down to a rare career outcome. People skip stages, and sponsorship and GSoC are not a fixed order for everyone, but the shape still holds:

Contribution funnel from 300+ contributors to 1 hire

Funnel data covers 2+ years of maintaining multi-organization open source projects in real-life usage (e.g. Open World Holidays Framework at roughly 30M PyPI downloads per month, OWASP Nest, and OWASP Nettacker).

  1. 300+ contributors I interacted with directly -- reviews, issues, mentoring threads, and the quieter follow-ups that never show up in a green square
  2. 20+ GSoC mentees across Google Summer of Code cycles -- defined projects, midterms and finals, and the week-to-week review load between those checkpoints
  3. 10+ sponsored contributors via GitHub Sponsors -- a bridge when a formal program seat was not yet available
  4. 1 hire -- a permanent role that grew out of that consistent track record of public work, sponsorship, and mentoring

That narrowing is the point. Most people stay in the wide end, and that is healthy. I use that shape to decide where scarce maintainer attention belongs, when optional sponsorship helps, and which mentoring relationships are worth a deeper investment.

What I want mentees to take from this
#

  1. Rejection is a date, not a verdict. Use it as a gap to widen your contribution record.
  2. Sustained quality beats a heroic application week. Maintainers remember the tenth solid PR more than the first flashy one.
  3. Sponsorship is optional, and it is a bridge. I use it when someone does not yet qualify and the work already shows potential -- sponsorship does not replace a consistent track record.
  4. Focus on the next concrete step, not on the program outcome. A maintainer can tell you what would make the next PR merge-ready. They cannot honestly promise you a program seat.

I still maintain, mentor, and manage when the room needs a people path, not only a review queue. I sponsor when I can for the cases where someone is ready and the program is not. Formal programs will keep being selective -- that is how they work. Open source projects get healthier when strong contributors are not forced to idle between cycles.

If you are in that gap right now, keep shipping -- mentors notice a consistent track record.

References
#

Related