„Patchen“: Die richtige Lizenz identifizieren

07.10.2020

Dr. Andreas Kotulla

Open Source

Dr. Andreas Kotulla

Warum Open Source nutzen?

Open Source ist überall. Erfahrene Entwickler schreiben Code nicht von Grund auf neu. Sie wissen, wo sie funktionierenden Code finden. Open Source steigert die Produktivität, verkürzt die Markteinführungszeit und senkt die Entwicklungskosten. Doch wer Open Source nutzt, übernimmt auch Verantwortung für fremden Code.

Patches und ihre Rolle in der Softwareentwicklung

Patch-Lizenzen in Open Source
Software Composition Analysis befasst sich intensiv mit Patches. Ein Patch ist eine Änderung an einem Programm oder seinen Dateien, die das Programm aktualisieren, reparieren oder verbessern sollen. Dazu gehört auch die Behebung von Sicherheitslücken und anderen Fehlern. Solche Patches werden üblicherweise als Bugfixes oder Fehlerbehebungen bezeichnet. Patches werden oft geschrieben, um die Funktionalität, Benutzerfreundlichkeit oder Leistung eines Programms zu verbessern.

Patches enthalten oft mehrere Änderungen in einer Datei und betreffen verschiedene Softwarekomponenten. Mal enthält ein Patch eine Lizenz, mal nicht. Manchmal wird er eindeutig auf eine Datei einer Komponente mit einer genau definierten Lizenz angewendet. Gelegentlich patcht eine Patch-Datei Dateien aus verschiedenen Komponenten (oder Dateien) mit unterschiedlichen Lizenzen. Manchmal behebt ein Patch eine Datei mit Quellcode, manchmal wird ein Patch auf Konfigurations- oder Make-Dateien angewendet. Was bedeutet das für die Lizenz der Patchdatei selbst? Wir müssen mehrere Fälle unterscheiden. Zunächst einmal betrachten wir in diesem Blog nur Dateien, die Quellcode enthalten. Make- und Config-Dateien können nur dann anwendbar sein, wenn sie irgendeine Art von Quellcode enthalten, oder wenn sie bereits eine Variante eines Lizenz-Headers enthalten.

Wie beeinflusst ein Patch die Lizenz?

Die Lizenz eines Patches hängt von verschiedenen Faktoren ab:

  • Lizenzvorhanden: Ist eine Lizenz angegeben, gilt der Patch unter dieser Lizenz.
  • Keine Lizenz angegeben: Der Patch erbt meist die Lizenz der Datei, die er ändert. Prüfer müssen den Code analysieren, um die betroffene Datei und deren Lizenz zu identifizieren. Falls unklar, helfen README-, COPYING- oder LICENSE-Dateien weiter. SPDX kann den Lizenztyp genau bestimmen.
  • Patch mit mehreren Dateien und Lizenzen: Hier wird die Analyse kompliziert. Meist gelten alle Lizenzen der gepatchten Dateien auch für den Patch selbst.

Herausforderungen bei inkompatiblen Lizenzen

Besonders problematisch wird es, wenn ein Patch Dateien mit unvereinbaren Lizenzen ändert. Eine mögliche Lösung: Der Entwickler teilt den Patch auf, sodass jede Komponente mit eigener Lizenz einen separaten Patch erhält. Doch das ist nicht immer machbar.

Noch schwieriger sind binäre Patches. Sie können bestehende Binärdateien verändern oder neue hinzufügen. Das größte Risiko: Nicht deklarierte lizenzpflichtige Inhalte (wie z.B. eine öffentliche Lizenz), die unbemerkt in den Code gelangen.

Rechtliche und sicherheitstechnische Risiken minimieren

Um das rechtliche und sicherheitstechnische Risiko zu verringern, das mit dem Patchen von OSS-Bibliotheken und der Verwendung von OSS-Bibliotheken im Allgemeinen verbunden ist, empfehlen wir Ihnen, sich mit uns in Verbindung zu setzen.

Dies ist keine Rechtsberatung. Der Text enthält bewährte Verfahren, die auf unserer Erfahrung beruhen. Im Zweifelsfall sollten Sie einen Anwalt konsultieren.