tech-trends

// 12-04-2021

Im Rahmen des Learning Friday entwickeln wir ein Open Source Projekt. Eines der Dinge, die wir dabei lernen wollen ist, wie man Open Source richtig entwickelt, oder anders gesagt: Was ist wichtig, wenn man Open Source entwickeln will?

Der ursprüngliche Plan war, ein nicht mehr aktives Projekt, welches auf GitHub als öffentliches Repository verfügbar ist, zu „forken“ und dieses weiterzuentwickeln. Nach etwas Recherche stellte sich heraus, dass wir den bestehenden Code nicht verwenden können bzw. dürfen. Der Grund dafür ist, dass die Open Source Lizenz bei diesem bestehenden Projekt nicht korrekt eingefügt wurde. Genauer gesagt: Es gab kein „LICENSE-File“. Die Lizenzinformationen wurden lediglich in einem einzigen File hinzugefügt und dadurch ist die Lizenz auch nur für dieses eine File gültig. Alle anderen Files sind (auch wenn sie öffentlich verfügbar sind) urheberrechtlich geschützt.

Die Ergebnisse unserer Recherchen sind nachfolgend zusammengefasst und beschäftigen sich mit den Themen:

  • Was ist Open Source?
  • Wie sieht es mit der rechtlichen Lage aus?
  • Was für Lizenz-Typen gibt es?
  • Wie wende ich eine Lizenz richtig an?

Was ist Open Source?

Unter Open Source versteht man Code, der öffentlich zugänglich ist und von anderen eingesehen, weiterentwickelt und genutzt werden kann.

Damit Software sich Open Source nennen kann, muss sie laut der Definition der Open Source Initiative (OSI) vor allem zwei wichtige Kriterien erfüllen:

  • Der Source Code muss in unveränderter Form frei zugänglich sein. 
  • Es gibt keine Beschränkungen der Nutzbarkeit.

Frei zugänglich bedeutet, dass der Code entweder aus dem Internet abrufbar sein muss, oder dass er bei der Weitergabe der Software mitgegeben wird. Keine Beschränkungen bedeutet, dass die Software an jeden weitergegeben werden, verändert werden und auch beliebig oft installiert/verwendet werden darf.

Rechtliche Grundlage (Österreich)

In Österreich kann Software (wörtlich: “Computerprogramm”) als ein “Werk der Literatur” im Sinne des Urheberrechts betrachtet werden. Ein “Werk” wird darin als “eigentümliche geistige Schöpfung” definiert.

Ein Schutz für Computerprogramme besteht laut einem OGH-Urteil aus dem Jahr 2005 dann, wenn diese eine gewisse Komplexität aufweisen. Dies ist der Fall, wenn die gestellte Aufgabe mehrere Lösungen zulässt und dabei genügend gedanklicher Spielraum für die Entwicklung individueller Merkmale gegeben ist. Maßgeblich ist dabei auch ob die Software neu geschaffen oder ob auf bereits vorhandenen Code zurückgegriffen werden kann.

Das bedeutet, auch wenn Code frei zugänglich ist (beispielsweise als öffentliches GitHub-Repository), muss anderen das Recht zur Weiterverbreitung, Nutzung und Adaptierung ausdrücklich eingeräumt werden. 

Für neue Software kann frei gewählt werden, welche Rechte und Pflichten andere bei der Verwendung bzw. Weiterentwicklung dieser haben. Es gibt aber von der OSI anerkannte Lizenzen, welche den Kriterien der Definition von Open Source entsprechen.
Kurz gesagt: Das Rad muss hierfür nicht jedes Mal neu erfunden werden.

Open Source Lizenzen

Zu den bereits erwähnten Kriterien beinhalten die Open Source Lizenzen auch noch gewisse Pflichten die beim Verwenden, Verbreiten oder Ändern des Source Codes zu erfüllen sind.

In den meisten Fällen ist es die Verpflichtung eine Kopie der Lizenz beizufügen und einen Copyright-Vermerk bzw. auch Haftungsausschluss anzubringen. Der Haftungsausschluss schützt hierbei die ursprünglichen Entwickler vor Schadensersatzforderungen für den Fall, dass durch die Verwendung der Software sachlicher oder wirtschaftlicher Schaden entsteht.

