Um die Übertragung im Netz zu beschleunigen, werden die in eine Website eingebettete JavaScript-Bibliotheken üblicherweise ‘minified’, also komprimiert: Leerzeichen, Zeilenvorschübe und Kommentare werden entfernt. Daher enthalten die Bibliotheken nur noch rudimentäre Lizenzinformationen — jedenfalls nicht den Lizenztext selbst. Aber alle FOSS-Lizenzen verlangen von uns, dass wir einige Compliance-Artefakte mit dem Code zusammen ausliefern — insbesondere den Lizenztext. Das ist die Herausforderung bei der Verwendung von JavaScript — in bootScore und anderswo.
Lösung
- Verwende die JavaScript-Bibliothek Bootstrap so, wie sie von bootScore bereitgestellt wird
- Verwende die JavaScript-Bibliotheken so, wie sie von WordPress geliefert werden
- Erstelle eine Tabelle mit den Informationen zur JavaScript-Konformität
- Erstelle für jede von bootScore oder WordPress gelieferte JavaScript-Bibliothek eine entsprechende Zeile in der JS-Tabelle.
- Binde diese Tabelle in Deine Open Source Compliance Page ein.
- Mache die Open Source Compliance Page über den ‘Footer’ Deiner Seiten zugänglich
Hintergrund
bootSCore enthält einige JS-Komponenten. Zum Beispiel seine eigenen entfalteten JavaScript-Bibliotheken1 — implizit lizenziert unter der MIT, aber ohne explizites Lizenzierungsstatement — und die minifizierte Bootstrap JavaScript-Bibliothek2 — durch ein entsprechendes Lizenzierungsstatement explizit unter der MIT-Lizenz gestellt. Aber keine davon enthält den Lizenztext selbst. Auch WordPress bringt einige eigene und einige minimierte JavaScript-Bibliotheken von Drittanbietern mit3, wie z.B. die jQuery-Bibliothek 4, die ebenfalls unter der MIT lizenziert ist und ein entsprechendes Lizenzstatement enthält, aber nicht den Lizenztext. Unabhängig davon, von wem die Website-Besitzerin diese Bibliotheken erhalten hat — von bootScore oder WordPress -, ist sie es letztendlich, die die Lizenzanforderungen erfüllen muss, da es ihr System ist, das die JavaScript-Bibliotheken an ihre Leser weitergibt.
Aber worin besteht denn nun eigentlich die Herausforderung?
Wie die JavaScript-Bibliotheken von Bootstrap und jQuery auch, sind die meisten JS-Bibliotheken MIT lizenziert. Diese FOSS-Lizenz verlangt, dass beides — die Copyright-Zeile und der Lizenztext — zusammen mit dem Open-Source-Programm verteilt wird: “The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.“5
Für (L|A)GPL-lizenzierte JavaScript-Bibliotheken gilt fast dasselbe: Diese Lizenzen erlauben die Weitergabe des Quellcodes, “[…] provided that one conspicuously and appropriately publishes on each copy an appropriate copyright notice and disclaimer of warranty […] and gives any other recipients of the Program a copy of this License along with the Program”.6
Wir haben hier also einen Widerspruch: Auf der einen Seite lädt ein Browser nicht nur den Seitentext (HTML) herunter, sondern auch die JavaScript-Bibliothek. Dieser Download verbreitet den Code und löst damit die Notwendigkeit aus, die Anforderungen der Open-Source-Lizenz zu erfüllen. Auf der anderen Seite enthalten die komprimierten Bibliotheken — selbst wenn sie als Paket von den Autoren angeboten werden — in der Regel nicht mehr die notwendigen Lizenzinformationen: Je kleiner die Bibliotheken sind, desto schneller wird die Website auf den Rechnern der Leser angezeigt.
Der Website-Betreiberin bieten sich zwei Möglichkeiten, mit dieser Herausforderung umzugehen: Entweder sie heilt die implizit von WordPress und bootScore übernommenen Pakete nachträglich (und (halb)manuell). Oder sie verwendet sie so, wie sie sie bekommen hat. Es ist klar: Heilen würde bedeuten, dass wir diese Aufgabe jedes Mal wiederholen müssten, wenn wir WordPress oder bootScore aktualisieren. Also wäre der andere Weg weniger aufwendig und darum besser — sofern es eine Option gäbe, die Idee und die Anforderungen freier Softwarelizenzen dabei (doch) nicht zu verletzen.
Die Lösung ist dies:
Wann immer die Entwickler der JavaScript-Bibliotheken beschlossen haben, ‘minified’ Versionen ihrer Arbeit zu weiterzugeben, gehen sie davon aus, dass ihre JS-Bibliothek auch in dieser Version verwendet wird. Daraus lässt sich ableiten, dass die Copyright-Owner diese Art der Nutzung implizit zulassen, auch wenn sie gegen die von den Entwicklern gewählte Lizenz verstößt. Aber — als Ersatz für die Bündelung des Lizenztextes, der Copyright-Informationen usw. mit den JavaScript-Bibliotheken selbst — sollten wir unseren Benutzern eine andere Möglichkeit anbieten, diese Informationen zu erhalten. Außerdem müssen wir darauf achten, nur die minifizierten JavaScript-Bibliotheken in unsere Site einzubinden, die die Entwickler selbst zur Verfügung gestellt haben. Im Falle der Bootstrap-JS-Lib in bootScore und der jQuery-JS-Lib etc. in WordPress dürfen wir davon ausgehen, dass sie dies getan haben.
Wir haben so im Falle eines Rechtsstreits um die Lizenzerfüllung bei JS-Bibliotheken7 ein starkes Argument für die Legalität unseres Vorgehens. Und wir befinden uns in sehr guter Gesellschaft: Die Sekundärliteratur diskutiert es in diesem Sinne8 und sogar die FSF schlägt vor, so vorzugehen.9 Und die hat nun wirklich nicht den Ruf, die Einhaltung von Lizenzen auf die leichte Schulter zu nehmen.
Im Übrigen: Männer sind mitgemeint.
- vgl.
./bootscore/js/theme.js
[↩] - vgl.
./bootscore/js/lib/bootstrap.bundle.min.js
[↩] - vgl. https://codex.wordpress.org/Javascript_Reference bzw.
./wp-includes/js
[↩] - vgl.
wp-includes/js/jquery/
[↩] - cf. MIT License[↩]
- pars pro toto vgl. GPL‑2.0. Zusätzlich verlangt die (A)GPL, dass jeder Code, der die (A)GPL-lizenzierte Bibliothek usw. verwendet, ebenfalls unter der (A)GPL lizenziert ist (Copyleft-Effekt). Aber darum geht es in diesem Zusammenhang nicht.[↩]
- Ich habe noch nie von solch einem Disput gehört![↩]
- vgl. https://www.iusmentis.com/computerprograms/opensourcesoftware/license-notices-web-applications/[↩]
- vgl. https://www.gnu.org/licenses/javascript-labels.en.html und https://www.gnu.org/licenses/javascript-labels-rationale.html[↩]