Land the licence entry one names - #197
Merged
Merged
Conversation
Record 0018 answers entry one of #46 with GPL-3.0, one licence for the runner and the experiment content alike. #47 is the change that lands the file, sets what this repository declares to its own checks, and takes the documents that name the old licence with it. LICENSE is the canonical text from the Free Software Foundation, fetched rather than retyped, with the two lines of the appendix boilerplate the licence itself asks an author to fill in. A diff against the fetched text differs by those two lines and by nothing else. The conditional interactive notice further down is left as the canonical example, because it is for a program that does terminal interaction in an interactive mode and this runner does not. DeclaredLicence is spelled as the title line rather than as the SPDX identifier, and the constant now says why. The leg asks whether the file NAMES the declared licence, and the canonical text never writes an SPDX identifier anywhere in it, so a constant reading GPL-3.0 would refuse the very file it is about. What the spelling separates and what it does not is written at the constant: it separates this from the Affero licence the tree carried until now, and it does not separate version 3 from version 2, because both carry that title. The guard was proved by putting the old file back under the new declaration. The scan refuses LICENSE with licence-file-does-not-match-the-declared-licence and the run is red; the file this change lands makes it green, and the licence leg reports one subject examined instead of reporting that it was not asked. Five documents said the tree carried the Affero licence and would have been false the moment this landed, so they move with it rather than after it: the readme, the security policy, the operator guide, the promotion document and the supply-chain triage. Each of them also carried a sentence saying the declared licence was still empty and open on this issue, and that half is now answered rather than deleted. The supply-chain paragraph keeps the commits that restored the earlier file, because that history is true and is not what this change corrects. Means: the canonical licence text as bytes at the root, which is what the platform and every downstream reader parse, plus one Go constant in the package that already reads the file. It adds no language, no runtime and no dependency, and the leg that judges it and the fixtures that prove the leg bites already exist. Closes #47. Signed-off-by: Nils Lehnen <30603423+iderex@users.noreply.github.com>
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.
Closes #47
What this changes
LICENSEat the root is the GNU General Public License version 3, which is theanswer record
0018writes down for entry one of #46. The text was fetched fromthe Free Software Foundation rather than retyped, and the only departure from it
is the two lines of the appendix boilerplate the licence itself asks an author
to fill in:
Those two lines are the same two the file this replaces carried, so the
program name and the copyright line are unchanged by this. The conditional
interactive notice further down keeps the canonical placeholders, because that
notice is for a program that does terminal interaction in an interactive mode
and this runner does not, and filling it in would be asserting something that is
not true of what is here.
DeclaredLicenceis set, and it is spelled as the title line rather than as theSPDX identifier. That is forced rather than chosen: the leg asks whether the
licence file NAMES the declared licence, and the canonical text never writes an
SPDX identifier anywhere in it, so a constant reading
GPL-3.0would refuse thevery file it is about. The identifier is what the platform reports and what
README.mdsays; the constant is what the bytes at the root carry, and thecomment above it now says so along with what the spelling separates and what it
does not.
Five documents said this tree carried the Affero licence and would have been
false the moment this landed, so they move in the same change rather than after
it:
README.md,SECURITY.md,docs/operator-guide.md,docs/promotion.mdand
docs/supply-chain.md. Four of them also carried a sentence saying thedeclared licence was still empty and open on this issue, and that half is
answered rather than deleted. The supply-chain paragraph keeps the commits that
restored the earlier file, because that history is true and is not what this
change corrects.
Means: the canonical licence text as bytes at the root, which is the form the
platform and every downstream reader parse, plus one Go constant in the package
that already reads that file. It adds no language, no runtime and no dependency,
and both the leg that judges the file and the fixtures that prove the leg bites
already exist.
What failure it prevents
A public repository whose terms nobody can rely on. Until this lands the tree
carries one licence, the decision record names another, and the check that would
notice reports that it was not asked. Any of the three read alone gives a
confident and different answer, and the reader who is hurt by that is the one
deciding whether they may reuse something.
It also ends the state the licence leg was built to make visible. A run that
could not check the licence printed
NOT ASKEDand passed, which is the honestversion of a gap and is still a gap: nothing compared the file at the root
against anything at all. After this the leg examines one subject and a wrong
file is a red run.
What was run
At
d5bc879d7808b4b72212ee31118ed08e1cf0173e, from the root of the checkout:The leg this change exists to move, asked rather than assumed:
That test requires the opposite thing depending on whether a licence is
declared, so it passing here is not the same assertion it was passing before.
With the constant set, the run reports
the licence: 1 examinedinstead of theNOT ASKEDline it printed on the default branch.The guard was proved by breaking it, on the near miss somebody would actually
make. With the new declaration in place and the previous
LICENSEblob putback in the working tree:
The file this change lands makes the same run green. That is the one-character
version of this mistake: declaring the answer and forgetting the file, or
landing the file and leaving the old one in place.
This change removes no tracked path.
What this does not do
The repository metadata still reports the old licence at the moment this is
written, and that is not something this branch can move. The platform derives
that field from the bytes it finds at the root of the DEFAULT branch, so it
reads the file this pull request replaces until the merge:
The done-condition on #47 asks that the metadata report the chosen licence. It
is a detection rather than a declaration anybody sets, so it is read after the
merge rather than claimed here, and if it does not move the issue is not
finished by this change.
The declaration does not separate version 3 of this licence from version 2. Both
carry the same title, the comparison is a substring, and no reading of the file
closes that while it stays one. What guards the version is that the text was
taken from its canonical source, which is a sentence in the issue rather than a
check, and the comment at the constant says so rather than leaving a reader to
assume the leg is stronger than it is.
It does not place the commits made before it under these terms. Everything
committed until now arrived with no inbound terms at all. Record
0018says soand this file does not change it.
It does not touch
docs/decisions/0018-the-licence-of-this-board.md, whoseparagraph on the disagreement between the answer and the file is written as the
state before this change and names this issue as what ends it. It also leaves
the sentence in
docs/promotion.mdthat says entry three of #46 carries noanswer, which record
0020has since answered. That sentence is stale for adifferent reason than this change, it is a different topic, and it is not folded
in here.
This board has no second reader tonight. What stands in place of one is the diff
against the canonical text quoted above, the deliberate breaking of the guard,
and the full suite at the pushed commit.