Aber auch wenn diese Gemeinsamkeiten bestehen, unterscheiden sich Open Source Lizenzen in einigen Punkten deutlich voneinander. Im Wesentlichen gibt es 2 verschiedene Philosophien bzw. Ideologien: Copyleft-Lizenzen und Non-Copyleft-Lizenzen.

Copyleft-Lizenzen

Das Ziel hinter Copyleft-Lizenzen ist, dass freie Software proprietäre Software verdrängen soll. Dieses Ziel wird dadurch verfolgt, dass Software, welche unter dieser Lizenz steht nur dann verwendet werden darf, wenn die resultierende Software ebenfalls unter dieser Lizenz veröffentlicht wird.

Allerdings gibt es auch “schwächere” Copyleft-Lizenzen. Diese verlangen nur dann ein Copyleft, wenn der ursprüngliche Quellcode verändert wird. Der bekannteste Vertreter von Copyleft-Lizenzen ist die GNU General Public License (GPL).

Non-Copyleft-Lizenzen

Das Ziel dieser Lizenzen ist, größtmöglicher Erfolg durch größtmögliche Verbreitung. Bei Verwendung von Software unter diesen Lizenzen muss der Code nicht zwingend freigegeben werden. Anders gesagt: Software, die auf dem Open Source Code aufbaut, muss selbst nicht unbedingt frei sein. Auch die Verwendung in kommerzieller Software ist damit erlaubt.

Bekannte Vertreter von Non-Copyleft-Lizenzen sind unter anderen:

LGPL könnte man beiden Kategorien zuordnen, da die Verwendung der Open Source Software in anderen Projekten erlaubt ist (wörtlich: “linken”). Wird aber der Code der unter LGPL stehenden Software verändert, muss dieser freigegeben werden. LGPL bietet somit ein weniger strenges Copyleft als GPL.

Anwendung von Open Source Lizenzen in GitHub

Ein öffentliches GitHub-Repository bedeutet nicht automatisch, dass der Code Open Source ist. Will man seinen eigenen Code unter eine Open Source Lizenz stellen, muss man dazu die Lizenz beifügen. In vielen Fällen muss auch ein Copyright-Vermerk gemacht werden.

In GitHub erstellt man dafür ein File mit dem Namen LICENSE, welches die entsprechende Lizenz enthält. Weiters schreiben die meisten Open Source Lizenzen vor, dass in den einzelnen Files zusätzlich ein Hinweis auf die entsprechende Lizenz hinzugefügt werden muss. Damit enthalten auch aus dem Zusammenhang gerissene Teile noch einen Hinweis auf die ursprüngliche Lizenz und die Entwickler. 

Es empfiehlt sich auch, einen Hinweis auf die verwendete Lizenz im ReadMe zu platzieren. 

Fazit

Open Source benötigt eine Lizenz. Wird diese nicht (oder falsch) hinzugefügt, kann das bedeuten, dass andere dieses Projekt nicht verwenden dürfen. Ansonsten liegt eine Urheberrechtsverletzung vor.

Bei der Auswahl der Lizenz sollte man die Umstände berücksichtigen, unter welchen das Projekt entwickelt wird und welche Ideologie verfolgt werden soll. Für die Auswahl der richtigen Lizenz sollte verglichen werden, welche Rechte die Lizenz anderen einräumt und welche Verpflichtungen diese bei der Verwendung haben. Eine Seite die dafür Hilfestellung bietet, ist choosealicense.com.

Für unser Open Source Projekt haben wir entschieden, das Projekt neu zu schreiben und nicht auf die bestehende Codebasis zurückzugreifen um eventuelle Urheberrechtsverletzungen zu vermeiden. Als Lizenz haben wir Apache License 2.0 gewählt, damit das Projekt möglichst wenig Einschränkungen hat und damit auch im kommerziellen Umfeld verwendet werden darf. 

Den aktuellen Stand des Projekts CheetUnit könnt ihr auf GitHub einsehen.

// Autor

Christian, Egor, Patrick (LF-Team)