Es gibt keine Auswahl an Praktiken, die garantieren können, dass Software niemals Fehler oder Schwachstellen hat. Selbst formale Methoden können fehlschlagen, wenn die Spezifikationen oder Annahmen falsch sind. Auch gibt es keine Auswahl an Praktiken, die garantieren können, dass ein Projekt eine gesunde und gut funktionierende Entwicklungsgemeinschaft aufrechterhalten wird.
Allerdings können Best Practices dabei helfen, die Ergebnisse von Projekten zu verbessern. Zum Beispiel ermöglichen einige Praktiken die Mehrpersonen-Überprüfung vor der Freigabe, die sowohl dabei helfen kann, ansonsten schwer zu findende technische Schwachstellen zu finden, als auch Vertrauen und den Wunsch nach wiederholter Zusammenarbeit zwischen Entwicklern verschiedener Organisationen aufzubauen.
Diese Seite diskutiert die Best Practices für Free/Libre and Open Source Software (FLOSS) Projekte, die für den Best Practices Badge der Open Source Security Foundation (OpenSSF) entwickelt wurden. Projekte, die diese Best Practices befolgen, können sich freiwillig selbst zertifizieren und zeigen, dass sie das relevante Badge erreicht haben. Projekte können dies kostenlos tun, indem sie eine Webanwendung (BadgeApp) verwenden, um zu erklären, wie sie diese Praktiken und deren detaillierte Kriterien erfüllen.
Diese Best Practices wurden erstellt, um:
Die Redewendung "Best Practices" bedeutet "ein Verfahren oder eine Reihe von Verfahren, die innerhalb einer Organisation, Branche usw. bevorzugt oder als Standard angesehen werden" (Quelle: Dictionary.com). Diese Kriterien sind das, was wir glauben, dass in der breiteren FLOSS-Community weithin "bevorzugt oder als Standard angesehen" wird.
Weitere Informationen darüber, wie diese Kriterien entwickelt wurden, finden Sie auf der OpenSSF Best Practices Badge GitHub-Seite.
Sie können auch die vollständigen Kriterien sehen.
Die Best Practices Kriterien sind in drei Stufen unterteilt:
Jedes Kriterium hat einen Kurznamen, der als hochgestellter Text in eckigen Klammern nach dem Kriterientext angezeigt wird.
Die Linux Foundation sponsert auch das OpenChain-Projekt, das Kriterien für ein "qualitativ hochwertiges Free and Open Source Software (FOSS) Compliance-Programm" identifiziert. OpenChain konzentriert sich darauf, wie Organisationen FLOSS am besten nutzen und zu FLOSS-Projekten beitragen können, während sich das OpenSSF Best Practices Badge auf die FLOSS-Projekte selbst konzentriert. Das OpenSSF Best Practices Badge und OpenChain arbeiten zusammen, um FLOSS und die Nutzung von FLOSS zu verbessern.
In einigen Fällen testen und füllen wir automatisch Informationen aus, wenn das Projekt Standardkonventionen folgt und auf einer Seite (z.B. GitHub) mit anständiger API-Unterstützung gehostet wird.
Wir beabsichtigen, diese Automatisierung in Zukunft zu verbessern. Verbesserungen der Automatisierung sind willkommen!
Wir haben jedoch absichtlich Priorität auf "was wichtig ist" gelegt, auch wenn es nicht kostengünstig automatisiert werden kann. Wir lieben automatisierte Messungen, aber nicht alles Wichtige ist automatisierbar oder kann kostengünstig automatisiert werden.
Wir erwarten, dass diese Praktiken und ihre detaillierten Kriterien im Laufe der Zeit aktualisiert werden. Wir planen, neue Kriterien hinzuzufügen, aber sie als "zukünftige" Kriterien zu kennzeichnen, sodass Projekte diese Informationen hinzufügen und ihr Badge behalten können.
Feedback ist sehr willkommen über die GitHub-Website als Issues oder Pull-Requests. Es gibt auch eine Mailingliste für allgemeine Diskussionen.
Die Schlüsselwörter "MUSS", "DARF NICHT", "SOLLTE", "SOLLTE NICHT" und "DARF" in diesem Dokument sind wie in RFC 2119 beschrieben zu interpretieren. Der zusätzliche Begriff EMPFOHLEN wird hinzugefügt. Zusammengefasst haben diese Schlüsselwörter die folgenden Bedeutungen:
Oft wird ein Kriterium als etwas angegeben, das getan werden SOLLTE oder EMPFOHLEN wird, weil es schwierig zu implementieren sein kann oder die Kosten dafür hoch sein können.
Um ein Badge zu erhalten, müssen alle MUSS- und DARF NICHT-Kriterien erfüllt sein, alle SOLLTE-Kriterien müssen entweder erfüllt ODER nicht erfüllt mit Begründung sein, und alle EMPFOHLEN-Kriterien müssen berücksichtigt werden (sie müssen als erfüllt oder nicht erfüllt bewertet werden, aber eine Begründung ist nicht erforderlich, sofern nicht anders angegeben). Eine Antwort von N/A ("nicht zutreffend"), wo erlaubt, wird als erfüllt betrachtet. In einigen Fällen, insbesondere bei den höheren Stufen, können eine Begründung und/oder eine URL erforderlich sein.
Einige Kriterien haben spezielle Kennzeichnungen, die dies beeinflussen:
Ein Projekt muss die vorherige Stufe erreichen, um die nächste Stufe zu erreichen. In einigen Fällen werden SOLLTE-Kriterien bei höheren Badge-Stufen zu MUSS, und einige EMPFOHLEN-Kriterien bei niedrigeren Stufen werden bei höheren Badge-Stufen zu SOLLTE oder MUSS. Die höheren Stufen erfordern auch mehr Begründung, weil wir möchten, dass andere verstehen, wie die Kriterien erfüllt werden.
Die (vielen) kryptografischen Kriterien gelten nicht immer, da einige Software nicht direkt kryptografische Fähigkeiten verwenden muss. Geben Sie in diesen Fällen N/A an.
Es gibt ein implizites Passing-Kriterium - jedes Projekt MUSS eine öffentliche Website mit einer stabilen URL haben. Dies ist erforderlich, um überhaupt einen Badge-Eintrag zu erstellen.
Wenn Sie mit Softwareentwicklung oder dem Betreiben eines FLOSS-Projekts nicht vertraut sind, können Materialien wie Producing Open Source Software von Karl Fogel für Sie hilfreich sein.
Hier sind einige wichtige Begriffe:
Die Kriterien:
Die Passing-Stufe beinhaltet keine Kriterien, die für ein Ein-Personen-Projekt unpraktisch wären, z.B. etwas, das einen erheblichen Geldbetrag erfordert. Viele FLOSS-Projekte sind klein, und wir wollen sie nicht benachteiligen.
Unsere Anwendung gibt jedem Projekteintrag eine eindeutige ID, aber das hilft Leuten, die nach dem Projekt suchen, nicht. Für unsere Zwecke ist der eigentliche Name eines Projekts die URL für sein Repository, und wo dies nicht verfügbar ist, die URL der Projekt-"Startseite". Wir begrenzen Änderungen an der Repository-URL, um Unsinn zu verhindern. Projekte haben normalerweise einen von Menschen lesbaren Namen, aber diese Namen sind nicht eindeutig genug.
Das Papier Open Badges für Bildung: was sind die Auswirkungen an der Schnittstelle von offenen Systemen und Badging? identifiziert drei allgemeine Gründe für Badge-Systeme (alle sind hierfür gültig):
Wir haben uns für die Verwendung von Selbstzertifizierung entschieden, da dies es einer großen Anzahl von Projekten (sogar kleinen) ermöglicht, teilzunehmen. Es gibt Millionen von FLOSS-Projekten, und das Bezahlen Dritter, um jedes einzelne unabhängig zu bewerten, skaliert nicht. Es besteht das Risiko, dass Projekte falsche Behauptungen aufstellen, aber wir denken, das Risiko ist gering, Benutzer können die Behauptungen selbst überprüfen, und falsche Behauptungen können überschrieben werden. Wir verwenden auch Automatisierung, um falsche Behauptungen zu überschreiben, wo wir von den Ergebnissen überzeugt sein können.