Skip to content

Latest commit

 

History

History
457 lines (363 loc) · 23.7 KB

temp.org

File metadata and controls

457 lines (363 loc) · 23.7 KB

Publier un code source

Référencement et standardisation

  • TODO : ajouter éléments sur publicode.yml (et codemeta.json)

Exemples de mise en oeuvre

  • Une collectivité territoriale développe un outil de correction grammaticale pour LibreOffice. Ce logiciel est un module d’un logiciel libre existant et il répond à un besoin générique : il est pertinent d’en faire un logiciel libre « contributif » (niveau A).
  • Une administration développe un outil pour organiser la collecte de données sur le web (scraping). C’est un outil web « monolithique » mais qui répond à un besoin rencontré hors de l’administration : il peut être publié comme logiciel libre « ouvert » (niveau B).
  • Une administration centrale développe un thème pour les sites qu’elle publie à l’aide de Jekyll. Ce thème est un module d’un logiciel libre existant mais il répond à un besoin spécifique de l’organisme public : son code source peut être publié, mais sans recherche active de contributeurs ni maintenance particulière à l’égard des contributions extérieures (niveau C).

Chaque organisme peut tenter de prioriser les logiciels à ouvrir en fonction de ces critères.

Bonnes pratiques de gouvernance

Bonnes pratiques de communication

Bonnes pratiques pour la documentation

La licence pour la documentation

La licence GFDL (GNU Free Documentation License), rédigée par la FSF, est une forme de copyleft destinée à être utilisée sur un manuel, un guide ou tout autre document afin d’assurer à chacun la liberté effective de le copier et de le redistribuer, avec ou sans modifications, que ce soit à des fins commerciales ou non commerciales.

La licence Etalab 2.0 est aussi une bonne licence pour publier le contenu d’une documentation.

Les licences Creative commons ont été conçues pour permettre la diffusion des oeuvres encadrées par le droit d’auteur, mais distinctes du logiciel.

Voici les deux licences les plus utiles dans le contexte des travaux des administrations.

Creative commons « paternité - partage à l’identique », (CC-BY-SA)

Cette licence s’apparente à une licence de logiciel libre de type copyleft. Toute oeuvre dérivée pourra être redistribuée à condition de conserver la licence initiale. Un éventuel usage commercial est possible, sans l’autorisation de l’auteur.

Une telle licence permettra la publication de documents dont la nature évolutive est claire. C’est particulièrement vrai pour la documentation logicielle, documents d’analyse fonctionnelle, d’architecture, de conception technique, d’installation, d’exploitation, ainsi que les guides et tutoriels utilisateurs. Un contributeur pourra ainsi redistribuer, s’il le souhaite, une nouvelle version du logiciel, avec une documentation mise à jour.

Creative commons « paternité - pas de modification », (CC-BY-ND)

Cette licence interdit de redistribuer toute version modifiée de l’oeuvre. Comme il n’est pas possible de créer une oeuvre dérivée, il n’y a pas de pertinence à exiger le partage à l’identique. Cette licence est incompatible avec l’esprit d’une licence libre. Un usage commercial est possible, sans l’autorisation de l’auteur. Ce type de licence convient à la publication :

  • de textes officiels : textes juridiques, rapports publics, lettres de mission, cadres techniques
  • de documents factuels ou contractuels : compte-rendus de réunion, points de décisions, CCTP, CCAP
  • de documents de communication : communiqués politiques , interviews institutionnelles ou nominatives, témoignages, discours

Il est possible d’interdire les usages commerciaux en ajoutant une clause « Pas d’utilisation commerciale ». Une telle déclinaison existe pour chacune des licences précédemment citées. Mais en interdisant un usage commercial sur les oeuvres, qu’interdit-t’on en vérité ?

