Compliance in Open-Source-Projekten

Lizenzkonformität mit FOSSA erkennen

| Autor / Redakteur: Mirco Lang / Stephan Augsten

Ein fertiger FOSSA-Report mit Abhängigkeiten und Lizenzen im Volltext.
Ein fertiger FOSSA-Report mit Abhängigkeiten und Lizenzen im Volltext. (Bild: Lang / Fossa)

Projekte im Open-Source-Bereich können sehr fordernd werden, wenn es um Lizenzen geht. Vor allem, wenn es viele Abhängigkeiten in Form von Drittsoftware gibt. Welche Lizenzen werden überhaupt über die gesamte Code-Basis genutzt? Und werden alle Obligationen erfüllt? Die FOSSA-Tools können Ihnen dabei helfen – bei kleineren Projekten auch kostenlos.

Zunächst mal: FOSSA ist ein kommerzieller Anbieter des gleichnamigen Abhängigkeiten-Scanners – nicht zu verwechseln mit dem öffentlich geförderten Bug-Bounty-Projekt EU-FOSSA. Der Scanner ist ein enorm hilfreiches Tool, wenn es um Compliance-Fragen geht.

Kurz gesagt durchforstet FOSSA den gesamten Code in Ihrem Repository und spürt Erwähnungen von Lizenzen auf, unlizenzierten Code und fehlende Compliance-Dokumentation wie etwa Listen der Urheber. Darüber hinaus werden auch offene CVEs und veraltete Abhängigkeiten gefunden.

Über solche Badges können Sie User über den Status Ihrer Lizenz-Compliance informieren.
Über solche Badges können Sie User über den Status Ihrer Lizenz-Compliance informieren. (Bild: Lang / Fossa)

Die kostenpflichtige Version bietet allerlei Tools, um gefundene Probleme zu beheben, teils sogar vollautomatisch. Allerdings beginnt dieses Angebot erst bei fünf Entwicklern und 230 US-Dollar monatlich – und ist von daher nur für größere Projekte im kommerziellen Umfeld wirklich interessant. Aber auch die kostenlose Variante bietet schon einigen Nutzen.

Insbesondere gilt dies für Entwickler und Projekte, deren Kompetenzen eher im Bereich Coding denn Lizenzierung zu finden sind. FOSSA kann hier mehrere Dinge erledigen: Sie bekommen einen Überblick über alle verwendeten Lizenzen und etwaigen Probleme und Konflikte. Sie bekommen eine Liste aller Abhängigkeiten, inklusive der Fundorte, direktem Einblick in den Code und Links zu den Projektseiten.

Für Lizenzierungs-Laien aber ist folgender Aspekt besonders interessant: Zu jeder Lizenz werden deren Obligationen, sprich Verpflichtungen aufgeführt. So sollte auf Anhieb jeder zumindest grundsätzlich verstehen, was die Lizenzen voraussetzen. Das kostenlose FOSSA verschafft aber nicht einfach nur einen Überblick, nach dem Scan bekommen Sie zwei wichtige Dinge an die Hand:

Da wäre zum einen ein Badge, der stets den aktuellen Status Ihrer Lizenzkonformität anzeigt und üblicherweise in der Readme-Datei Ihres Repositorys Platz findet, wie man es zum Beispiel von Github-Projekten gewohnt ist. Natürlich funktioniert das Ganze auch mit Bitbucket, Gitlab und eigenen, lokalen Repos. Solch ein Badge schafft Vertrauen beim Nutzer und auch Sie selbst sehen, ohne extra die FOSSA-Seite aufzurufen, ob es Probleme im Projekt gibt.

Zweitens wird ein Report generiert, der verwendete Drittsoftware samt Links, Lizenzen und weiterer Informationen auflistet. Und viel wichtiger: Alle verwendeten Lizenzen samt der kompletten Lizenztexte. Diesen Report können Sie wahlweise als Link in Ihre Dateien einbauen oder aber in diversen Formaten herunterladen und in Ihr Repository einbauen. Und damit ist schon ein gewichtiger Teil der Compliance-Arbeit erledigt.

