Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Comment aborder et contribuer sereinement à un projet open source ? (Masterclass Université Toulouse III)

Comment aborder et contribuer sereinement à un projet open source ? (Masterclass Université Toulouse III)

Aujourd'hui l'open source est consubstanciel de l'informatique. Que ce soit en terme de lignes de code, d'emplois ou de parts de marché, l'open source a un poids énorme.

Toutefois, c'est aussi une chose intimidante de prime abord, surtout quand on veut apporter ses premières contributions voire publier un projet entier.

Il est normal d'avoir des craintes, des inquiétudes, et de vouloir chercher plus de tranquillité d'esprit.

Comment s'y retrouver avec les principales licences sans s'exposer à des litiges et procès ?
Quelles sont les règles et réflexes pour avoir un dépôt propre, ainsi qu'un contexte de travail avec des règles bien établies ?
Comment protéger ses droits moraux et patrimoniaux, surtout en travaillant à plusieurs ?
Comment bien préparer ses contributions sans oublier les humains qui sont impliqués ?

Cette présentation va tenter de répondre à ces questions, avec des conseils, références et bonnes pratiques à partager pour bien se lancer !

Support de présentation sous licence CC BY-SA.

Vous avez aimé ce support ? Offrez-moi une bière, merci <3
(https://pylapersonne.info/buymeacoffee)

Pierre-Yves Lapersonne

March 15, 2023
Tweet

More Decks by Pierre-Yves Lapersonne

Other Decks in Education

Transcript

  1. Pierre-Yves Lapersonne PROJETS FLOSES COMMENT ABORDER ET CONTRIBUER SEREINEMENT À

    UN PROJET OPEN SOURCE ? ✿✿✿✿ ʕ •ᴥ•ʔ/ 【デ═⼀ Version 12 24/07/2023
  2. 19 100 contributeurs sur le 1er projet du Top 10

    GitHub (microsoft/vscode)* 7 (* d’après un article de 2019)
  3. + 7 MILLIONS* de projets GitHub sous licence open source

    MIT (* Mesure via l'API GitHub, au 05/03/2023) 8
  4. COMMENT ABORDER ET CONTRIBUER SEREINEMENT À UN PROJET « FLOSES

    » ? On va arrêter d’employer l’expression « open source » à toutes les sauces à partir de cette page (┛ಠ_ಠ)┛⼺┻━┻)
  5. Aborder sans crainte les licences « Free Libre Open Source

    and Ethical Software » Se rassurer sur l’hygiène des dépôts logiciels et le contexte de travail Protéger ses droits moraux et patrimoniaux Bien préparer ses contributions sans oublier l’humain INQUIÉTUDES OU SÉRÉNITÉ RELATIVE ? 11
  6. PARTIE 1 (* a priori personne d’autre n’a trouvé mieux)

    Aborder sans crainte les licences « Free Libre Open Source and Ethical Software »*
  7. 1985 Richard M. Stallman Promotion du logiciel libre et défense

    de ses utilisateurs FREE SOFTWARE FOUNDATION 14
  8. Droit d’utiliser le logiciel sans restriction de lieu, de personne,

    de technologie, de produit Droit d’étudier le fonctionnement du logiciel et de l’adapter à ses besoins Droit de distribuer des copies du logiciel, code source comme binaires* Droit de modifier le logiciel, de publier le code source et les binaires* 4 LIBERTÉS FONDAMENTALES (* binaires, code objet, code minimisé, code compilé ou byte-compilé…) 15
  9. COPYLEFT « FAIBLE » WEAKLY PROTECTIVE Souvent une distinction entre

    les sources et les binaires Peu de problématiques pour les développements commerciaux Présent surtout dans les libs Pas de propagation 16
  10. MOZILLA PUBLIC LICENSE 2.0 2012 Indiquer où trouver le code

    source Publier les modifications sous la même licence Davantage focalisé sur les fichiers 17
  11. LESSER GNU GENERAL PUBLIC LICENSE (V3) 2007 Indiquer où trouver

    le code source Différence de comportement si lien statique ou dynamique avec le composant Une sorte de GPL « pour les libs » 18
  12. COPYLEFT « FORT » STRONGLY PROTECTIVE Se « propage »

    ou « contamine » tout le programme Notion de « portée » (containers, machines virtuelles, machines...) Notion « d’agrégation » et de «composition » Très peu compatible avec les autres licences 19
  13. GNU GENERAL PUBLIC LICENSE (V3) 2007 Clause « liberty or

    death » (v2) Clause anti DRM / anti-tivoïsation (v3) Clause anti brevets (v3) 20
  14. AFFERO GNU GENERAL PUBLIC LICENSE (V3) 2007 Basé sur la

    GPLv3 Propagation via le réseau 21
  15. 1998 Bruce Perens et Eric S. Raymond Promotion des logiciels

    open source OPEN SOURCE INITIATIVE 23
  16. Distribution libre et sans contraintes du logiciel Distribution sans contrainte

    du code source et des binaires Possibilité d’avoir des dérivés et de les distribuer dans les mêmes conditions Protection de l’intégrité de l’oeuvre de l’auteur Pas de discrimination envers les personnes Pas de restrictions sur les usages du logiciel Les droits s’appliquent à tous ceux ayant reçu le programme sans clause supplémentaire La licence ne s’applique pas à seulement un produit Pas de restrictions sur les autres logiciels distribués Technologiquement neutre 10 CRITÈRES 24
  17. MIT 1980’ Permissive et sans copyleft Compatible avec presque toutes

    les licences Très peu de restrictions Developer friendly Une des plus répandues 25
  18. BSD 1980’ Plusieurs versions, sans copyleft, dont : Zero-Clause BSD

    
 (comme la MIT, mais floue) 2-Clause BSD « free » 
 (garder les copyrights) 3-Clause BSD « new » 
 (pas de promotion avec les noms des contributeurs) 26
  19. APACHE 2.0 2004 Permissive et sans copyleft Compatible avec beaucoup

    de licences Protection du nom du logiciel et des contributeurs Obligatoire de mentionner les brevets et les modifications La plus répandue ! 27
  20. 2020 Coraline Ada Ehmke 7 principes des licences éthiques Le

    travail profite aux biens communs Tout le travail est public La communauté est juste et bienveillante Le travail doit être accessible à tous Le travail priorise la sécurité des personnes Le travail protège la vie privée Le travail mérite d’être soutenu ORGANIZATION FOR ETHICAL SOURCE 29
  21. BSD 3-Clause No-Nuclear License BSD 3-Clause No-Military Do No Harm

    License Atmosphere Licenses Hippocratic License QUELQUES EXEMPLES Aucune licence éthique n’est reconnue par la FSF et l’OSI 
 car certains de leurs critères ne sont pas respectés ! 30
  22. Présence de clauses supplémentaires 
 (comme Realm jusque septembre 2022)

    Changement de licence en cours de route 
 (comme Facebook avec sa licence BSD+Patent) Licence qui diffère selon la version, le produit ou les fichiers 
 (licence open source pour le code source, Creative Commons pour les images) Présence de licences multiples 
 (comme pour le langage de programmation Rust) Condition des licences 
 (GPL-2.0-only ou LGPL-2.0-or-later ou AGPL-3.0-only ou GPL-3.0-or-later ou … ?) Compatibilité entre les licences Copyright, copyleft ou copyfarleft À VÉRIFIER 32
  23. CHOIX DE LA FORGE LOGICIELLE e.g. Bitbucket, GitHub, GitLab Vérifier

    les offres Définir son besoin d’hébergement 
 (autohébergé ou non) Estimer ses besoins 
 (chaîne CI/CD, apps tierces, arborescence projets, rôles, …) 34
  24. APPLICATION DU DCO Vérifier au préalable l’identité configurée 
 (nom,

    prénom, mél) Appliquer le Developer Certificate of Origin pour confirmer que la contribution est conforme et engager ainsi les responsabilités de la personne qui contribue (author) et valide (committer) 37
  25. Permet d’attribuer la propriété intellectuelle entre les acteurs d’un projet

    Définit au besoin des licences d’usage irrévocables Définit aussi la concession de certains droits d’un acteur au profit d’un autre Pose les bases légales en cas de litiges Liste nominativement les contributeurs des différentes parties … CONTRIBUTOR LICENSE AGREEMENT 45
  26. 46

  27. Certains fichiers sont utiles voire indispensables pour apporter de la

    clarté dans le projet LICENSE README AUTHORS voire en plus CONTRIBUTORS THIRD-PARTY CHANGELOG CONTRIBUTING, DCO CODE OF CONDUCT voire en plus CODE OF CONFLICT SECURITY DÉCRYPTER UN DÉPÔT 48
  28. D’autres peuvent dépendre des forges ou s’interconnecter avec d’autres outils

    CITATION.cff pour bien citer son projet, avec aussi un lien ORCID CODEOWNERS pour identifier des responsables (revues de code, requests, ….) gitlab-ci.yml, github-ci.yml pour les chaînes CI/CD DÉCRYPTER UN DÉPÔT 49
  29. Mesurer le taux de couverture (codecov.io) Chasser les vulnérabilités (snyk.io)

    Mettre à jour ses dépendances automatiquement (Dependabot) Vérifier l’application du DCO (GitHub DCO bot) Protéger et chasser les secrets qui fuitent (gitleaks) Chercher d‘autres données dans un dépôt Git (floss-toolbox) Lister (ou essayer) les licences des composants tiers (scancode-toolkit ou floss-toolbox) Templates GitLab CI pour sa chaîne CI/CD (to be continous) Format SPDX pour ses en-têtes de fichiers (spdx.dev) Avoir un code propre (sonarsource.com) Supprimer des fichiers problématiques de son historique (BFG Repo-Cleaner) OUTILS PRATIQUES 50
  30. Droits moraux 
 - Inaliénables, reconnaissent à l’auteur entre autres

    la paternité de l’oeuvre 
 - Perpétuels 
 - Concernent notamment le code source et la documentation Droits patrimoniaux / économiques / d’exploitation 
 - Cessibles, confèrent au titulaire de ces droits une possibilité d’exploitation 
 - Durée limitée dans le temps (avant passage au domaine public) 
 - Concernent le logiciel, les produits, les algorithmes, etc 
 - Rémunération possible lors d’une cession des droits Possible de protéger les logiciels via l’Agence de Protection des Programmes LE DROIT D’AUTEUR 52
  31. 2002 : MySQL AB contre Progress Software Corporation 
 (violation

    de licence GPL de MySQL) 2008 : Software Freedom Law Center contre Monsoon 
 (violation de licence GPL de BusyBox) 2008 : développeurs d’IPTables et Busy Box contre Free 
 (violation GPL) 2009 : AFPA contre EDU4 
 (violation de licence GPL de VLC) 
 QUELQUES ÉPISODES JUDICIAIRES 55
  32. QUELQUES ÉPISODES JUDICIAIRES 56 2009 : Software Freedom Law Center

    contre Samsung et 13 autres entreprises 
 (violation de licence GPL de BusyBox) 2022 : Software Freedom Conservancy contre Vizio 
 (violation de licences GPLv2 et LGPLv2.1 avec SmartCastTV) < 2022 : Entr’Ouvert contre Orange et Orange Applications for Business 
 (litiges concernant Lasso sous GPL) 2022 : The Joseph Saveri Law Firm, Matthew Butterick contre GitHub, OpenAI et Microsoft 
 (class-action concernant les violations de licences open source avec GitHub Copilot)
  33. LES PROBLÈMES DU CODE SUGGÉRÉ Les licences sont-elles appliquées voire

    propagées ? À qui reviennent les droits moraux et patrimoniaux ? Comment prouver l’originalité ? L’usage des corpora de code source est-il loyal ? 63
  34. QUELQUES PISTES… Prendre en charge les issues en cours l10n,

    i18n, a11y Des correctifs de bugs trouvés Nouvelles versions d’OS, d’API, de dépendances, … Tout ce qui vous motivera ! 66
  35. TOUT DÉPEND Envoi de patchs aux mainteneurs du projet Fork

    et pull / merge requests Pull / merge requests en direct Avec l’accord au besoin de l’employeur 68
  36. PLATEFORMES DÉDIÉES Dons ponctuels 
 (comme Pixelfed via Open collective)

    Dons récurrents 
 (comme Mastodon sur Patreon, ou des admins d’instances du fediverse via Liberapay) 70
  37. Avoir son propre système de dons 
 - proposer de

    la visibilité voire du support 
 - mais bon courage pour gérer la paperasse (TVA, récépissés, taux de conversion, etc.) TAMBOUILLE PERSO 71
  38. Que ce soit pour des fonctionnalités payantes ou juste des

    dons 
 (mais attention avec les politiques des boutiques d’apps et à leurs commissions) ACHATS IN-APP 72
  39. Profiter des offres sponsorhips, des cryptomonnaies ou faîtes comme vous

    préférez ! (et ne pas oublier d’être conforme dans ses déclarations de revenus) ET AUSSI… 73
  40. SOIGNER LES ARRIVÉES ET LES ACCUEILS Découvrir ou présenter les

    membres 
 (via Slack, Discord, Mattermost, forums, Telegram, IRC, etc) Surveiller sa communication et son comportement 
 (Contributor Covenant, règles de Crocker, …) Attention aux égos et au gatekeeping 75
  41. PRENDRE SOIN DE SOI AUSSI Attention aux burn-out, surinvestissement et

    charge mentale Garder de la distance, surtout si les personnalités sont incompatibles Attention au social engineering 
 (adresses méls de commits, secrets, doxing…) Savoir (s’)arrêter. 76
  42. « Le logiciel libre représente 50 000 emplois et 4

    milliards d'euros en France » - Antoine Crochet-Damais - journaldunet.com (18 novembre 2015) « L’open source continue de croître plus vite que le marché de l’IT » - Laurent Delattre - itforbusiness.fr (12 décembre 2019) « 27,8 millions de lignes de code pour le noyau Linux au début 2020 » - Maryse Gros - lemondeinformatique.fr (07 janvier 2020) « Open Source : 7 chiffres sur les marchés français et européen » - Ariane Beky - silicon.fr (8 novembre 2022) « Open Source : 10 projets au top sur GitHub » - Ariane Beky - silicon.fr (12 novembre 2019) « Qu’est-ce que le logiciel libre ? » - gnu.org « The Open Source Definition (Annotated) » - opensource.org « Bitbucket vs Github vs Gitlab » - Pooja Gupta - educba.com Accessibilité Numérique Orange - a11y-guidelines.orange.com ✨ « Allô le monde - Est-ce que l’i18n de mon app va bien ? » - Pierre-Yves Lapersonne - speakerdeck.com ✨ « Licences open source : entre guerre de clochers et radicalité » - Pierre-Yves Lapersonne - speakerdeck.com ✨ "What is a CITATION.cff file?" - citation-file-format.github.io "Software Citation with CITATION.cff" - netlify.app "About code owners" - github.com "Introducing code owners" - github.blog « Contenu de la protection » - app.asso.fr ✨ « Best Buy, Samsung, Westinghouse, And Eleven Other Brands Named In SFLC Lawsuit » - softwarefreedom.org (14 décembre 2009) « Entr’ouvert / Orange et Orange Applications for Business » - legalis.net (21 juin 2019) « L'avocat et administrateur de la FSF est appelé comme expert dans un procès concernant la GNU GPL » - Even Moglen - gnu.org (31 mai 2021) « La violation de la licence libre GNU GPL condamnée en cour d’appel » - Guillaume Champeau - numerama.com (23 septembre 2009) 
 WEBOGRAPHIE (Hyperliens des pages web utilisés au plus tard le dimanche 5 mars 2023) 84
  43. « Trois auteurs de logiciel libre assignent Free pour contrefaçon

    » - Emmanuel Paquette - lesechos.fr (25 novembre 2008) « Un procès pour violation de la GPL v2 aux Etats-Unis » - Olivier Rafal - lemondeinformatique.fr (21 septembre 2007) « Une décision de justice montre que la GPL est à la fois une licence de droit d'auteur et un accord contractuel » - Stéphane Le Calme - developpez.com (17 mai 2022) « Violation d'une licence libre : Entr'ouvert fondé à poursuivre Orange pour contrefaçon » - Étienne Gonnu - april.org (10 octobre 2022) « Une décision importante de la CJUE avec effet bientôt sur un cas de violation de licence libre ? » - Frédéric Couchet - april.org (21 décembre 2019) « Coup médiatique et action en justice : l’affaire Fortnite est lancée » - Hadrien Augusto - presse-citron.net (14 août 2020) "Copyparleft and copyjustright" - Dmytri Kleiner - metamute.org (18 juillet 2007) « Choosing the right license » - github.com « What is the license for the content I post? » - stackoverflow.com Contributor Covenant - contributor-covenant.org Crocker’s Rules - sl4.org « Microsoft fâche Linux avec un code "osé" » - Adrien Geneste - lemondeinformatique.fr (20 juillet 2012) GitHub readme stats - github.com « GitHub confirms it has blocked developers in Iran, Syria and Crimea » - Rita Liao, Manish Singh - techcrunch.org (29 juillet 2019) « Pourquoi Notepad++ est conspué par des militants chinois depuis sa dernière mise à jour » - Julien Lausson - numerama.com (30 octobre 2019) ✨ « Un développeur sabote son projet open source et paralyse des milliers d’applications » - Alexandre Horn - numerama.com (10 janvier 2022) ✨ « “Je ne sais pas quoi dire.” – le post mortem d’event-stream » - Yann Bertrand - zenika.com (10 décembre 2018) ✨ « Le code est-il neutre ? » - Stéphane Bortzmeyer - bortzmeyer.org (20 janvier 2023) ✨ « REUSE Specification - Version 3.0 » - reuse.software « FLOSS and FOSS » - Richard Stallman - gnu.org (11 septembre 2021) WEBOGRAPHIE (Hyperliens des pages web utilisés au plus tard le dimanche 5 mars 2023) 85
  44. « Les contributions au logiciel libre sont-elles uniquement destinées à

    des fins humanistes ? » - Mathieu Ferment - librealire.org (8 novembre 2022) ✨ Orange Open Source - opensource.orange.com ✨ « Open Source : entre la SFC et GitHub, le torchon brûle » - Ariane Beky - silicon.fr (4 juillet 2022) "Give Up GitHub: The Time Has Come!" - Denver Gingerich, Bradley M. Kuhn - sfconservancy.com (30 juin 2022) ✨ « Le risque légal derrière l’utilisation de ChatGPT et Dall-E 2 » - Mike Elgan, Emmanuelle Delsol - enjeuxmarketing.com « Stack Overflow interdit les réponses du chatbot ChatGPT d’OpenAI » - Liam Tung - zdnet.fr (7 décembre 2022) ✨ "GitHub Copilot is not infringing your copyright" - Felix Reda - felixreda.eu (7 juillet 2021) ✨ GitHub Copilot Investigation - githubcopilotinvestigation.com ✨ « GitHub Copilot violerait les droits d’auteurs sur le code source » - Zacharie Tazrout - siecledigital.fr (30 janvier 2023) « Une avocate spécialisée dans l'open source donne son point de vue sur la plainte contre GitHub Copilot » - Stéphane Le Calme - developpez.com (10 novembre 2022) ✨ "GitHub and Copilot Intellectual Property Litigation" - saverilawfirm.com "FSF-funded call for white papers on philosophical and legal questions around Copilot" - Donald Robertson - fsf.org (28 juillet 2021) ✨ awesome-guidelines - github.com "So the GPL doesn't restrict the creator of the software in any way?" (Rightsholders are not bound by the GPL) - stackexchange.com (12 novembre 2015) WEBOGRAPHIE (Hyperliens des pages web utilisés au plus tard le dimanche 5 mars 2023) 86
  45. Couverture « oil painted teddy bear and octopus with hamers

    and helmets » générée par Dall-E 2 (openai.com) - modifiée avec GIMP Logo Université Toulouse III - tout droit réservé Logo de Buy Me A Coffee - buymeacoffee.com Photo - Pierre-Yves Lapersonne - tout droit réservé - modifiée avec GIMP Image de couverture « tasse à café » - pixelfed.social - Pierre-Yves Lapersonne - CC BY-SA Logo d’Orange - fr.wikipedia.org - Cbukley - domaine public Logo de l’April - fr.wikipedia.org - Association April - marque déposée Image « renaissance style of attorney writing on a paper » générée par Dall-E 2 (openai.com) Image « van gigh style gnu eating gras » générée par Dall-E 2 (openai.com) Logo de la FSF - wikipedia.org - Li Jiang - CC0 Logo de la FSFE - wikipedia.org - Free Software Foundation Europe - marque déposée Logo de la FSF France - fsffrance.org Logo Mozilla - wikipedia.org - Mozilla - domaine public Logo Copyleft - wikipedia.org - Zscout370 - domaine public Logo LGPL 3 - wikipedia.org - Free Software Foundation - domaine public Logo GPL 3 - wikipedia.org - Free Software Foundation - domaine public Logo AGPL 3 - wikipedia.org - Free Software Foundation - domaine public Image « van gogh style group of penguins in a desert » générée par Dall-E 2 (openai.com) Logo OSI - wikpedia.org - Colin Viebrock - domaine public Logo MIT - wikipedia.org - MIT - domaine public Logo BSD - wikipedia.org - The Free BSD Project - domaine public Logo Apache Foundation - wikipedia.org - The ASF - Apache 2.0 Image « van gogh style of Dr Who T.A.R.D.IS exploding » générée par Dall-E 2 (openai.com) Logo de l’Organization for Ethical Source - ethicalsource.dev Image « oil painted teddy bear and octopus with hamers and helmets » générée par Dall-E 2 (openai.com) Logo GitHub - wikipedia.org - GitHub - MIT Logo GitLab - wikipedia.org - GitLab - MIT Logo Bitbucket - wikipedia.org - Atlassian Image « pixel art attorney with an axe » générée par Dall-E 2 (openai.com) Logo GitHub Complot - GitHub - wikipedia.org - domaine public - modifié avec GIMP Logo de ChatGPT - ChatGPT - wikipedia.org - domaine public Une recette d’imperial stout qui a l’air chouette - univers-biere.net Image « pencil art of boats sailing to new world » générée par Dall-E 2 (openai.com) Logo Hacktoberfest (2022) - hacktoberfest.com Image diapo 57 (poulpe devant un écran) générée par Dall-E 2 (openai.com) Logo de Liberapay - wikipedia.org - pgno - CC0 Logo de Patreon - wikipedia.org - Patreon - domaine public Logo de Open Collective - opencollective.com Image pour GitHub Sponsors - github.com Logo de Duniter - wikipedia.org - Mo5ul - GPL 3 Logo de NetNewsWire - netnewswire.com Memes générés (diapos 57, 58, 59, 60, 74, 75, 81) - imgflip.com, memegenerator.net Image « darth vader eating an hamburger at a starbucks » générée par Dall-E 2 (openai.com) Image diapo 66 - mimiandeunice.com Logo de Telegram - Telegram FZ LLC - wikipedia.org - domaine public Logo de LinkedIn - Microsoft - wikipedia.org - domaine public - modifié avec GIMP Logo de Twitter - Twitter - wikipedia.org - Apache 2.0 Logo de Mastodon - Eugen Rochko & other Mastodon contributors - wikipedia.org - AGPL - modifié avec GIMP Insertions de code source et ligne de commande via carbon.now.sh RESSOURCES GRAPHIQUES
  46. Ce support a été rédigé pour atteindre plusieurs buts :

    - faire connaitre les principales licences open source, libres et éthiques en début d’année 2023 - donner des conseils pour avoir un dépôt logiciel sain - donner des éléments d’ordre juridique et partager des faits judiciaires, sans jugement ou parti pris - partager quelques éléments supplémentaires de réflexion 
 - pour notamment un public débutant, ayant peu pratiqué, ou curieux 
 - notamment les étudiants de 1ère année de master informatique de l’Université Toulouse 3 et doctorants de l‘IRIT 
 - dans le cadre d’une « master class » 
 Les exemples, images, logos et photographies utilisés dans ce support ne sont ici qu’à but éducatif ou décoratif. 
 Les opinions exprimées sont les miennes, et ne représentent aucunement celles de tiers (employeurs, associations etc.) avec lesquels j’ai pu être ou suis encore en relation. Le contenu présenté ne vaut pas avis juridique. Je rappelle à toute fin utile que ma déclaration d‘intérêts est en ligne (pylapersonne.info/declaration).