Il n’existe aucun ensemble de pratiques pouvant garantir que les logiciels ne présenteront jamais de défauts ou de vulnérabilités. Même les méthodes formelles peuvent échouer si les spécifications ou les hypothèses sont erronées. Il n’existe pas non plus d’ensemble de pratiques garantissant qu’un projet maintiendra une communauté de développement saine et qui fonctionne bien.
Cependant, suivre certaines meilleures pratiques peut aider à améliorer les résultats des projets. Par exemple, certaines pratiques permettent un examen par plusieurs personnes avant la publication, ce qui peut à la fois aider à trouver des vulnérabilités techniques autrement difficiles à trouver et à renforcer la confiance et le désir d'interactions répétées entre les développeurs de différentes organisations.
Cette page présente l'ensemble des meilleures pratiques pour les projets de logiciels libres et open source (FLOSS) développé pour le badge des meilleures pratiques de la Open Source Security Foundation (OpenSSF). Les projets qui suivent ces meilleures pratiques pourront s'auto-certifier volontairement et montrer qu'ils ont obtenu le badge correspondant. Les projets peuvent le faire, sans frais, en utilisant une application Web (BadgeApp) pour expliquer comment ils respectent ces pratiques et leurs critères détaillés.
Ces bonnes pratiques ont été créées pour :
L'idiome « meilleures pratiques » signifie « une procédure ou un ensemble de procédures qui est préféré ou considéré comme standard au sein d'une organisation, d'un secteur, etc. » (source : Dictionary.com). Ces critères sont ce que nous pensons être largement « préféré ou considéré comme standard » dans la communauté FLOSS au sens large.
Pour plus d'informations sur la manière dont ces critères ont été développés, consultez le site GitHub du badge des meilleures pratiques OpenSSF.
Vous pouvez également voir les critères complets.
Les critères de bonnes pratiques sont divisés en trois niveaux :
Chaque critère a un nom court, indiqué sous forme de texte en exposant entre crochets après le texte du critère.
La Fondation Linux parraine également le Projet OpenChain, qui identifie les critères d'un « programme de conformité aux logiciels libres et open source (FLOSS) de haute qualité ». OpenChain se concentre sur la façon dont les organisations peuvent utiliser au mieux le FLOSS et contribuer en retour aux projets FLOSS, tandis que le badge des meilleures pratiques de la OpenSSF se concentre sur les projets FLOSS eux-mêmes. Le badge des meilleures pratiques de la OpenSSF et OpenChain travaillent ensemble pour aider à améliorer le FLOSS et la façon dont le FLOSS est utilisé.
Dans certains cas, nous testons et remplissons automatiquement les informations si le projet suit les conventions standard et est hébergé sur un site (par exemple, GitHub) avec un support API décent.
Nous avons l'intention d'améliorer cette automatisation à l'avenir. Les améliorations apportées à l'automatisation sont les bienvenues !
Cependant, nous avons délibérément priorisé « ce qui est important », même s'il ne peut pas être automatisé en pratique. Nous aimons les mesures automatisées, mais tout ce qui est important n'est pas automatisable ou ne peut pas être automatisé en pratique.
Nous nous attendons à ce que ces pratiques et leurs critères détaillés soient mis à jour au fil du temps. Nous prévoyons d'ajouter de nouveaux critères mais de les marquer comme critères « futurs », afin que les projets puissent ajouter ces informations et conserver leur badge.
Les commentaires sont très bienvenus via le site GitHub en tant que problèmes ou pull request. Il existe également une liste de diffusion pour une discussion générale.
Les mots clés « DOIT », « NE DOIT PAS », « DEVRAIT », « NE DEVRAIT PAS » et « PEUT » dans ce document sont à interpréter comme décrit dans la RFC 2119. Le terme supplémentaire PROPOSÉ est ajouté. En résumé, ces mots clés ont les significations suivantes :
Souvent, un critère est énoncé comme quelque chose qui DEVRAIT être fait, ou est PROPOSÉ, car il peut être difficile à mettre en œuvre ou les coûts pour le faire peuvent être élevés.
Pour obtenir un badge, tous les critères DOIT et NE DOIT PAS doivent être remplis, tous les critères DEVRAIT doivent être remplis OU non remplis avec justification, et tous les critères PROPOSÉ doivent être pris en compte (il doit être marqué comme satisfait ou non, mais aucune justification n'est requise, sauf indication contraire). Une réponse N/A (« non applicable »), lorsqu'elle est autorisée, est considérée comme satisfaite. Dans certains cas, en particulier aux niveaux supérieurs, une justification et / ou une URL peuvent être requises.
Certains critères ont des marquages spéciaux qui influencent ceci :
Un projet doit atteindre le niveau précédent pour atteindre le niveau suivant. Dans certains cas, les critères DEVRAIT deviennent DOIT dans les badges de niveau supérieur, et certains critères PROPOSÉ à des niveaux inférieurs deviennent DEVRAIT ou DOIT aux badges de niveau supérieur. Les niveaux supérieurs nécessitent également plus de justification, car nous voulons que d'autres puissent comprendre comment les critères sont remplis.
Les (nombreux) critères cryptographiques ne s'appliquent pas toujours, car certains logiciels n'ont pas besoin d'utiliser directement les capacités cryptographiques. Dans ces cas, répondez N/A.
Il y a un critère de réussite implicite - chaque projet DOIT avoir un site Web public avec une URL stable. Cela est nécessaire pour créer une entrée de badge en premier lieu.
Si vous n'êtes pas familier avec le développement de logiciels ou l'exécution d'un projet FLOSS, des ressources telles que Produire un logiciel Open Source par Karl Fogel peuvent vous être utiles.
Voici quelques termes clés:
Les critères :
Le niveau basique ne comprend pas de critères qui ne seraient pas pratiques pour un projet à une seule personne, par exemple, quelque chose qui nécessite une somme d'argent importante. De nombreux projets FLOSS sont petits et nous ne voulons pas les priver de leurs droits.
Notre application attribue à chaque entrée de projet un identifiant unique, mais cela n'aide pas les personnes à rechercher le projet. Pour nos besoins, le nom réel d'un projet est l'URL de son dépôt, et là où ce n'est pas disponible, l'URL de la « page d'accueil » du projet. Nous limitons la fréquence des modifications apportées à l'URL du dépôt pour éviter certaines absurdités. Les projets ont normalement un nom lisible par les humains, mais ces noms ne sont pas assez uniques.
Le document Badges ouverts pour l'éducation : quelles implications à l'intersection des systèmes ouverts et des badges ? identifie trois raisons générales pour les systèmes de badges (tous sont valables ici) :
Nous avons choisi d'utiliser l'autocertification, car cela permet à un grand nombre de projets (même petits) de participer. Il existe des millions de projets FLOSS et le fait de payer des tiers pour évaluer chacun d'eux de manière indépendante ne passe pas à l'échelle. Il y a un risque que les projets fassent de fausses déclarations, mais nous pensons que le risque est faible, les utilisateurs peuvent vérifier les allégations par eux-mêmes et les fausses déclarations peuvent être annulées. Nous utilisons également l'automatisation pour remplacer les fausses déclarations lorsque nous pouvons être sûrs des résultats.