Critical Open-Source Software Database : Projektbericht zur Erfassung von Metriken hinsichtlich des „Gesundheitszustands“ wichtiger Open-Source-Projekte
Ohne Open-Source-Software (OSS) geht heute nicht mehr viel. Doch wie „gesund“ und stabil sind eigentlich deren Projekte? Wer etwa eine OSS als Grundbaustein eigener Systeme wählt, möchte möglichst sicher sein, dass diese Bestand hat und weiterhin sicher gepflegt wird. Ein Projekt an der Fachhochschule St. Pölten hat eine Auswahl von Metriken erstellt, deren Messungen fortlaufend erfolgen und für kritische OSS über das WWW abfragbar sind.
Von Tobias Dam, Lukas Daniel Klausner und Sebastian Neumaier, St. Pölten (AT)
Open-Source-Software (OSS) ist zu einem unverzichtbaren Bestandteil moderner Technologie geworden – sie bildet die Grundlage für eine breite Palette von Softwareanwendungen und stellt die Infrastruktur für viele Dienste im Internet bereit. Die Nachhaltigkeit und Wartung von OSS-Projekten kann jedoch eine große Herausforderung darstellen. Das von den Autoren betreute Projekt „Critical Open Source Software Database“ (kurz CrOSSD, https://crossd.tech/) der FH St. Pölten, zielt daher darauf ab, den „Gesundheitszustand“ kritischer OSS-Projekte zu ermitteln, zu bewerten und durch die Verwendung verschiedener geeigneter Metriken und (teilweise automatisierter) Analysen einen umfassenden Überblick zu geben. Geeignete Metriken sind etwa Merkmale wie Stabilität, Sicherheit und Konformität.
Aktuell befindet sich das Projekt nach wie vor in aktiver Weiterentwicklung, ist aber bereits nutzbar. CrOSSD wurde und wird durch die Internet Privatstiftung Austria im Rahmen des Programms netidee (Call 17 Projekt 6252 „Towards a Critical Open-Source Software Database“ sowie Call 19 Projekt 7399 „Extending the Critical Open-Source Software Database“) gefördert und unterstützt – die Autoren danken für die finanzielle Unterstützung.
Ziel von CrOSSD ist es, eine Plattform anzubieten, die einen großen Korpus von OSS-Projekten kontinuierlich beobachtet und anhand nachvollziehbarer Metriken bewertet. Dies soll verschiedene Stakeholder, wie die OSS-Community, andere Softwareentwickler*, Unternehmen, Fördergeber und gemeinnützige Stiftungen, öffentliche Stellen und Behörden, Nichtregierungsorganisationen et cetera, dazu befähigen, fundierte Entscheidungen zu treffen – sowohl in Bezug darauf, welche Projekte Unterstützung benötigen könnten (in Form von Geldspenden, freiwilliger Mitarbeit, Kooperationsangeboten etc.), um die Stabilität und Belastbarkeit kritischer OSS-Projekte zu gewährleisten, als auch hinsichtlich dessen, welche Projekte sie in ihrem eigenen Code verwenden sollen.
Der vorliegende Artikel erörtert zunächst kurz die Methodik und die ersten Schritte von CrOSSD – einschließlich der Überlegungen zur Einbindung der Community, der technischen Grundlagen zur Umsetzung und der Implementierung von Metriken und Analysen. In der Folge erläutern die Autoren den aktuellen Projektstand sowie die derzeit verfügbaren Funktionen und geben zum Abschluss einen kurzen Ausblick auf die aktuellen Vorhaben zur Weiterentwicklung von CrOSSD.
Einordnung und alternative Projekte
Vorauszuschicken ist noch, dass es zwar bereits einige vergleichbare Projekte gibt, die auf dieses oder ein ähnliches Ziel hinarbeiten (z.B. indem sie Metriken oder Best Practices definieren), bislang aber nach Wissen der Autoren keines mit einem so umfassenden Verständnis des Projektzustands arbeitet wie CrOSSD. Darüber hinaus liefert keines der bestehenden Projekte ein kontinuierliches Monitoring sowie Statusberichte.
Zwei andere Projekte sollen hier dennoch kurz erwähnt werden, da das CrOSSD-Team nicht zuletzt auf ihrer Arbeit aufbauen konnte und keinesfalls den Eindruck vermitteln will, das Rad (neu) erfunden zu haben. Auf bestehenden Überlegungen und Konzepten aufzubauen, stellte außerdem sicher, dass bereits der erste Ansatz zumindest grundlegend den Bedürfnissen und Anforderungen der OSS-Community entspricht.
Erwähnenswert ist einerseits das Projekt „Community Health Analytics Open Source Software“ (CHAOSS, https://chaoss.community). CHAOSS zielt darauf ab, Metriken und Analysen bereitzustellen, um die Gesundheit von OSS-Communitys und -Projekten zu bewerten. Neben allgemeineren Metriken berücksichtigt CHAOSS auch Inklusion, Diversität und Risiken von OSS-Projekten und hat im Allgemeinen einen stärkeren Fokus auf die Community-Aspekte der Projektgesundheit.
Zudem hat andererseits auch die Open Source Security Foundation (OpenSSF) einige Initiativen zur Erhöhung der Sicherheit von OSS Projekten ins Leben gerufen – etwa den Criticality Score (https://github.com/ossf/criticality_score) und die Security Metrics (https://github.com/ossf/Project-Security-Metrics).
Die OSS-spezifischen Metriken von CHAOSS und OpenSSF bilden die fundierte Grundlage von CrOSSD, das sich jedoch durch die thematische Breite zusätzlicher OSS-Gesundheitsindikatoren sowie durch das Monitoring einer umfassenden OSS-Datenbank von den genannten Initiativen abgrenzt.
Im Gegensatz zu bestehenden Arbeiten (den genannten und anderen) soll CrOSSD eine umfassendere Sicht auf den Zustand von OSS Projekten bieten, indem es eine Vielzahl quantitativer und qualitativer Metriken einbezieht und eine (automatisierte) Analyse von Metadaten, Abhängigkeiten, Nachhaltigkeit und Finanzierung, Aktivitätsindikatoren, Sicherheitsrichtlinien et cetera durchführt, um den Gesamtzustand von OSS-Projekten zu bewerten.
In diesem Sinne sind die Autoren dabei, CrOSSD als Monitoring- und Evaluierungsplattform für einen großen Korpus von OSS-Projekten zu etablieren und damit eine praktisch nutzbare Informationsquelle für eine Reihe verschiedener Interessengruppen zu schaffen, die als Grundlage für eine fundierte Entscheidungsfindung dienen kann und einen umfassenderen und aktuellen Überblick über den Zustand des OSS-Ökosystems als Ganzes ermöglicht.
Stand der Dinge
In einem ersten Schritt hat das CrOSSD-Team sich auf quantitative Metriken fokussiert, die sich durch automatisches Crawling von Metainformationen (wie die Anzahl der Mitwirkenden, Commits oder Codezeilen) berechnen lassen. Diese Informationen können aus öffentlich zugänglichen Quellen wie GitHub (oder GHTorrent), GitLab und anderen Code-Hosting-Plattformen, sprachspezifischen Repositories wie PyPI oder Aggregatoren wie Libraries.io gesammelt werden.
Etwas komplexer gestaltet sich die Berücksichtigung qualitativer Metriken wie Nachhaltigkeit, Finanzierung, Community-Engagement und Einhaltung von Sicherheitsrichtlinien. Hier läuft nach wie vor die aktive Bedarfserhebung und Konzeptionierung im Rahmen der weiteren Entwicklung.
Für automatisch erfassbare Daten liefert CrOSSD ein kontinuierliches Monitoring und regelmäßige Aktualisierungen sowie die Bereitstellung des Verlaufs der erfassten Daten. Für qualitative Daten, bei denen eine Automatisierung nicht (so leicht) umsetzbar ist, ist der Einsatz verschiedener Mechanismen zur Datenerfassung (z. B. Surveys, Ermöglichung von „Push“- Updates durch externe Mitwirkende etc.) geplant, die als explizit mit einem Zeitstempel versehene Informationen verfügbar sein werden.
Um eine solide methodische Grundlage für die Auswahl der Metriken zu schaffen, die in der ersten Iteration der Plattform zum Einsatz kommen, wurde zunächst eine systematische Literaturrecherche durchgeführt (gemeinsam mit Jacqueline Schmatz, damals Masterstudentin an der FH St. Pölten). Die Ergebnisse waren zweigeteilt: Ein erster Schritt bestand aus einer konzeptionellen Analyse, um die Hauptaspekte für OSS-Projektgesundheit in der bestehenden Forschungsliteratur zu ergründen.
In einem zweiten Schritt ist danach eine Auswahl repräsentativer Metriken aus bestehenden Forschungsarbeiten extrahiert worden, die den im ersten Schritt identifizierten Aspekten entsprechen, um eine erste brauchbare und anwendungsorientierte Operationalisierung dieser Aspekte zu erreichen.
Aspekte der OSS-Gesundheit
Die im ersten Schritt ermittelten vier grundlegenden Aspekte mit wesentlichem Einfluss auf Gesundheit von OSS-Projekten lauten:
- Community und Contributors
- Entwicklung und Aktivität
- Kritikalität und Maturity
- Compliance
Für jeden dieser vier Aspekte wurden dann aus Sicht der Autoren geeignete, leicht zu implementierende Metriken ausgewählt, um sie für den ersten Prototyp zu operationalisieren. Zu den Auswahlkriterien für die Metriken gehörten Messbarkeit, Relevanz und Replizierbarkeit. Unter Anwendung dieser Kriterien ergab sich die nachfolgende Liste von Metriken, deren detaillierte Beschreibungen und Definitionen in der Projektdokumentation auf https://health.crossd.tech/doc nachzulesen sind.
Community und Contributors
- Bus-Faktor“ (auch: Truck-Number oder Lotto-Faktor) zur Abschätzung von Projektrisiken aufgrund des Ausfalls von Contributors
(vgl. https://chaoss.community/de/?p=3944) - „Pareto-Kennzahlen“ zum Anteil der Contributors, die 80 % der Commits oder File-Changes liefern (siehe https://health.crossd.tech/doc#contributions-distributions)
- durchschnittliche Zahl von Contributors pro File
- Anzahl der Contributors
- Community-Größe
- „Elefanten-Faktor“ zur Arbeitsverteilung innerhalb der Community über verschiedene Unternehmen hinweg (vgl. https://chaoss.community/de/?p=3940)
Entwicklung und Aktivität
- Support-Rate
- Technical Forks
- Change-/Pull-Requests
- Issues
- Branch-Lifecycle
- Churn-Rate hinzugefügter und gelöschter Codezeilen
Kritikalität und Maturity
- Kritikalitäts-Score
- Maturity-Level
- Code-Abhängigkeiten
- Sicherheitshinweise
Compliance
- OSI-unterstützte Lizenz
- GitHub Community Metric
Implementierung
Die Implementierung von CrOSSD ist vollständig als Open-Source-Software auf GitHub verfügbar (https://github.com/fh-crossd) und wurde mit Blick auf Skalierbarkeit und Portabilität entwickelt. Durch die Nutzung von Kubernetes-Clustern (vgl. Abb. 2) kann das System mehrere Komponenten, darunter Crawler und Metrikberechnungen, flexibel auf verschiedenen Nodes einsetzen. Der Datensammlungsprozess wird von einer Celery-Task-Queue orchestriert, die regelmäßige Scans von Repositorys und eine nahtlose Aufgabenzuweisung an Crawler-Container gewährleistet.
CrOSSD unterstützt derzeit zwei Arten von Crawlern:
- Typ 1, der die GitHub-REST-API nutzt, und
- Typ 2, der hauptsächlich die GraphQL-Schnittstelle verwendet.
Alle gesammelten Daten werden in einer verteilten ArangoDB-Datenbank gespeichert. Darüber hinaus erzeugen verschiedene Container zur Berechnung von Metriken Ergebnisse, die ebenfalls in der Datenbank gespeichert werden. Diese robuste Architektur bildet das Rückgrat der Funktionalität von CrOSSD.
Die Weboberfläche des Projekts ist über https://health.crossd.tech verfügbar. Nutzer werden dort mit einer übersichtlichen und intuitiven Homepage begrüßt, die einen schnellen Zugriff auf die Projekt-Suchfunktionen bietet und allgemeine Statistiken zu den indizierten Daten anzeigt, sodass Besucher einen sofortigen Überblick über die Möglichkeiten der Plattform erhalten.
Eine Suchfunktion ermöglicht es, Projekte anhand bestimmter Schlüsselwörter zu finden. Abbildung 3 zeigt beispielhaft eine Liste von Projekten, die den Suchbegriff „kubernetes“ enthalten. Mithilfe der Suche ist somit eine effiziente Navigation und Erkundung möglich.
Nach der Auswahl eines Projekts von Interesse erhalten Nutzer einen umfassenden Überblick über die Gesundheitsmetriken des letzten Scans. Die Schnittstelle bietet ein Dropdown-Menü für den Zugriff auf Metriken aus verschiedenen Scan-Instanzen (vgl. Abb. 4), sodass sich Veränderungen im Laufe der Zeit verfolgen lassen, um vertiefte Analysen und fundierte Entscheidungen zu ermöglichen.
Metrik-Details und Dokumentation
Beim Klick auf einzelne Metriken werden detaillierte Beschreibungen und Definitionen sowie grafische Darstellungen der historischen Metrikwerte aller Scan-Instanzen angezeigt (Abb. 5). Diese Funktion ermöglicht es, bestimmte Metriken und ihre Entwicklung genauer zu untersuchen und verwertbare Einblicke in den Projektstatus zu gewinnen.
Die Weboberfläche von CrOSSD enthält außerdem spezielle Bereiche für die Dokumentation von Metriken (https://health.crossd.tech/doc) sowie Projektinformationen, die über die Navigationsleiste und die Fußzeile zugänglich sind. Dort können Interessierte auf umfassende Dokumentationen und Leitfäden zugreifen, um ihre Nutzung der Plattform zu optimieren.
Fazit und Ausblick
Mit einem benutzerfreundlichen Webfrontend bietet CrOSSD eine leistungsstarke Plattform für das Monitoring und die Evaluierung des Zustands von Open-Source-Projekten. Durch den transparenten Zugang zu Projektmetriken und die intuitive Navigation ermöglicht es das Projekt Entwicklern und Organisationen, fundierte Entscheidungen zu treffen und so ein gesünderes und nachhaltigeres OSS Ökosystem zu nutzen und/oder zu fördern.
Das CrOSSD-Team ist derzeit im Begriff, auf Basis des bereits nutzbaren ersten Prototypen weitere Entwicklungsschritte vorzunehmen. Im laufenden Jahr sollen hierbei allem voran zwei Schwerpunkte verfolgt werden: Einerseits sollen die aktuellen Fortschritte in der Entwicklung maschinellen Lernens (bes. „Large Language Models“, LLMs, sowie andere Methoden des Natural-Language-Processing, NLP) zur Anwendung kommen, um weitere Metriken zu erfassen, die weniger unmittelbar automatisierbar sind. Andererseits will sich das Projekt aber auch verstärkt um Community-Arbeit bemühen, um seine weitere Ausrichtung bestmöglich an den tatsächlichen Problemen und Bedürfnissen der OSS-Community auszurichten.
Die Autoren sind Forscher am Institut für IT-Sicherheitsforschung der Fachhochschule St. Pölten (https://crossd.tech/team). Dipl.-Ing. Tobias Dam BSc forscht im Bereich Secure Systems-Engineering, Dipl.-Ing. Dr. Sebastian Neumaiers Forschungsschwerpunkte liegen auf Datenmanagement, Datenökosystemen und semantischer Technologie und Dipl.-Ing. Dr. Lukas Daniel Klausner befasst sich mit kritischer Informatik und Technikforschung.