| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Jede eigene Datei trug bislang den Vermerk "2020" — das Jahr, in dem das
Verzeichnis angelegt wurde. Von den neunundachtzig eigenen Dateien sind aber
vierundachtzig erst 2026 entstanden. Der Vermerk sagte damit nicht, wann das
Werk geschaffen wurde, sondern wann jemand zum ersten Mal etwas eincheckte; das
ist nicht dasselbe, und für die Schutzfristberechnung ist es die falsche Angabe.
Erhoben wird das Jahr nunmehr je Datei aus der Entstehungs- und der letzten
Änderungsbuchung. Neunundsiebzig Dateien tragen "2026". Fünf reichen wirklich bis
2020 zurück und werden bis heute fortgeschrieben (.gitignore, README.md, pom.xml,
AendGgner.java, logging.properties); sie tragen "2020-2026". Eine einzige Datei
ist seit 2020 unberührt geblieben, .mvn/maven.config, und behält ihren Vermerk
unverändert — sie war die einzige, bei der er von Anfang an stimmte.
Die Zuordnungsdatei wird entsprechend geschieden. Der Block, der maven.config mit
den drei übrigen kommentarlosen eigenen Dateien zusammenfasste, wird geteilt,
weil deren Jahre auseinanderfallen; die abgeleiteten Textfassungen und die
Herkunftsnachweise tragen 2026.
Damit der Bau die Berichtigung nicht sogleich wieder zunichte macht, tritt im
Kopfzeilenvordruck des Formatierers der Platzhalter "$YEAR" an die Stelle des
festen Jahres. Er nimmt hin, was in der Datei steht, statt allen Java-Dateien
dasselbe Jahr aufzunötigen.
Geprüft: 350 Tests, REUSE 188/188, spotless:check ohne Beanstandung und
spotless:apply ohne Änderung.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Change-Id: I876adf0a4ce63c198e0e549d7c976310e2a3a3ee
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Das Erzeugnis steht seit seinem ersten Tage unter der GNU Affero General Public
License. Ausgesprochen war das indes nur an drei verstreuten Stellen: im
Lizenzvolltext „COPYING“, in einem Satz des Impressums und in einer Bemerkung der
Datei „.gitattributes“. Keine einzige Quelldatei nannte ihren Urheber oder ihre
Lizenz. Wer eine Datei für sich betrachtet — und so betrachtet sie jeder, der sie
übernimmt —, fand daran nichts.
Maßstab ist die REUSE-Spezifikation in der Fassung 3.3. Das Verzeichnis
„LICENSES“ nimmt die Wortlaute auf: die AGPL in der Fassung 3 oder später, die
Apache-Lizenz für den unverändert mitgelieferten Maven-Wrapper und
„LicenseRef-AmtlichesWerk.txt“. „COPYING“ bleibt an seiner Stelle, tritt aber als
symbolische Verknüpfung auf; der gewohnte Pfad trägt damit fort, ohne dass zwei
Wortlaute nebeneinander zu pflegen wären, und die Prüfung übergeht Verknüpfungen,
sodass für den Lizenztext selbst keine sachfremde Lizenzangabe zu erfinden war.
Die dritte Datei bezeichnet keine erteilte Lizenz, sondern hält die gesetzliche
Rechtslage des Prüfbestandes fest. Fünfundvierzig PDF-Dateien, fünf EPUB-Dateien
und die XML-Fassungen sind fremde Werke: Verkündungsblätter, Drucksachen,
Plenarprotokolle und Entwürfe des Bundes und der Länder. Sie sind nach § 5 Abs. 1
UrhG gemeinfrei, die ministeriellen Entwürfe und Synopsen nach § 5 Abs. 2, und
gleichwohl gebunden an Änderungsverbot und Quellenangabe nach §§ 62 und 63.
Ausdrücklich festgehalten ist, dass die technische Aufbereitung durch die
Rechtsportale kein eigenes Recht am Text begründet und dass der Bestand kein
„Corresponding Source“ im Sinne der AGPL ist — gebaut wird ohne ihn.
„REUSE.toml“ ordnet zu, was keinen Kommentar verträgt, und scheidet den
Prüfbestand nach Herkunft: Bund in Verkündung und Parlament, Bund in den
ministeriellen Entwürfen, gesetze-im-internet.de nebst der Aufbereitung durch die
juris GmbH, sodann neun Länder je einzeln. Die selbst abgeleiteten Textfassungen
tragen „AGPL-3.0-or-later AND LicenseRef-AmtlichesWerk“, denn der Wortlaut ist
amtlich, die Aufbereitung — Einrückung, Superskript-Satznummern,
Gliederungsüberschriften — eigene Arbeit. Maßgeblich für die Fundstelle der
einzelnen Datei bleibt die Datei „SOURCES“ des jeweiligen Verzeichnisses; die
Lizenzdatei nimmt sie in Bezug, wie es § 63 UrhG verlangt.
Die übrigen Dateien tragen ihre Angabe in sich, im jeweils üblichen
Kommentarstil, vor dem vorhandenen erläuternden Text und ohne diesen anzutasten.
„mini-gii.xml“ und „.mvn/maven.config“ bleiben bewusst unberührt und erhalten
stattdessen einen Eintrag: Ersteres liest der GiiXmlLoader, Letzteres Maven vor
jedem Bau. Ein Ausrollwerkzeug hinterließ mit „.wrangler“ ein Zwischenverzeichnis
im Arbeitsbaum; es ist fortan übergangen.
Die Java-Dateien und die Angleichung der Lizenzaussage folgen gesondert. An
diesem Stand bestehen dreihundertfünfundzwanzig Testfälle unverändert; am
Verhalten des Erzeugnisses ändert sich nichts.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Change-Id: Id08e26d8e15545b2d00dd3d4fa7ffca86cf14944
|
|
|
Die Browserfassung soll künftig über Cloudflare Workers gehen, und dort gilt
eine Grenze von 25 MiB je Datei, unkomprimiert gemessen. Zwei der
ausgelieferten Dateien standen dem entgegen: Das Quelltextarchiv maß 29,7 MB
und war damit schon nicht mehr hochzuladen, das Wasm-Modul mit 24,5 MB zu
achtundneunzig Hundertsteln der Grenze und ohne jeden Spielraum.
Das Archiv war ein ungefiltertes „git archive“ des Repositoriums, und über
fünfundneunzig Hundertstel davon waren die Beispiel-PDFs. Der Quelltext selbst
misst keine dreihunderttausend Zeichen. Die Gesetzes- und Drucksachentexte sind
fremde Werke, an denen allein die Tests messen; sie sind nicht der Quelltext,
aus dem sich das Ausgelieferte herstellen ließe, und die Auflage des AGPLv3 § 13
verlangt sie deshalb nicht. Sie sind aus dem Archiv genommen, und
„quelltext-fassung.txt“ sagt fortan, dass sie fehlen, warum sie fehlen und wo
sie vollständig liegen. Damit dies nicht stillschweigend zurückfällt, bricht
„webpaket.sh“ ab, sobald das Archiv acht Mebibyte überschreitet, und ebenso,
wenn irgendeine ausgelieferte Datei die Grenze der Zielplattform reißt: Lieber
hier auffallen als beim Hochladen.
Der Korpus lag überdies unter „src/main/resources“ und wanderte deshalb in
jedes Erzeugnis: in das Klassenverzeichnis, in die ausführbare Archivdatei —
achtundzwanzig Megabyte für ein Werk von sechshundert Kilobyte Java — und auf
den Klassenpfad des Übersetzers, dessen Ressourcentabelle die Verzeichnisnamen
bis ins Wasm trug. Er liegt nunmehr unter „src/test/resources“, wo er hingehört,
und ist von der Kopie nach „target/test-classes“ ausgenommen: Die Tests lesen
ihn über Dateisystempfade, eine Kopie wäre bei jedem Bau fünfunddreißig
Megabyte umsonst.
Das Modul wiegt statt 24,5 nunmehr 17,2 Megabyte; komprimiert geht es mit 5,5
statt 7,1 Megabyte über die Leitung. Vier Ursachen liegen dem zugrunde. Der
Picocli-Annotationsprozessor meldete die Befehlszeilenklasse mit sämtlichen
Methoden zur Reflexion an, worauf die Erreichbarkeitsanalyse die ganze
Befehlszeilenfassung samt Dateizugriffen in ein Bild zog, in dem es keine
Befehlszeile gibt; im Profil „wasm“ läuft er nicht mehr, und eine von einem
früheren Lauf liegengebliebene Konfiguration wird vor dem Übersetzen entfernt,
damit die Größe nicht davon abhängt, was vorher lief. Der Ressourcen-Glob
„org/apache/fontbox/**“ bettete 3,3 Megabyte ostasiatischer CMaps, die
Schrifttabelle „Scripts.txt“ und — weil zwei Sterne auch Klassendateien treffen
— 0,7 Megabyte „.class“-Dateien ein, von denen ein deutsches Gesetzes-PDF nichts
braucht; geblieben sind die beiden Identity-CMaps. Die Metriken unter
„org/apache/pdfbox/resources“ bleiben vollständig, denn an ihnen hängt die
Breitenberechnung bei nicht eingebetteten Schriften. Übersetzt wird mit „-Os“,
und den Rest holt „wasm-opt -Oz“ im Webpaket.
Dessen Merkmale sind einzeln aufgezählt und nicht als „--all-features“ erteilt.
Der bequeme Weg war gangbar und führte doch ins Leere: Binaryen nutzte
daraufhin Vorschläge, die noch kein Browser annimmt, und das Modul scheiterte
erst beim Instanziieren — erst an einem exakten Heap-Typ aus den „custom
descriptors“, nach dessen Abschaltung an der kompakten Importsektion. Zugelassen
ist nunmehr, was ausgeliefert in den Browsern steht und was Web Image braucht.
Die Vorkompression nach „.gz“ und „.br“ entfällt als Regelfall, denn Cloudflare
komprimiert selbst und jede Beilage wäre dort eine weitere Datei; wer mit nginx
selbst ausliefert, fordert sie mit VORKOMPRIMIEREN=1 an. Das
Auslieferungsverzeichnis fällt damit von achtundsechzig auf siebzehn Megabyte,
und ein liegengebliebenes „.DS_Store“ geht nicht mehr mit hoch.
Dreihundertfünfundzwanzig Testfälle bestehen. Das Modul ist im Browser
gelaufen: Vier Dokumentenpaare — IfSG, UWG, AGG und das Bayerische Jagdgesetz,
also gii-XML wie PDF als Stammfassung, Bundesgesetzblatt, Drucksache und
Gesetz- und Verordnungsblatt als Änderungsdokument — ergeben Synopsen, deren
SHA-256-Summen denen der Befehlszeilenfassung gleichen. Der Ressourcenbeschnitt
kostet also keine Zeichen.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Change-Id: I31a47d1dcf3b27ffa4ae891947b1c4e083107a71
|