Il est interdit au licencié de tirer un profit commercial ou une compensation financière quelconque de la présentation, de la représentation, de la communication de l’oeuvre pour quelques supports, médias, procédés techniques et formats utilisés. Par exemple une personne ayant compilé un CD contenant des documents sous Creative commons de type « pas d’utilisation commerciale » ne pourra vendre même à prix coûtant le CD, sans en avoir demandé l’autorisation. De même, une édition papier d’un document, ne peut être diffusée sauf gratuitement.

Bonnes pratiques de publication

Quelle langue utilisée dans les dépôts de code source ?

Notes sur les langues employées dans un dépôt de code sources :

  • les messages de commits doivent être rédigés en anglais ;
  • le code source doit lui-même privilégier l’anglais, sauf pour tout ce qui relève d’un domaine métier propre à l’administration ;
  • la documentation utilisateur doit être rédigée en français ;
  • les documentations pour les développeurs et les instructions pour les contributeurs doivent être rédigée en anglais.

Quelle architecture de fichier ?

L’architecture de fichiers d’un dépôt de code source type pour l’administration devrait ressembler à ça :

=== . ├── CODE_OF_CONDUCT.fr.md ├── CODE_OF_CONDUCT.md ├── CONTRIBUTING.fr.md ├── CONTRIBUTING.md ├── LICENSE.md ├── publiccode.yml ├── README.fr.md └── README.md ===

Potentiellement, si plusieurs licences sont appliquées au code source (plusieurs dépendances avec des licences différentes, la documentation sous une licence à part, etc.) le fichier LICENSE.md peut référencer la licence spécifique pour chaque élément du dépôt, et mettre les différentes licences dans un dossier LICENSES :

=== . ├── CODE_OF_CONDUCT.fr.md ├── CODE_OF_CONDUCT.md ├── CONTRIBUTING.fr.md ├── CONTRIBUTING.md ├── LICENSE.md ├── LICENSES │   ├── CC-BY-SA-4.0 │   └── MIT ├── publiccode.yml ├── README.fr.md └── README.md ===

Comment rédiger les messages de commits ?

Les messages de commits devraient ressembler aux exemples suivants. Ici, ils sont sont rédigés en français pour en faciliter la lecture par les agents publics développeurs en position de publier des codes sources, mais devraient être rédigés en anglais.

===

  • Ajout d’un fichier README
  • Ajout d’une licence et des informations sur l’auteur
  • Ajout d’une présentation générale du dépôt
  • Ajout d’instructions d’installation
  • Ajout de lien vers la documentation
  • Ajout de conventions de programmation
  • Ajout d’instructions pour les contributeurs
  • Ajout d’un fichier publiccode.yml

===

Métriques de qualité d’un projet libre

FAQ

Une administration peut-elle sponsoriser un logiciel libre ?

Comment construire une communauté open source autour de son projet ?

En tant qu’administration, comment soutenir un projet libre ?

Comment aborder le sujet de la communication au sein d’un projet de logiciel libre ?

Comment faire connaître le logiciel libre que mon administration développe ?

Vous pouvez consulter cette présentation BlueHats qui propose des pistes.

Comment mettre fin à un projet libre ?

Dois-je créer un compte GitHub pour moi ou mon organisation pour contribuer aux logiciels libres ?

Chercher une forge proche en consultant https://code.gouv.fr/sources/#/repos Un compte d’organisation car ce sont les seuls prix en compte sur code. gouv. Penser à demander de référencer la forge de l’orga à contact@code.gouv.fr Si l’organisation à plusieurs forges ou comptes d’orga : pas de problème. Si nouveaux codes : forge/compte d’organisation Si projet existant : fork sur la forge d’organisation. Les forks sont listés sur code.gouv.fr

Est-il souhaitable d’utiliser ma solution de gestion de code Source (GitLab, Bitbucket) en ouvrant des projets en mode public?

lire le rapport sur les forges REX déploiement et maintenance. plutôt chercher une forge publique proche. (proche = ministère ? réseau des laboratoires ?) ce qui assurera la visibilité, c’est d’être référencé, pas le fait d’être sur une “grande” forge. seules défférences fonctionnelles : pas les fonctionnalités GIT mais les fonctionnalités de la CI/CD.

