- Le 18 avril, le protocole de communication ROBERT a été publié par Inria et Fraunhofer/AISEC, dans le cadre d’un projet franco-allemand, permettant de donner un cadre pour le fonctionnement global, d’exposer les aspects sécurité et respect de la vie privée, et de garantir une interopérabilité au niveau européen pour le déploiement d’une application.
- Sur la base de ce protocole, les développeurs membres de l’équipe-projet StopCovid ont travaillé à l'implémentation des premières briques fonctionnelles de l’application et de son infrastructure, dans l’optique de proposer une application déployable opérationnellement en tant que de besoin, dans le cadre d’un calendrier fixé par le gouvernement.
- La publication des codes sources et de la documentation de StopCovid démarre le 12 mai 2020 et se poursuivra pendant le durée du projet. L’évolution du code prévoit l’analyse et l’intégration éventuelle des améliorations qui seront soumises par la communauté des développeurs.
- Les mises à jour de l’application seront disponibles au fur et à mesure.
Principe général de publication
Pour permettre aux différentes communautés de développeurs et de spécialistes d'expertiser les algorithmes implémentés et la façon dont cette application est programmée, en particulier si elle met en œuvre correctement le protocole ROBERT, le code source est publié sur GitLab. Le code source présenté est le résultat d'un processus de développement collaboratif impliquant de nombreuses personnes et organisations au sein de l’équipe-projet StopCovid.
Ce processus de développement collaboratif, qui a été contraint par l’agenda du projet, va s’ouvrir progressivement pour permettre de proposer des évolutions à l'application, de signaler des bugs, et de suggérer des changements pour la documentation, tout en suivant la prise en compte ou non de ces propositions. Pour ce faire, le choix de la plate-forme Gitlab d'Inria a été retenu.
Les contributions attendues par la communauté des développeurs permettront de faire évoluer des briques logicielles pour, au final, améliorer la qualité de l’application.
La politique de publication du code source développé dans le cadre du projet repose sur trois catégories :
- Une partie (restreinte) qui n’est pas publiée car correspondant à des tests ou à des parties critiques pour la sécurité de l’infrastructure ; en revanche une documentation, publiée sur le GitLab présentera les grands principes de sécurité mis en œuvre sur StopCovid (afin de respecter les demandes ou avis de la CNIL et les recommandations de l’ANSSI) ;
- Une partie qui est rendue publique sans qu’un appel à contribution ne soit attendu (les propositions seront bien entendu étudiées) : cela correspond par exemple à des parties qui implémentent directement des spécifications très précises ;
- Une partie qui relève à strictement parler de l’open source, avec des appels à contribution qui sont attendus : cela concerne le cœur de l’application, notamment l’implémentation du protocole ROBERT.
Phases de publication
L’équipe-projet StopCovid a décidé de publier le code en deux phases. Ce phasage ne remet pas en question les principes fondamentaux de publication ouverte du code mais permet une meilleure gestion de la montée en charge pour une mise à disposition éventuelle d’une application opérationnelle début juin.
Phase 1 : transparence
Une première partie des briques logicielles est publiée le 12 mai. Désormais visible, le code peut être revu par tous ceux qui le souhaitent. En le rendant public, l’équipe-projet StopCovid respecte son engagement de transparence.
Les personnes externes à l’équipe-projet StopCovid peuvent, à ce stade, donner un avis, faire remonter des suggestions ou des commentaires. Selon la pertinence technique de ces premiers retours, elles seront invitées à rejoindre le pool de contributeurs du projet pour gagner en efficacité.
Cette phase 1 limite l’ampleur des interactions du fait des contraintes sur les ressources de l’équipe-projet StopCovid, pleinement mobilisée dans le développement, dans le cadre d’un agenda restreint. Toutes les contributions seront lues attentivement afin de pouvoir retenir celles qui seront jugées pertinentes voire qui seront susceptibles de jouer un rôle critique à ce stade du développement du code.
Souhaitée la plus courte possible, la durée de cette phase 1 sera dépendante des contraintes liées aux phases de tests et au calendrier de mise en disponibilité de l’application.
Phase 2 : contribution
La partie logicielle qui implémente le protocole ROBERT sera mise en open source. La phase de contribution permettra à la communauté de contribuer au logiciel tout en respectant les mécanismes de régulation qui seront mis en place (essentiellement via de la revue de code et une acceptation ou un rejet par un comité de validation).
À ce stade, le travail de la communauté des développeurs, qu’ils soient internes ou externes au projet, sera précieux. Un temps d'intégration avec des process transparents sera précisé sous la responsabilité d'un comité de validation.
Du protocole à l’application StopCovid
Glossaire
API (Application Programming Interface) : ensemble normalisé de programmation par lequel un logiciel offre des services à d’autres logiciels (exemple : accès au réseau, à internet, au Bluetooth).
OS (Operating System) : système d’exploitation comprenant un ensemble de programmes qui pilote les différents composants (disque dur, écran, processeur, mémoire etc.) de l'appareil informatique et lui permet donc de fonctionner.
Protocole de communication : c’est l’ensemble des règles qui vont permettre d’organiser et donner du sens à des échanges de données : qui est à l’initiative d’une demande, comment cette demande est formatée, comment se fait la réponse et sous quelle forme, comment sont signalés les problèmes dans ces échanges et comment gérer un problème, etc.
Composant logiciel, brique logicielle, bibliothèque logicielle, boite à outils logicielle : ces éléments logiciels remplissent une fonction particulière ou un ensemble de fonctions cohérentes et peuvent être assemblés pour produire des logiciels plus complexes, à la manière de pièces détachées.
Review : une review (ou relecture) est un commentaire critique d’un document, de code source ou d’un logiciel déployé. Ce commentaire se veut respectueux et constructif et peut servir de base à une discussion entre les auteurs de l’objet relu et le relecteur, afin d’éclaircir certains points ou de proposer des modifications. Ce processus permet de prendre en compte les avis de différents spécialistes (développeurs, juristes, etc.).
Issues : ce terme désigne un problème ou une question. Dans les outils de gestion de projet de développement en ligne comme GitLab, les issues sont le moyen utilisé pour remonter un problème rencontré avec le logiciel, poser une interrogation ou même partager une idée d’amélioration, sur le principe de review/relecture
Release : ce verbe anglophone est utilisé en informatique pour désigner la mise à disposition d’une nouvelle version d’un logiciel. Les versions sont habituellement numérotées (V1, V1.1, V2, …). Le mot release est aussi utilisé pour désigner une version particulière du logiciel (ex : « Tu as récupéré la dernière release ? ou « J’utilise la release 1.4»).