Viele von euch nutzen sicherlich Open-Source-Projekte von Github (oder anderen Plattformen). In diesem Artikel gebe ich einige Tipps, zur Erkennung von „guten“ Projekten. Doch welche Aspekte sind wichtig oder sollten beachtet werden?

Ich habe einige Aspekte, auf die ich achte:

  • Commits und Aktivität
  • Contributors/Community
  • Wiki/Dokumentation
  • Tests
  • Lizenz

Commits und Aktivität

Bei den Projekten auf Github sind die Commits gut erkennbar. An diesem kann ich erkennen, wann Änderungen eingespielt werden und wie aktiv die Entwickler sind. Hat ein Projekt seit sehr langer Zeit (z.B. 6 Monate) kein Update gesehen ist das Projekt wahrscheinlich eingeschlafen.
Das hat verschiedene negative Auswirkungen: Bugs werden nicht behoben. Funktionswünsche und Änderungen werden nicht implementiert. Sicherheitslücken bleiben offen.

Allerdings muss man den Funktionsumfang beachten. Das Projekt kann beispielsweise eine kleine Bibliothek sein. Wenn alle Funktionen dieser Bibliothek vorhanden sind (und es keine bekannten Bugs gibt) sind nur unregelmäßige Updates notwendig, wenn sich die Abhängigkeiten (Programmiersprache, andere Bibliotheken) ändern. Ein „eingeschlafenes“ Projekt muss nicht zwangsläufig schlecht sein.

Contributors/Community

Wie viele Personen beteiligen sich an dem Projekt? Ist es eine One-Man-Show? Gibt es ein festes Team, das die Entwicklung weiterführt? Werden Bugs/Tickets öffentlich bereitgestellt und Änderungen diskutiert?

Je nach Anzahl der Entwickler/Beteiligten kann ich abschätzen, ob das Projekt ein hohes Ausfallrisiko hat oder auch in mehreren Jahren noch vorhanden ist. Wenn nur 1-2 Personen das Projekt betreiben ist das Risiko höher. Hierbei sei gesagt, dass jeder bei Github die Möglichkeit hat, an einem Projekt mitzuwirken 😉

Je nach Größe des Projekts ist mir die Community auch auf andere Weise wichtig: Gibt es ein Forum? An wen kann ich mich wenden, wenn ich ein spezifisches Problem habe?

Wiki/Dokumentation

Hier stellt sich für mich vor allem die Frage: Gibt es ein Wiki und wie sehen die ersten Schritte aus?

Bei kleineren Projekten erwarte ich ein kleines Codebeispiel, wie ich bestimmte Funktionen (oder die Kernfunktion) verwende und aufrufe. Bei größeren Projekten und Programmen achte ich darauf, ob es eine kurze Anleitung gibt. Muss ich bestimmte Dienste bereitstellen? Muss ich Einstellungen ändern? Brauche ich eine Datenbank?

Darüber hinaus erwarte ich sprechenden Code. Die Methoden sollten gute Namen aufweisen und die Parameter verständliche Namen haben anstatt foo und bar.
Die Dokumentation ist auch meine erste Anlaufstelle, wenn ich erweiterte Funktionen benötige oder eine Aktion ein unerwartetes Ergebnis zurückliefert.

Tests

Diesen Punkt habe ich früher nicht so aktiv beachtet. Mittlerweile sehe ich Tests in Projekten als wichtig an. Zumindest die Kernfunktionen sollten durch UnitTests abgedeckt sein. Wie kritisch (fehlende) UnitTests für ein Github-Projekt sind, muss jeder selbst entscheiden.

Ich nutze durchaus auch Bibliotheken, welche keine UnitTests beinhalten. Allerdings sind mir Projekte mit Testfällen lieber, da eine gewisse Stabilität zugesichert wird. Des weiteren dienen UnitTests als Teildokumentation, um sich Funktionsaufrufe genauer anzuschauen.

Lizenz

Zu guter letzt das leidige Thema Lizenzen. Kann ich das Projekt uneingeschränkt verwenden? Ist meine Projektlizenz damit vereinbar? Darf ich das Projekt auch kommerziell einsetzen?

Ich habe zufällig folgende Webseite gefunden: TLDRLegal
Diese Seite gibt einen guten Überblick, was bei den einzelnen Lizenzen zu beachten ist. Manche Lizenzen erwarten, dass das Projekt unter der selben Lizenz öffentlich bereitgestellt wird. Andere Lizenzen sind vollständig frei verwendbar, sodass der Endanwender nichtmal über die externe Bibliothek informiert werden muss. Bitte prüft immer selbst, ob die Lizenz für euer Projekt in Frage kommt! Diese Seite liefert einen Hinweis, ist allerdings keine verbindliche Rechtsberatung.

Ich finde, dass das ein sehr guter Ansatz ist, um einen ersten Eindruck zu erhalten. Um 100%ig auf der sicheren Seite zu sein, sollte ein Anwalt dazu befragt werden (oder ein Lizenzbeauftragter im Unternehmen).

Fazit

Mit dieser Liste habt ihr eine kleine Anleitung, um den Nutzen und das Riskio von Github (oder generell Open-Source) Projekten abzuwägen. Mir sind die Punkte Aktivität und Dokumentation sehr wichtig.
Allerdings ist das schöne an Open-Source: Jeder kann mitmachen und das Projekt und die Community unterstützen (und sei es nur ein Bug oder eine Funktionsanfrage).

Habt ihr besondere Indizien, auf die ihr bei Open-Source Projekten achtet? Ich freue mich über eure Kommentare.