Repository navigation
Conversation
Assumes RFD #59 is accepted, and lands item 1 of its implementation outline: the governance-repo share of the work. The other five items belong to other repositories and need their own pull requests. Nebari's governance was written for Classic, a single monolithic platform shipped from one repository. It granted org-wide commit to Contributors and org-wide management to Core, assumed one roadmap, and had no concept of a contract between the core and the packs. None of that survives contact with the current architecture. New documents: - GOVERNANCE.md: stewardship (company-led, said plainly), scope, teams and roles on least-privilege per-repo access, the two decision lanes, and the clause making this governance amendable only by platform RFD. - pack-policy.md: official and community tiers, pack maturity as orthogonal to tier, and the NebariApp contract. Records what does not exist yet: no community-pack catalog, no community-to-official promotion process. - repository-standards.md: Apache-2.0, branch protection split into required and deliberately-recommended, required files, docs layout, shared label and EffVer conventions, and honest limits on enforcement. - trademark-and-naming.md: reserves "Nebari" as a name or prefix while leaving "for Nebari" and "Nebari-compatible" always available. Changed: - LICENSE relicensed BSD-3-Clause to Apache-2.0. Text is byte-identical to nebari-operator's, so the org's license files match. The copyright holder is left as "Nebari development team" rather than changed to OpenTeams; see the pull request for why that needs a human decision. - roadmap.md is now a thin platform roadmap covering cross-cutting direction only, since detailed roadmaps now live per-repo. The Classic yearly roadmaps are archived in place with a banner. - CODE_OF_CONDUCT.md and coc_details.md narrow scope to nebari-dev org spaces, offering the CoC as a recommended default downstream rather than imposing it. - README.md is rebuilt around the new structure, including a table of which governance material deliberately lives elsewhere. - AGENTS.md is updated for all of the above, and gains the rule that everything here is normative and needs an authorizing RFD to change. The RFD lifecycle reconciliation is policy-only here. It maps each status value to exactly one label, but the RFD issue template that carries those values is synced in from nebari-dev/.github and cannot be fixed in this repository; a companion pull request handles that. Also fixes three pre-existing broken links found while verifying: the committee link in CODE_OF_CONDUCT.md pointed at the wrong directory, and the archived 2023 roadmap had a wrong table-of-contents anchor and a reversed markdown link.
LICENSE is synced into this repository from nebari-dev/.github too, which the previous list missed. That matters for the relicense in this branch: changing LICENSE here alone does not stick, and changing it upstream relicenses every repository in the same sync group. Also records the reverse case. CODE_OF_CONDUCT.md is not synced into this repository, so the copy here is canonical and editable, but nebari-dev/.github keeps its own copy that is pushed to the other repositories, so a change made here does not reach them. Points at .github/sync.yml upstream as the authority rather than listing paths that can drift.
RFD #59 asks for the RFD status vocabulary to stop drifting, but the vote itself had the same problem one level down: the process said "more than half of Core votes yes" without saying what a yes looks like, who is in the denominator, or what happens when the decision is taken in a meeting. Working through a live tally on RFD #59 turned up all three gaps. Two reactors were Core members absent from the core-team GitHub team, so the roster and therefore the threshold were both wrong. A meeting had reached consent weeks earlier but left no trace on the issue, so it could not be recorded honestly afterwards. And half the reactions were hearts, which the written process does not mention, making the count either 1 or 4 depending on who read it. Records the decisions: hearts and thumbs-up both count, other reactions do not, bot accounts are excluded from the denominator, the GitHub team is the authoritative roster, and a synchronous decision has to be written onto the issue with the date and who was present or it does not count. The test is whether a stranger can reproduce a tally from the issue alone, months later, without asking anyone what was meant.
The relicense to Apache-2.0 initially kept "Nebari development team" from the old BSD notice, because changing the named holder is a legal assertion rather than an editorial one and wanted a human decision. That decision is to name OpenTeams, matching the rest of the organization. The year range covers this repository's authorship, 2020 to 2026, carried over from the BSD notice it replaces. Worth noting the organization is not actually consistent here, so this picks a form rather than matching a convention: nebari-operator says "Copyright 2026, OpenTeams", nebari-infrastructure-core says "Copyright 2025-2026 OpenTeams", and software-pack-template still has the unfilled Apache placeholder, "Copyright [yyyy] [name of copyright owner]". This follows the infrastructure-core form. The template's placeholder is a separate problem worth fixing on its own, since as written its LICENSE assigns copyright to nobody. The license text remains byte-identical to nebari-operator's apart from this line.
The standards claimed they are "delivered through the software pack template, so a new repository starts compliant". That is only true for packs. The required-files rule applies to every public repository in the organization, and there is no non-pack template, so repositories like this one, nebari-docs, and the terraform modules have nothing to inherit from. Splits the delivery path in two: new packs inherit the defaults, and everything else has the files seeded directly and is held to the standard by enforcement rather than inheritance. Names the asymmetry rather than letting the reader assume coverage that does not exist. Also records the open question of whether to stand up a non-pack template repository, which would close the gap for new non-pack repositories at the cost of another repository to maintain. Raised by @viniciusdc on RFD #59, which does not settle it.
Both came out of tallying RFD #59 and are now stated on the decision-making page, so they belong here too rather than only there. One Core member left both a thumbs-up and a heart, which a manual emoji count reads as two votes. Votes are per person. And "more than half" of ten was read as five. Five is a tie, not a majority, so the threshold is six. Worth saying outright, since the whole point of writing the mechanics down is that a stranger can reproduce the tally without re-deriving the arithmetic.
dcmcand
added a commit
to nebari-dev/.github
that referenced
this pull request
Sep 10, 2026
Syncing LICENSE meant one edit to this file relicensed seven repositories at once: nebari, nebari-docs, docker-images, governance, nebari-jupyterhub-theme, nebari-deploy, and nebari-demo. Relicensing nebari should be a deliberate decision about nebari, not a side effect of tidying up the governance repository. A license is a per-repository legal instrument. Templates and contribution guidance benefit from being shared; a license does not. Removing the entry stops the sync without touching the targets. deleteOrphaned is set on the ISSUE_TEMPLATE directory entry, not on this one, and it only applies to directory syncs, so no LICENSE file is deleted anywhere. Every repository keeps exactly the license it has today. The Apache-2.0 change in this commit's parent now applies to this repository alone. governance is relicensed in nebari-dev/governance#61. The remaining five keep BSD-3-Clause until each is decided on its own. CONTRIBUTING.md stays shared.
nebari-dev/.github#50 takes LICENSE out of the sync group, so each repository owns its own license instead of one upstream edit relicensing seven at once. Records both the current state and the pending change, so this stays accurate whichever way that PR goes.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Reference Issues or PRs
Implements #59, assuming it is accepted.
Note
RFD #59 was accepted on 2026-09-10, 6 of 10 Core voting yes. This is no longer
blocked on the RFD.
The relicense here needs nebari-dev/.github#50, which removes
LICENSEfrom the filesync so this repository owns its own. Until that merges, the next sync would overwrite
the LICENSE in this PR. The copyright lines in the two PRs are identical, so either
merge order works.
Stacked on #60, because it updates the
AGENTS.mdintroduced there. The base is set tothat branch so the diff here shows only this change; GitHub will retarget to
mainwhen#60 merges.
What does this implement/fix?
Put a
xin the boxes that applyMarked breaking because it removes organization-wide commit and management rights. Anyone
relying on blanket access will need a per-repository grant instead.
This is item 1 of six in the RFD's implementation outline: the governance-repo share.
Items 2 to 6 belong to
nebari.dev,nebari-operator,software-pack-template,nebari-infrastructure-core, and the organization settings, and each needs its own pullrequest.
New documents
GOVERNANCE.mdpack-policy.mdNebariAppcontractrepository-standards.mdtrademark-and-naming.mdThree things they deliberately do not do: restate the Pack Specification (it lives with
the operator), restate the release readiness checklist (it lives with the template), or
restate team membership requirements (they live on the website). Each is referenced instead,
so there is one copy of each fact.
Changed documents
LICENSErelicensed from BSD-3-Clause to Apache-2.0. See the question below.roadmap.mdis now a thin platform roadmap. The Classic yearly roadmaps are archivedin place with a banner rather than deleted, so existing links keep working.
CODE_OF_CONDUCT.mdandcode-of-conduct/coc_details.mdnarrow scope tonebari-devorganization spaces, and offer the Code of Conduct as a recommended defaultdownstream instead of imposing it.
README.mdrebuilt around the new structure.AGENTS.mdupdated, and gains the rule that everything here is normative and needs anauthorizing RFD to change.
Questions for reviewers
1. The copyright holder on the relicense.
OpenResolved: OpenTeams. The old BSDnotice said
Copyright (c) 2020-2022, Nebari development team.LICENSEnow readsCopyright 2020-2026 OpenTeams, keeping the authorship year range from the notice itreplaces. Flagging it for reviewers because it is a legal assertion rather than an
editorial change, not because it is still undecided.
Correcting something an earlier version of this description got wrong: the organization is
not consistent here, so this picks a form rather than matching a convention.
nebari-operatorCopyright 2026, OpenTeamsnebari-infrastructure-coreCopyright 2025-2026 OpenTeamssoftware-pack-templateCopyright [yyyy] [name of copyright owner]This follows the infrastructure-core form. Separately,
software-pack-templatenever hadits Apache placeholder filled in, so as written its LICENSE assigns copyright to nobody.
That is worth its own fix in that repository and is not addressed here.
2. The RFD template cannot be fixed here. The RFD asks for the template's status values
to be reconciled with the process labels.
GOVERNANCE.mdnow defines the canonicallifecycle, mapping each status to exactly one label. But
.github/ISSUE_TEMPLATE/RFD.mdis synced in fromnebari-dev/.github, so editing it herewould be reverted by the next sync. A companion pull request against that repository does
the template half.
3. Naming rules were specified as existing but did not. Section 7 is cited twice as the
home of the naming rules, and contains none. I wrote the reserve-the-name rule: community
packs must not lead with "Nebari" or use it as a product name, but "for Nebari" and
"Nebari-compatible" are always fine. Section 4's actual requirement is only that they "do
not imply official endorsement", so this is my reading of intent, not a quotation, and the
trademark holder should confirm it.
4. The RFD's example pack names do not match reality. It refers to
nebari-data-science-pack,nebari-mlflow-pack,nebari-lgtm-pack, andnebari-software-pack-template. The actual repositories aredata-science-pack,mlflow-pack,lgtm-pack, andsoftware-pack-template, with thenebari-prefix reservedfor platform components. The documents here use the real names, and the naming policy
records the convention as it actually is.
5. The Triage team was dropped without comment. Section 2 lists every team except
Triage, which exists on the website today with real members. Rather than silently deleting
it,
GOVERNANCE.mdfollows what the RFD does say about triage being granted per-repo, andrecords that existing members keep triage on repositories they are active in. Core should
confirm that reading.
6. The security baseline does not exist yet. Three documents reference it as a
Core-owned artifact, per the RFD, but there is no such document. Those references are
forward-looking. It is presumably part of the Pack Specification work in
nebari-operator.Testing
Documentation-only repository with no test suite, so there is nothing to add tests to. What
was verified instead:
heavily, and a bad anchor fails silently on GitHub. All 47 anchor links were checked
against the actual headings, including a corrected slug algorithm (GitHub does not
collapse repeated hyphens, which an earlier check got wrong).
AGENTS.md.nebari-operator's, differing only on thecopyright line, so the organization's license files genuinely match rather than being
separately typed.
Section 5 maturity revisions, and the required-versus-recommended split of the branch
protection settings.
Three pre-existing broken links were found during that verification and fixed, all in files
this pull request already touches: the committee link in
CODE_OF_CONDUCT.mdpointed at./coc_enforcement.mdinstead ofcode-of-conduct/coc_enforcement.md, and the archived2023 roadmap had a table-of-contents anchor pointing at the 2022 heading plus a reversed
markdown link.
Documentation
The pull request is documentation. Two follow-ups it creates:
repository-standards.mdrequiresMAINTAINERS.mdandSECURITY.mdin every public repository, and this one has neither.I did not add them, because both need real names and a real vulnerability-reporting route,
and inventing either would be worse than leaving the gap visible.
need rewriting (item 2 of the outline).
Access-centered content checklist
Text styling
H1or#in markdown).Non-text content
Verified mechanically: one
H1per file, no em dashes, no runs of more than three emojis.The only images are the existing logo block in
README.md, whose alt text is unchanged.Any other comments?
The documents try hard to distinguish three things the RFD is careful about and that are
easy to blur: what is required, what is recommended and deliberately not required
(signed commits, linear history, up-to-date branches, each with the reason), and what
does not exist yet (the community-pack catalog, the promotion process, the security
baseline). Where the RFD admits a gap, these documents admit it too rather than writing
around it.