So gut FOSSA auch sein mag, es ist nicht immer ganz intuitiv. Und nicht immer sehr schnell. Schon das Scannen eines Dummy-Projekts mit nur einer Datei mit nur einer Zeile Text benötigt bisweilen zwei, drei Minuten – größere Projekte nehmen allerdings oft nicht viel mehr Zeit in Anspruch. Außerdem dauert es immer wieder mal ein wenig, bis die Badges auf den Github-Seiten auch wirklich den aktuellsten Stand anzeigen.

In der alltäglichen Arbeit ist das kein großes Problem. Beim Testen, wenn Sie ständig Änderungen durchführen und sich deren Auswirkungen ansehen wollen, müssen Sie das aber im Hinterkopf behalten. Und leider hat FOSSA bei hiesigen Tests zum Teil auch nicht ganz korrekt gearbeitet und Verweise auf die BSD-2-clause-Lizenz als BSD-3-clause-Lizenz gedeutet.

FOSSA in der Praxis

Das Ganze klingt in der Theorie sicherlich ganz gut, ist aber nicht wirklich plastisch. Am schnellsten verstehen Sie FOSSAs Nutzen und Arbeitsweise, wenn Sie ein kurzes Beispielprojekt aufsetzen, im Folgenden unter Einbindung von Github.

Ein Minimalprojekt mit einer Datei und einer Zeile genügt schon zum Testen.
Ein Minimalprojekt mit einer Datei und einer Zeile genügt schon zum Testen. (Bild: Lang / Fossa)

Legen Sie zunächst ein Testprojekt „fossatest“ auf Github an, lassen Sie dabei eine Readme-Datei erstellen und fügen Sie dort einfach nur einen Lizenzverweis, zum Beispiel „GPLv2“ ein. Anschließend loggen Sie sich bei FOSSA über den Github-Account ein, wählen den Bereich „Projects“ und starten den Import über „Add Projects“. Zum Importieren wählen Sie natürlich wieder Github und aus der angezeigten Liste Ihrer Repositories das gewünschte Testprojekt.

Beim Importieren sehen Sie schon: FOSSA kann freilich direkt auf einzelne Branches zugreifen. Nach dem Import startet automatisch der erste Scan, was wie gesagt schon mal ein paar Minuten dauern kann. Wenn es nach vier Minuten noch immer rödelt, aktualisieren Sie einfach mit F5, manchmal scheint auch einfach die Animation zu hängen.

Gefundene Probleme in der Detailansicht.
Gefundene Probleme in der Detailansicht. (Bild: Lang / Fossa)

Nach dem Scan sollten Sie im Reiter „Issues“ ein Problem finden: Der Hinweis „GPLv2“ in der Datei „README.md“ in der Komponente „fossatest“. An dieser Stelle könnten Sie die Meldung nun über den Resolve-Button auch manuell abhaken, beispielsweise wenn es sich um Fehler oder rein interne Angelegenheiten handelt.

Hier soll es aber erst mal um die Badges gehen: FOSSA bindet automatisch ein kleines Badge am Anfang der Readme ein sowie den Text „License“ und darunter eine detaillierte Statusgrafik am Ende. Und das ist sogar schon – halbwegs – geschehen: Gehen Sie wieder zum Github-Repo und rufen Sie den Reiter „Pull request“ auf. Hier finden Sie einen Pull request vom „fossabot”, den Sie hier komplett übernehmen und in den master-Branch mergen können.

Die Projektseite mit Badges.
Die Projektseite mit Badges. (Bild: Lang / Fossa)

