Here’s my perspective from the communities I grew up in. I’ve been doing open source for 17+ years, most of it around Ruby, Rails, Rust, and Node, and my take is we’re over-engineering the gate. We have a small handful of people who’d qualify as CCs today. The vote mechanics aren’t a problem, how to get there is.
In every community I just named, becoming a core member works the same way. Ruby’s committer wiki literally says: “Send patches, send patches and send patches. Someday the core team will say ’OK, commit it by yourself.’” Rails tells you the same thing in their own way: act like a member of the team, and eventually the team invites you. Nobody applies. Nobody campaigns. You do the work and you get recognized. I’d be careful about writing a process that pretends it works some other way, because it doesn’t.
I’d drop self-nomination entirely. Plato said the city whose rulers are least eager to rule is the best governed. The people you actually want are busy doing the work, not asking for titles. Node requires a nominator and it’s never been a problem for them. If an anonymous contributor is doing great work and doesn’t know anyone yet, give them a simple way to request a sponsor and that covers it.
On requirements: I’m fine posting guidelines about what readiness looks like. I’m not fine posting hard rules. The second we publish “N PRs over M months,” people will show up to check boxes, and checking boxes doesn’t make you part of a team. Look at how the big communities handle it. Rails publishes nothing. Ruby’s is that one line above. Rust lists the qualities they look for and leaves the judgment to the team. Even Node, which documents more process than anyone, writes down how nomination works, not a bar you can farm. The judgment stays with the team everywhere, and it should here too.
Whether we publish our reasoning on a yes or a no depends on which way this goes. If nominations only come through existing CCs, the pool stays small and serious, and I’m happy for us to explain every decision. If we keep open self-nomination, no. Nobody owes a public verdict to every person who fills in a form.
Now the part I think matters most: tiers, and grading who has access to what. Rails runs a tight Core, a wider Committers group, and an even wider Issues team doing triage, first responses, and docs. Their own site notes that everyone on their core team came up through the lower teams. That’s not an accident, it’s the whole design. The lower rungs are where you watch people work, where they learn the norms, and where the next core members come from. Most of the people this program should attract don’t need anywhere near the keys, and that’s fine, because the tier is the relationship, not the access.
And even within a tier, none of these communities hand out keys as a bundle. In Node, collaborators get commit and CI access, but the release signing keys live with a small releasers team, and the TSC is a different thing again. In Ruby, a commit bit doesn’t let you touch the language, spec changes still need Matz, and the standard library has named maintainers per module. Access follows the specific job, never the title. The TIP’s scoped grants section already points this way, and I’d make it the backbone of the program instead of a detail: every grant should answer “what exactly can this person touch,” and moving up should mean a change in trust and responsibility, not a jackpot of keys. Do that, and the size debate upthread mostly dissolves. The sensitive center stays small no matter how wide the program gets, and the council vote is a separate question from access altogether.
And the program doesn’t start at zero. We already have a core contributor team, and they were doing this work before the charter existed. The adopting motion should name them as founding CCs, grants and sponsors listed, same rules as everyone who comes after. Rust seeded its first teams from the people already doing the work. Node’s first TSC came from the existing committees. And if nominations require a CC, someone has to be first anyway.
I know Tari Labs concentration came up earlier in the thread. For what it’s worth, this is what every young project looks like. Shopify pays a whole team to work upstream on Ruby and Rails. Matz was at Heroku for years. Sponsored contributors are the norm everywhere, and the fix is disclosure plus a real pipeline, not pretending otherwise.
The TIP’s skeleton is fine. I just want less election machinery, more farm system.