docs(adr): propose a licensing standard by provenance (ADR-0017) - #522
Merged
Conversation
The organization has no written licensing policy. Nothing in decisions/, runbooks/, AGENTS.md, or PATTERNS.md selects a license, and new-repository.md bootstraps a repository without choosing one. The intent that GPL-3 is the standard exists only as unratified preference, which is the failure mode ADR-0013 opens with. A survey of eleven repositories on 2026-08-17 found six on MIT against that intent. Two of them carry third-party copyright and can never comply: zunit is Copyright (c) 2016 James Dinsdale and zsh is Copyright (c) 2019 zsh-packages. A blanket rule marks them permanently non-compliant, which trains maintainers to ignore the finding. Propose three classes by provenance and consumption rather than one value: organization-authored code not loaded into a user shell requires GPL-3, organization-authored code sourced into a user shell is permissive by deliberate choice, and third-party forks retain the upstream license. Status is PROPOSED with Deciders TBD. Only a maintainer accepts, per runbooks/adr.md. Three open assignment questions are recorded rather than resolved, and the ADR relicenses nothing by itself.
Step 2 said only to use the organization-approved license for the artifact, pointing at a policy that does not exist. A repository therefore got whatever license the bootstrapping session happened to create, which is how six of eleven repositories ended up disagreeing with an intent nobody had written down. Replace it with the ADR-0017 selection table, a requirement to record the choice on the owning issue, and the two facts that make the decision hard to revisit later: a fork is never relicensed because the organization does not hold the copyright, and a published license grant cannot be revoked.
src is L1 and stays GPL-3. A compiled module is dlopened as a binary rather than combined as source with a user's script, so the ambiguity that justifies permissive L2 does not arise. Sharpen the L2 definition accordingly: the discriminator is source combination, not merely running in the shell process, which also removes shell modules from the L2 description. zd and zsh-lint relicense from MIT to GPL-3. Both are organization-authored, neither is sourced into a user shell, MIT permits sublicensing so no contributor consent is needed, and prior releases stay MIT. One question remains and blocks acceptance: whether z-a-meta-plugins and zsh-fancy-completions stay GPL-3 as documented L2 exceptions, or plugins are reclassified L1 and zi and zsh-eza move to GPL-3 instead.
This was referenced Aug 17, 2026
z-a-meta-plugins and zsh-fancy-completions stay GPL-3 as documented L2 exceptions. L2 sets a default, not a prohibition: an existing copyleft license inside L2 is preserved rather than reversed, because GPL-3 toward permissive is the direction that genuinely requires every contributor's consent, unlike MIT toward GPL-3 which MIT's own sublicense grant already permits. New L2 repositories still start permissive. That was the last item blocking acceptance. Status ACCEPTED, Deciders ss-o.
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.
Draft for maintainer review. Status is
PROPOSED,Deciders: TBD. Perrunbooks/adr.mdonly a maintainer flips an ADR toACCEPTED, and this ADR relicenses nothing by itself.Why
There is no written licensing policy. Nothing in
decisions/,runbooks/,AGENTS.md, orPATTERNS.mdselects a license, andrunbooks/new-repository.mdbootstraps a repository without choosing one. The intent that GPL-3 is the standard exists only as unratified preference, which is exactly the failure ADR-0013 opens with: a requirement that is real in intent and enforced by nothing.A survey of eleven repositories on 2026-08-17 found six on MIT against that intent. Two can never comply:
zunitisCopyright (c) 2016 James DinsdaleandzshisCopyright (c) 2019 zsh-packages. A blanket rule marks them permanently non-compliant, which is how a standard stops being taken seriously.What it proposes
Three classes by provenance and consumption rather than one value:
Under this,
zistays MIT on purpose rather than by drift,zunitandzshstop being violations, and onlyzdandzsh-lintare proposed for actual change.Three open questions, recorded not resolved
z-a-meta-pluginsandzsh-fancy-completionsare L2 by consumption but already GPL-3. Accept as documented exceptions, or reclassify plugins as L1 and moveziandzsh-ezato GPL-3 instead.srcis a compiled module, loaded like L2 but not sourced. It needs an explicit class.zdandzsh-lintare the only two proposed for relicensing.Note that relicensing is prospective only: MIT grants already made cannot be revoked, so published releases stay forkable under the previous license regardless.
.github/instruction-surfaces.jsongains the matchingdecision-0017surface;scripts/validate-agent-policy.pypasses.🤖 Generated with Claude Code