Progresser avec les outils SPDX Python
Discussions concernant le développement et l’orientation de la Outils Python SPDX se produisent souvent dans le réunions hebdomadaires ou de petites rondes et ne sont pas toujours visibles pour les parties intéressées. Ce billet de blog vise à combler cette lacune en fournissant une version condensée de ce qui a été fait et de ce qui est à venir. Cela devrait également rendre visible ce que nous (TNG) accomplissons dans le cadre d’un projet parrainé par OpenSSF. Il est destiné à être le premier d’une série de messages de ce type.
Le nettoyage initial
Comme les outils Python n’ont été maintenus que théoriquement pendant environ un an, beaucoup de « backlog » s’était accumulé, à la fois dans les demandes d’extraction ouvertes (en abrégé : PR) et dans les problèmes ouverts. Bien que ce ne soit pas la partie la plus passionnante du travail sur les outils Python, la finition des relations publiques et des problèmes de triage était toujours une première étape essentielle pour mettre les outils Python à niveau.
Au cours des deux derniers mois, 48 PR ont été fermés, dont 21 étaient ouverts depuis plusieurs années. Dans certains cas, les contributeurs originaux ont terminé leurs contributions après un examen ; dans d’autres, nous avons pris le relais et terminé le travail qu’ils avaient commencé. Certaines de ces PR étaient petites, et d’autres étaient grandes et conflictuelles – et c’est un soulagement pour tout le monde qu’il ne soit plus nécessaire de scanner plus de 10 PR pour d’éventuels conflits ou chevauchements avant d’apporter un petit changement.
Du côté des problèmes ouverts, le nombre a été réduit de 51 à… 52. Pour mettre ces chiffres dans une perspective bien nécessaire, cependant, 25 « anciens » problèmes (créés avant septembre) et 19 « nouveaux » problèmes ont été fermés. De nombreux nouveaux problèmes ont été découverts lors du travail sur les outils et seront résolus à temps, ainsi que les problèmes plus anciens restants. Ils ne sont pas considérés comme une priorité pour le moment et seront plus faciles à résoudre après une refactorisation indispensable (nous en reparlerons plus tard).
Prise en charge de SPDX v2.3
Pendant longtemps, un gros problème avec les outils Python était leur manque de support pour SPDX v2.3 – ou, en fait, pour plusieurs aspects de v2.2 et v2.1 également. Nous sommes maintenant à un stade où toutes les propriétés v2.3, v2.2 et v2.1 sont prises en charge (voir les mises en garde ci-dessous) – les testeurs sont les bienvenus ! Étant donné que les outils Python ne prennent en charge aucune gestion spécifique à la version, la validation a été mise à jour pour suivre la spécification v2.3. L’introduction d’une gestion spécifique à la version est la principale motivation pour refactoriser les outils.
Mises en garde :
- Prise en charge RDF: JSON est sorti vainqueur lors de la discussion sur l’importance des différents formats de sérialisation, suivi de la balise/valeur en raison de son utilisation généralisée. Bien qu’il soit assez exhaustif dans ses spécifications, RDF peut être lourd à utiliser et sa courbe d’apprentissage abrupte dissuade de nombreux utilisateurs potentiels de choisir le format. Pour ces raisons, nous avons décidé de reporter la mise en œuvre de la prise en charge complète de RDF pour la v2.3 et de nous concentrer plutôt sur la pérennité des outils Python.
- Expressions de licence: La prise en charge complète des expressions de licence est un problème ouvert de longue date qui n’est pas encore résolu. Nous envisageons la possibilité d’utiliser le projet d’expression de licence nexB pour cela.
Préparer l’avenir
Relâchez-le déjà
La dernière version sur PyPI s’est produit il y a plus de trois ans et de nombreux changements ont été mis en œuvre depuis. Il est temps pour une nouvelle version, et il y a déjà un brillante nouvelle version candidate pour 0.7.0. Nous aimerions que la version soit sans bogue, donc plus de testeurs sont toujours les bienvenus ! N’hésitez pas à essayer de casser des choses et à découvrir si votre cas d’utilisation personnel est couvert.
Outre la mise à disposition de corrections de bugs et de nouvelles fonctionnalités, cette version nous permettra de commencer quelques modifications majeures :
Déplacez-vous vite et cassez des choses
Comme annoncé à plusieurs reprises dans cet article de blog, une refactorisation majeure de grandes parties des outils Python est à venir. Les principaux objectifs sont :
- rendant les outils Python facilement maintenables et extensibles
- fournir une API bien documentée et facile à utiliser pour les utilisateurs de la bibliothèque
- préparer les outils pour l’inclusion de la spécification SPDX v3 une fois qu’elle sera publiée
- permettant la gestion spécifique à la version des documents SPDX – en particulier, la validation spécifique à la version
Une esquisse de l’architecture prévue est incluse dans ce problème.
Le travail sur le refactoring a déjà commencé sur une branche de fonctionnalité dédiée (pour éviter d’entrer en collision avec la version) : une première version du nouveau modèle de données est terminée (publier), et des questions couvrant la couche de validation et Analyse JSON sont en cours.
Nous avons hâte d’avoir de tes nouvelles
Et c’est là que vous intervenez : nous aimerions établir une communauté dynamique autour du outils-pythonalors envoyez-nous vos commentaires sur GitHub! Faites-nous savoir ce que vous pensez des fonctionnalités existantes et des modifications/RP à venir et des fonctionnalités qui vous manquent encore beaucoup. Bien sûr, nous apprécions également chaque contribution que vous souhaitez apporter vous-même, qu’il s’agisse de code réel, de fichiers de test ou de cas d’utilisation particuliers que nous devons encore prendre en compte ! Si vous souhaitez nous parler directement, n’hésitez pas à rejoindre notre réunion de synchronisation hebdomadaire tous les jeudis à 16h30 GMT (17h00 GMT chaque premier jeudi du mois). Ou envoyez-nous un e-mail via la liste de diffusion SPDX tech pour organiser une discussion à un autre moment.
Références
Pour plus de commodité, certains liens importants sont répétés ici :