Est-il préférable de conbribuer en tant qu’individu (prenom.nom de l’agent) ou plutôt en tant qu’organisation aux logiciels libres ? (compte individuel ou compte entreprise ?)

en tant qu’individu.

Comment identifier les projets succeptibles d’être en logiciel libre ?

les équipes métiers peuvent évaluer architecture des projets : modularité et généricité donnent un bonus de réemployabilité ( réutilisable par d’autres administrations). des demandes d’autres administrations prioriser : le plus générique, le meilleure. VS le spéicifique ou le mal écrit n’est pas un bon candidat pour une publication open-source. Expliciter pourquoi nous publions un dépôt. Quels logiciels ouverts à quel degrès https://code.gouv.fr/documentation/#/publier?id=quels-logiciels-ouvrir-à-quel-degré-

Quels précautions et quels points à vérifier avant d’ouvrir du code source interne à notre organisation ?

sécurité - pas de secret dans l’historique GIT sécurité - ne pas augmenter la surface d’attaque ( mais ne pas sécuriser en cachant) legalité - choisir la licence logicielle ( en tenant compte des licences intégrées des modules et bibliothèques employées ) https://www.data.gouv.fr/fr/pages/legal/licences/ https://code.gouv.fr/guides/juridique/

Faut-il mettre en place une Gouvernance des logiciels libre au sein de l’entreprise ?

simplement informer le manager. autonomie https://www.numerique.gouv.fr/publications/politique-logiciel-libre/

Comment faire pour démarer la démarche d’ouverture du code source

Comment intéragir avec la DSI dans le cadre de l’ouverture d’un code source ?

