Add GOVERNANCE.md, and wire its stable-surface rules into the PR template - #92
graphicsMan wants to merge 1 commit into
Conversation
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## main #92 +/- ##
=======================================
- Coverage 93.0% 92.9% -0.2%
=======================================
Files 64 64
Lines 4991 4991
Branches 684 683 -1
=======================================
- Hits 4643 4637 -6
- Misses 348 354 +6 🚀 New features to boost your workflow:
|
|
where is this moving to? 🤔 |
49aa4fd to
eb8ebe6
Compare
|
Hi @andre-nguyen . I'm going to be transitioning from Meta, but I will retain maintainer rights on the repo. The goal is to move to a neutral org once we have done the Meta-side due diligence for that, perhaps in a month or two. So short term, repo is going nowhere. Long term the existing repo should continue to redirect to a new location, still TBD. |
c0befc5 to
65f9cb9
Compare
…late Documents roles, how changes get merged, what counts as the stable surface, neutrality, and how people join and leave. Written now rather than later because the project is mid-transfer to a neutral organisation, and the case for a neutral organisation over a foundation rests on having a written governance model plus at least two maintainers who do not share an employer. That argument is easier to evaluate against a document that exists. The pull-request template gains a Stable surface section so the classification driving those rules is collected from the author when the change is proposed, rather than reconstructed at review time.
65f9cb9 to
41be92a
Compare
|
@SeaOtocinclus @EscapeZero — flagging this rather than requesting review This is the project's first
Two things I would especially like challenged:
Timing, so it is not a surprise: I leave Meta on Friday 2026-09-04, and my No rush on my account — it is about 900 words and better reviewed than rushed. |
Adds
GOVERNANCE.md— roles, how changes get merged, what counts as the stablesurface, neutrality, and how people join and leave — and extends the pull
request template so the classification those rules turn on is collected from the
author rather than reconstructed at review.
Written now rather than later because the project is mid-transfer to a neutral
organisation, and the case for a neutral organisation over a foundation rests on
having a written governance model plus at least two maintainers who do not share
an employer. That argument is easier to evaluate against a document that exists.
Deliberately short — under a thousand words. A project this size does not need a
foundation charter, and an over-specified process nobody follows is worse than a
brief one describing what actually happens.
Worth review attention
Two routes to merging. A pull request merges either on approval from a
committer other than its author, or — if its author is a committer — after 24
hours open with no objection. The second route exists because review capacity is
uneven: for long stretches one person writes most of the changes, and demanding
a second signature on each converts a right to review into an obligation to
review. An unresolved objection blocks either route; an author cannot resolve an
objection to their own change, but the active maintainers can by consensus.
The stable surface, and what additions cost. Public API and ABI, default
behaviour, and documented concurrency guarantees are stable; undocumented
scheduling and internal threading are not, and change routinely. A compatible
addition follows the ordinary rules — this library grows by adding utilities and
gating that would be pure friction. But an addition that could reasonably be
expected to break existing documented use counts as an alteration, since in C++
a new overload can change overload resolution and a new virtual can change a
vtable. The test is reasonable expectation, not bare possibility.
72 hours, measured against a release. Altering or removing something present
in the most recent tagged release needs a maintainer as author or approver and
waits 72 hours on the notice route, because downstream builds against what a
release promised. Something added since that tag is unreleased, nobody could
have depended on it, and ordinary rules apply.
Neutrality that an independent maintainer satisfies. At least two
maintainers must not share an employer. Phrasing it as "employed by different
organisations" would have excluded an independent maintainer and left the
project failing its own test against the roster printed directly above it.
Seats belong to individuals, not employers, and do not lapse on a job
change. An organisation that depends on dispenso may propose a candidate when
its perspective goes unrepresented — a right to be heard, not a right to a seat.
Administrative access is custodial. Organisation ownership, and the Meta
infrastructure accounts that hold admin while the project sits under
facebookincubator, carry no decision-making authority. Without this thedocument would describe three seats while the repository shows eleven
collaborators, and leave the difference unexplained.
On the roster
Pierre Moulon and Michael Ranieri have both agreed to take seats. Pierre is a
maintainer, which is what makes the two-employer requirement true rather than
aspirational. Michael is a committer rather than a second Meta maintainer,
deliberately: it adds review and merge capacity without putting one employer in
the majority of maintainer seats while the transfer is still being evaluated. He
can be proposed as a maintainer later by the ordinary route.
Affiliations describe the post-transfer state, and the roster is explicitly not
part of the amendment procedure — keeping it current should not require
unanimous approval.