Auf der Projektstartseite sehen Sie nun Ihre Badges – natürlich mit negativem Status, schließlich fehlt die angedeutete GPLv2-Lizenz. Zum Testen genügt es, wenn Sie diesen Text entfernen oder besser: Ersetzen Sie ihn durch einen Link zum Beispiel auf die BSD-2-clause-Lizenz [https://opensource.org/licenses/BSD-2-Clause].

Ist das geschehen, wechseln Sie wieder zur FOSSA-Seite. Oben links finden Sie den Pfad zum aktuellen Branch, hier also „fossatest > master“. Über den kleinen Pfeil bei „master“ müssen Sie nun aktualisieren, damit sich FOSSA mit den neuesten Commits versorgt.

Alles OK – so sollten die Badges aussehen.
Alles OK – so sollten die Badges aussehen. (Bild: Lang / Fossa)

Direkt unter der Zeile klicken Sie auf den angeführten Commit – das dürfte noch der initiale Commit sein – und wählen dann darunter den aktuellsten Commit, hier also das Update der Readme-Datei. Wenn Sie das nicht machen, laufen weitere Scans nämlich über einen veralteten Projektstatus. Anschließend läuft wieder der Scan durch und kurz danach sollten die Badges auf der Github-Projektseite auf Grün umspringen und „license scan passing“ vermelden.

Damit haben Sie die grundlegende Funktionsweise von FOSSA einmal durchgespielt. Um sich nun weiter durch die Meldungen und Funktionen zu spielen, können Sie entweder weitere Testdateien in Ihrem Dummy-Projekt anlegen oder gleich massiv skalieren: Forken Sie einfach ein größeres Github-Projekt und lassen Sie FOSSA darüber laufen. Die Wahrscheinlichkeit, dass Sie dabei Meldungen und Fälle aller Art produzieren ist recht groß.

Report einbinden

Aber wieder zurück zum Beispielprojekt, schließlich fehlt noch der versprochene Report mit den Lizenztexten: Rufen Sie die die Summary-Seite des Projekts auf und lassen Sie unten über die Schaltfläche „Generate Link“ unter „Live Project Report“ einen Link erstellen.

Ein fertiger FOSSA-Report mit Abhängigkeiten und Lizenzen im Volltext.
Ein fertiger FOSSA-Report mit Abhängigkeiten und Lizenzen im Volltext. (Bild: Lang / Fossa)

Wenn Sie diesen Link nun aufrufen, bekommen Sie die Auflistung aller Abhängigkeiten und Lizenzen samt Lizenztexten. Den Report können Sie nun zum Beispiel als Markdown-Datei „NOTICE.md“ herunterladen und in Github integrieren. Wenn Sie weitere Informationen zu den Abhängigkeiten einblenden wollen, können Sie das auf der FOSSA-Projektseite über „Reports/Custom Columns“ erledigen.

In der FOSSA-Vollversion lassen sich mehr Daten scannen, umfangreichere Reports erstellen und einige Problem automatisch lösen. Doch selbst in der freien Variante hilft FOSSA vor allem beim Auffinden von Lizenzen, was bei Hunderten Dateien und Dutzenden Abhängigkeiten allein schon viele Stunden Arbeit spart. Insofern können von FOSSA sowohl Profis und Großprojekte als auch Lizenz-Einsteiger und Kleinstprojekte profitieren. Es ist keine One-Click-Lösung für vollumfängliche Compliance, aber ein perfekter Einstieg.

Und ganz nebenbei: Der Einsatz von FOSSA signalisiert Urhebern von Abhängigkeiten natürlich auch ganz klar, dass Sie um Compliance bemüht sind. Und das genügt in der Open-Source-Welt gemeinhin, um eine friedliche Lösung zu finden. Schaden kann FOSSA jedenfalls nicht.

Kommentare werden geladen....

Kommentar zu diesem Artikel

Der Kommentar wird durch einen Redakteur geprüft und in Kürze freigeschaltet.

Anonym mitdiskutieren oder einloggen Anmelden

Avatar
Zur Wahrung unserer Interessen speichern wir zusätzlich zu den o.g. Informationen die IP-Adresse. Dies dient ausschließlich dem Zweck, dass Sie als Urheber des Kommentars identifiziert werden können. Rechtliche Grundlage ist die Wahrung berechtigter Interessen gem. Art 6 Abs 1 lit. f) DSGVO.
  1. Avatar
    Avatar
    Bearbeitet von am
    Bearbeitet von am
    1. Avatar
      Avatar
      Bearbeitet von am
      Bearbeitet von am

Kommentare werden geladen....

Kommentar melden

Melden Sie diesen Kommentar, wenn dieser nicht den Richtlinien entspricht.

Kommentar Freigeben

Der untenstehende Text wird an den Kommentator gesendet, falls dieser eine Email-hinterlegt hat.

Freigabe entfernen

Der untenstehende Text wird an den Kommentator gesendet, falls dieser eine Email-hinterlegt hat.

copyright

Dieser Beitrag ist urheberrechtlich geschützt. Sie wollen ihn für Ihre Zwecke verwenden? Infos finden Sie unter www.mycontentfactory.de (ID: 45903440 / Urheberrecht & Nutzungsrecht)