[#A] Qu’est-ce que cela apporte au-delà du respect de la législation ?

En tant qu’agent de l’État, puis-je contribuer à un logiciel libre existant et utilisé dans mon administration/service sur mon temps de travail? Si oui dans quelles conditions ?

Si le logiciel est réalisé par un ou plusieurs salariés dans le cadre d’une relation de subordination à leur employeur : les droits moraux restent acquis aux auteurs mais les droits d’exploitation sont transmis de plein droit à l’employeur. Cette disposition est valable pour l’agent dans ses missions de services publics (Art. L. 131-3-1 du Code de la propriété intellectuelle).

Si le logiciel est réalisé sur le temps libre de l’auteur, de sa propre initiative, avec ses propres moyens techniques et sans rapport avec sa fonction : il est alors auteur de plein droit et dispose à sa guise de l’ensemble des prérogatives liées à l’expression en particulier des droits d’exploitation.

Donc en tant qu’agent de l’État, il est possible de contribuer si vous avez l’accord de votre hiérarchie.

Le document qui acte de cette possibilité de contribuer à des logiciels libres existants est la politique de contribution open source de 2018.

Cependant, ça peut être plus compliqué que de simplement obtenir l’accord de la hiérarchie, notamment s’il faut signer un CLA pour contribuer au projet. Dans ce cas-là, les services juridiques devront s’en mêlent. S’il n’y a qu’un DCO, vous pouvez l’accepter sans mobiliser vos services juridiques.

Distinction entre « utilisation » et « modification » de l’AGPL

AGPL Licence section 13:

Remote Network Interaction; Use with the GNU General Public License.

Notwithstanding any other provision of this License, if you modify the Program, your modified version must prominently offer all users interacting with it remotely through a computer network (if your version supports such interaction) an opportunity to receive the Corresponding Source of your version by providing access to the Corresponding Source from a network server at no charge, through some standard or customary means of facilitating copying of software. This Corresponding Source shall include the Corresponding Source for any work covered by version 3 of the GNU General Public License that is incorporated pursuant to the following paragraph.

  • Il n’est pas question d’utilisation d’un logiciel pour tomber sous les obligations de redistributions. Il faut que le logiciel soit modifié pour devoir fournir le code source du logiciel qui tourne sur un serveur.
  • La question : Est-ce qu’un appel d’API constitue une modification du code source ?
  • Soit un logiciel A sous AGPL exécuté sur une machine 1 et qui expose des API en web service sur cette machine 1
  • Soit un logiciel B sur une machine 2 qui interroge les API exposées via la machine 1
  • Le logiciel B ne contient aucune ligne de code du logiciel A
  • Le logiciel B sollicite des points d’accès (“endpoints”) de la machine A

Est-ce que le logiciel B peut être considéré comme dérivant du code source du logiciel A?

Le code source du logiciel B doit-il être redistribué aux utilisateurs du logiciel B?

Exemples

Cette section viendra documenter des exemples utiles à l’illustration des différents sujets.

Un exemple d’utilisation d’un logiciel libre

Un exemple de publication d’un code source

Un exemple de contribution à un logiciel libre

Un exemple d’Open Source Programme Office

Trajectoires possibles pour un logiciel libre né dans l’administration

Glossaire

Logiciel dérivé

Logiciel composé

Logiciel modifié

Ressources

Services en ligne utiles

Sites référençant des logiciels libres

  • Framasoft : Ce site propose une base référençant plus de 1200 applications sous licence libre et disponible sous Windows. Figurer dans cette base est une bonne garantie du caractère libre d’un logiciel.
  • Adullact : Sur ce site une vérification précise du caractère libre de l’application est opérée avant toute mise à disposition, c’est une condition de l’hébergement.
  • Apache : La gouvernance autour des projets de la fondation Apache est très forte. De part ses statuts elle héberge exclusivement des projets sous licence Apache Licence. Le caractère libre des composants est garanti.
  • Debian : le fait pour une application d’être packagée par la communauté Debian dans les sections « main » et « contrib » des dépôts de la distribution, est une forte garantie de son caractère libre. Ce sont d’ailleurs les principes du logiciel libre selon Debian qui ont donnés naissance aux 10 critères permettant de qualifier une licence open source selon l’Open Source Initative. Depuis la page http://www.debian.org/distrib/packages il est possible de rechercher un logiciel afin de vérifier qu’il appartient bien au section « Main » ou « contrib ».
  • FSF/UNESCO Free Software Directory : La Free Software Foundation et l’UNESCO ont recensé plus de 16 900 logiciels pour lesquels le caractère libre de la licence a été vérifié.

Les politiques ministérielles

Vous pouvez lire notre entrée de blog de mars 2022 sur les feuilles de routes.

Voici une liste des politiques ministérielles déjà publiées concernant le logiciel libre :

Des success stories

Les success stories dans le privé sont désormais compliquées à dénombrer. En vrac, on peut citer : Orekit, RedHat (du moins pendant de nombreuses années), Mozilla, Axelior, Eclipse, etc.

Pour le public, on peut citer : Lutece de la ville de Paris, le fait qu’un État fédéral allemand fait passer 30 000 PC sous Linux et LibreOffice, lefait que le système de design de l’État (DSFR) permet entre 3,1 et 4,9 M€ d’économies par an (note de bas page 86). Vous pouvez voir une liste plus complète de logiciel libre à fort potentiel de réutilisation sur code.gouv.efr/awesome.

Modèles de dépôts git exemplaires

  • Généralités:
    • Exmplaire sur les messages de commit en anglais
    • Exemplaire sur la doc utilisateur en français
    • Exemplaire sur la doc dev en anglais
    • Exemplaire sur les noms de variable dans la langue du référentiel (FR, EN)
    • Exemplaire sur les commentaires dans le code qui sont en anglais

NEXT Pour une librairie

NEXT Pour une startup d’État

NEXT Pour un projet d’intérêt général sensible

  • Utiliser la licence AGPL

Documents divers

Publiées par des organismes publics

Publiées hors de l’administration

En français

En anglais