# Open Source: Comprendre, Contribuer Par Lionel Laske lionel@lespot-bouygues.com # Introduction Lionel LASKE * Responsable Le Spot BOUYGUES * Membre du board de l'organisation Open source sugarlabs * Auteur et Lead developpeur sugarizer * 10 000 utilisateurs * 80 contibuteurs * Plateforme educative pour enfant * Mentor Google Summer of Code depuis 2013 # Pourquoi ce cours ? * Parce que l'Open Source est un phenomene mondial ! * devenu culturel * open data: open source lie a la data * Wikipedia * Open Street Map * TousAntiCovid * Parce que c'est un sujet complexe * part de technique (Github) * part de juridique * modele economique * Comment ca fonctionne ? * Comment on gagne de l'argent avec des outils ouverts ? * Pour nous faire partager son experience # Partie 1 - Comprendre ## Quizz Time Quelle est la societe qui contribue le plus sur GitHub ? - [ ] The Linux Foundation - [ ] Google - [x] Microsoft - [ ] RedHat * Microsoft * $1^{er}$ contributeur GitHub * TypeScript * Visual Studio Gode * GitHub * Npm * Google * $2^{nd}$ contributeur GitHub * Android * Angular * TensorFlow * Kubernetes * Facebook * React * React Native * GraphQL * IBM * RedHat * Eclipse * Apache Spark ## Pourquoi on fait de l'open source ? :::warning L'Open Source est omnipresent ::: ![](https://i.imgur.com/8VmUZ7b.png) ## Avantages de l'Open Source * Cout d'usage * Cout de developpement * S'appuie sur d'autres developpeurs pour developper un outils * Communaute * Mettre un projet en open source: permet de developper une communaute * Avancer plus vite sur l'outils * Innovation * Plus facile d'innover * Beneficier des idees des autres * Securite * Peut etre a double tranchant * Avoir le code ouvert: "Vous pouvez me faire confiance" * White hat trouvent des failles de securite * Reversible * Voir comment sont traitees nos donnees ## Definition :::danger Les 4 libertes fondamentales * **Liberte 0**: Pouvoir executer le programme * **Liberte 1**: Pouvoir etudier son fonctionnement * **Liberte 2**: Pouvoir le redistribuer * **Liberte 3**: Pouvoir le modifier et le redistribuer ::: *Comment s'assurer qu'un logiciel est Open Source ?* Plusieurs licences possibles |open source initative|Free Software Foundation| |-|-| |Approche pragmatique|Approche Ethique| |Considerations techniques: logiciels de meilleurs qualites car plus de contributeurs et de reviewers|Considerations idealistes: l'utilisateur doit garder le controle du logiciel| |Favoriser les modeles economiques|Liberer les utilisateurs| ### ... en opposition au logiciel proprietaire * Seul l'auteur peut acceder au code source (ou des partenaires sous NDA) * Pour utiliser le logiciel vous devez accepter une licence qui: * Interdit la redistribution/pret/revente #### Exemple: Licence Windows ![](https://i.imgur.com/YNbBnnS.png) ## Historique ### Quizz Time Qui a invente le concept d'Open Source ? - [ ] Steve Job - [ ] Linus Torvald - [ ] Bill Gates - [ ] Richard Stallman :::warning Aucune des 4 reponses n'est fausse ::: ### 1960: Prehistoire * Le hardware est tres cher * L'informatique est reservee aux chercheurs * Le logiciel a une complexite limitee * Le logiciel est disponible librement ### 1970: Proprietaire * Baisse du cout des ordinateurs * Augmentation de la complexite des logiciels * Apparition des 1er micro-ordinateurs * Premieres licences proprietaire * Seules les universites continuent a partager le code #### Anecdote : An Open Letter to Hobbyusts par Bill Gates ![](https://i.imgur.com/XVefRls.jpg) ### 1980: Naissance * 1983: annonce du projet GNU par Richard Stallman * 1985: Creation de la Free Software Fundation * 1987: Lancement de GCC #### Anecdote: l'imprimante de Stallman * Richard Stallman est programmeur au AI Lab du MIT * Il souhaite modifier le pilote d'une imprimante Xerox pour signaler automatiquement les bourrages papiers * Il sollicite un collegue qui dispose du code source mais qui refuse *"Il m'a explique qu'il s'etait engage a ne pas en donner de copier"* car il avait une NDA avec Xerox > *"Ce qui rendait l'enjeu important etait le caractere systematique et impersonnel de son refus, le fait qu'il s'etait engage d'avance a ne cooperer ni avec moi ni avec aucune autre personne"* - R. Stallman ### 1990: Fondation * 1991: Creation de **L**inux * 1993: Lancement des distributions Debian, NetBSD, FreeBSD, RedHat * 1994: Creation de **M**ySQL * 1995: Creation de **P**HP * 1996: Creation d'**A**pache * 1998: Lancement de Netscape * 1999: Lancement de SourceForce ### 2000: Explosion * 2002: Lancement Firefox * 2004: Lancement de la distribution Ubuntu sur base Debian * 2005: Lancement du projet Git * 2007: Lancement de Android, sur une base Linux * 2008: Lancement de GitHub * 2008: Lancement de Chromium en meme temps que Chrome ### 2010: Evidence * 2010: Lancement de nom * 2013: Revelations de Edward Snowden * 2014: Lancement de Signal * 2018: Rachat de Github par Microsoft pour 7,5 milliards de \$ * 2019: Rachat de RedHat par IBM pour 34 milliards de \$ ## Licences ### Quizz Time Combien existe-t-il de licences Open Source "officiellement" reconnues ? - [ ] 3 - [ ] 10 - [x] 100 ### A qui appartient votre code ? * A votre ecole si vous etes etudiants * A votre employeur si vous etes salaries * A vous si vous le faites chez vous * Sauf contrat employeur specifique :::danger Pour permettre a d'autres d'y contribuer, il faut donc utiliser une licence **ouverte**. ::: |Permissive|Copyleft| |-|-| |Tout le monde peut modifier|Tout le monde peut modifier| |Les versions peuvent ne pas etre modifiables|Tout le monde doit pouvoir modifier les versions modifiees| ### Ce que decrivent les licences * Les regles de mention de paternite du programme * Les regles pour modifier le programme * Les regles pour redistribuer le programme * Les regles pour associer d'autres licences dans le meme programme * La protection contre les brevets ### Cartographie des licences Open Source ![](https://i.imgur.com/4TisdJa.png) ### Anecdote: la controverse React * React est lance par Facebook en 2013 sous **Apache v2** * En 2014 React passe sous licence **BSD** avec une note sur l'utilisation des brevets: * Permet d'utiliser les brevets possedes par Facebook * Facebook s'autorise a vous retirer les droits d'utilisation si vous menez une action en justice contre eux ou contre une autre entreprise utilisant React * En 2015 Facebook ajoute une note supplementaire a la licence pour eviter les confusions * En 2017 la fondation Apache prend position contre l'utilisation de React car il n'est pas sous une licence Open Source * En novembre 2017, React passe sous licence MIT ### Anecdote: la licence SSPL MongoDB * MongoDB est lance en 2009 sous licence **AGPL v3** * Les clouds d'Amazon, d'IBM, ... louent des instances MongoDB sans que MongoDB en tire benefice * En Octobre 2017, MongoDB devient une societe cotee * En Octobre 2018 passe son code sous licence **SSPL** et soumet cette nouvelle licence a l'OSI * La licence impose qu'un fournisseur de cloud utilisant MongoDB ouvre *toute la stack technique* permettant son herbegement * En Mars 2019 l'OSI refuse de consider la licence SSPL comme une licence Open Source * RedHat, Debian, Fedora et les autres distributions Linux excluent MongoDB de leurs distributions * En Janvier 2019, Amazon lance DocumentDB, une base de donnees NoSQL compatible MongoDB ## Gouvernance ### Quizz Time Qui décide des contributions acceptées dans le Kernel Linux ? - [ ] Linus Torvald seul - [x] Le board de la Linux Foundation - [ ] Les entreprises qui contribuent au Kernel ### Le modeles de gouvernance Open Source #### Dictateur bienveillant * "BDLF": Benevolent Dictator For Life * Le Dictateur est generalement l'auteur initial * A le dernier mot sur toutes les grandes decisions * Evite des discussions sans fin... * La qualite et le succes du projet dependent beaucoup de la sagess du dictateur ##### Exemple: Gouvernance Linux * Jeremy Malcolm - Internet Governance Forum * > "*Torvalds possesses ultimate authority* to decide which contributions to the Linux operating system kernel should be accepted and which should be refused" * > "The Linux kernel development process is neither anarchistic nor consensual: *if Torvalds does not like a patch, it does not go in to the kernel*" ![](https://i.imgur.com/YY6EF9e.png) #### Gouvernance Communautaire * Pilotage ouvert et public (mailing list, IRC, ...) * Choix collegiaux: * Qui peut contribuer * Qui peut commiter * Qui peut resoudre les conflits * Recherche de consensus dans la decisions * Favorise la Meritocratie * Release sont generalement mois frequentes car circuit de decision plus long ##### Exemple: Gouvernance FreeBSD * Composition: * Contributeurs (plusieurs milliers) * Commiters (500) * Core team (9) * Les Commiters approuvent les PR des Contributeurs * Les Commiters elisent la Core Team * La Core team choisi les Commiters parmi les Contributeurs * La Core team decide des orientations du projet #### Gouvernance Entreprise * Une seule entite controle la Conception, le Developpement et les Release * Contributions externes pas forcement bienvenue * Roadmap pas necessairement publique * Discussions internes et controverses pas forcement publiques ##### Exemple: Gouvernance AOSP > "The Android Open Source Project (AOSP) includes individuals working a variety of roles. **Google is responsible** for Android product management and the engineering process for the core framework and platform; however, AOSP considers contributions from any source, not just Google." > "Project leads are senior contributors who oversee the egineering for individual Android projects." ## Modeles Economiques ### Quizz Time Quelle est la société qui tire le plus de revenu de l'Open Source ? - [ ] Google - [ ] Docker - [x] RedHat RedHat: 3,5 milliards de \$ de revenus par an ### Gagner de l'argent avec l'Open Source ? * Vente de licences * Une version "Community" gratuite avec une licence copyleft * Une version "Entreprise" payante avec plus de features et une licence permissive * Vente de services * Hosting ou mode SaaS * Formations/Certifications * Support * Autres * Publicite * Dons/Mecenat * Droit d'usage de la marque #### Exemple: ##### Elastic Search ![](https://i.imgur.com/k51LHZ6.png) ##### IntelliJ IDEA ![](https://i.imgur.com/UnnLZOy.png) ##### VLC * > "Le logiciel Francais le plus utilise au monde... et le moins rentable" J.B. Kempf * 1 million de telechargements/jour * 450 millions d'utilisateur * Plus de 3 milliards de telechargement * Developpe en 1997 a l'Ecole Centrale Paris * Sous GPL en 2001 * Gere par l'association VideoLan en 2008 * Creation en 2012 de la societe **VideoLabs** * 18 employes, 1m d'euros de CA * Monetise la terchnologie et les utilisateurs VLC pour delivrer des services #### Anecdote: Heartbleed * Vulnerabilite dans OpenSSL en 2011 * Decouverte en avril 2014 * OpenSSL etant utilise tres largement (Nginx, Apache, Android, ...) la faille touche 17% des serveurs wen et 800.000 objets connectes * En 2012 la **Open SSL Foundation** touchait 2.000\$/an pour financer ses contributeurs * Lancement en 2014 de la **Core Infrastructure Initiative** * Idee de la Linux Foundation * 3.000.000\$/an pour financer des projets Open Source "core" # Partie 2 - Contribuer ## Pourquoi contribuer a l'Open Source ? * Ameliorer ses competences * Participer au bien commun * Recontrer des gens du monde entier * Apprendre ou apprendre aux autres * Ameliorer les outils qu'on utilise * Se faire connaitre ## Quel projet choisir ? ### Quizz Time Quel est le pourcentage estimé de projets Open Source actifs ? - [ ] 30% - [x] 10% - [ ] 5% :::danger La plupart des projets Open Source sont des echecs... ![](https://i.imgur.com/GzpLcRn.png) ::: Les causes les plus courantes: * Ne repond pas a un vrai besoin * Plus assez de developpeuts interesses (ou le developpeur principal s'en desinteress) * Le projet est depasse techniquement, un competiteur fait mieux * Manque de documentation * Manque de leadership, pb de gouvernance, conflits * Manque de temps/d'argent :::success Ce fort taux d'echec n'est pas necessairement une mauvaise chose, beaucoup d'idees peuvent en decouler ::: ### Identifier les signes vitaux d'un projet * Regarder les statistiques du projet * Watch / Star / Fork / Used by * Verifier les commits * De quand date le dernier commit ? * Combien y a-t-il de contributeurs ? * Verifier les issues * Combien y a-t-il d'issues ? * Sont-elles recentes ? * Sont-elles fermees regulierement ? * Verifier les PR * Combien y a-t-il de PR ? * Sont-elles recentes ? #### Exemple: ##### React contributors vs Vue.js contributors ![](https://i.imgur.com/nS0jyyx.png) ##### Statistiques Angular sur Synopsis Open Hub ![](https://i.imgur.com/5JCgbVR.png) ### Verifier que le projet est accueillant * Est-ce un projet Open Source ? Y a-t-il une licence ? * Comment acceuille t-il les contributeurs ? * Y a-t-il un guide du contributeur ? un code de conduite ? * Y a-t-il de la documentation ? * Y a-t-il des issues tagguees "good first issue" ? * Comment les mainteneurs repondent aux contributions ? * Repondent-ils rapidement aux questions/issues ? * Repondent-ils amicalement ? * Y a-t-il des dicussions sur les issues/PR ? * Remercient-ils les gens pour leur contribution ? #### Exemple: code de conduite Kubernetes ![](https://i.imgur.com/CRJlWw9.png) ## Comment contribuer ? ### Checklist: demarrer une contribution - [ ] Installer l'application/le projet * S'assurer que c'est la derniere version - [ ] Jouer avec l'application/le projet - [ ] Lire la doc - [ ] S'abonner aux listes de diffusion, forum, IRC, slack, ... - [ ] Commenter des posts/issues * C'est deja une contribution ! - [ ] Declarer une issue * Verifier qu'il n'y a pas deja une issue similaire * Indiquer les etapes pour la reproduire et l'env. de test - [ ] Faire une Pull Request ### Creer une Pull Request :::info Les Pull Request (PR) sont la base des contributions Open Source ![](https://i.imgur.com/BWm0e3H.png) ::: #### Exercie: First Contributions * Un site pas a pas pour realiser votre $1^{ere}$ Pull Request * Faites une PR pour ajouter votre nom a la liste des contributeurs ![](https://i.imgur.com/DZt8HUU.png) #### Exemple: Hacktober Fest * Evenement organise par Digital Ocean pour inciter a contribuer a des projets Open Source * Chaque annee du 1$^{er}$ au 31 Octobre * Les projets interesses inscrivent leur repo et tagguent des issues "hackotberfest" * Les 70 000 premiers participants qui font 4 PR gagnent un t-shirt ## Le Google Summer Of Code ### Qu'est-ce que c'est ? :::info Le Google Summer of Code (GSoC) est un programme "online" international destine a encourager les etudiants des ecoles et universites a participer au developpement de projets Open Source. ::: ### Objectifs du programme * Pour les organisations Open Source: **identifier** chaque annees de nouveaux dev * Pour les etudiants: **participer** au dev de projets Open Source, se construire une experience et un reseau, etre **remunere** (~4,000 euros/2 mois) * Pour Google: **soutenir** le monde de l'Open Source ### Comment ca marche ? * Les organisations faisant de l'Open source font la demande a Google pour etre des organisations du GSoC * Google choisit les organisations qui participent * Les etudiants *soumettent leurs candidatures* pour realiser les projets proposes * Les organisations choisissent les **meileurs** etudiants * Les etudiants developpent, encadres par les mentors des organisations ### Quelques organisations participant au GSoC ![](https://i.imgur.com/zaMQLEY.png) ### Comment etre retenu au GSoC ? - [ ] Commencer a contribuer avant Mars/Avril - [ ] Se presenter a l'organisation * Mailing list, forum - [ ] Multiplier les contributions (PR, issue) - [ ] Bien comprendre le projet propose * Echanger avec les mentors * Suggerer des solutions * Realiser un prototype - [ ] Passer du temps a rediger sa proposition - [ ] Demander une relecture de sa proposition # Conclusion :::danger * L'Open Source est un phenomene culturel * Comprendre son fonctionnement est indispensable * Contribuer est une source de satisfaction et un vrai plus pour monter en competence ::: ![](https://i.imgur.com/WVlpr9c.png) # Questions/Reponses Dans le cas où la licence est ajoutée après la création du repository, son effet est-il rétroactif ? La première version (les premiers commits avant la licence) du projet est-elle concernée par la nouvelle licence ? > Non, la licence ne s'applique qu'aux versions actuelles On a parlé de l'open source en terme de software. Qu'en est il du hardware ? > Je ne peux pas vous en apprendre plus Comment sera evalue le cours ? > Aucune idee, a voir avec la pedago # Ce n'est pas fini ! Pour en savoir plus: retrouver la version integrale sur YouTube # Final Quizz Avez-vous maintenant envie de devenir contributeur ? - [ ] Oui - [ ] Non - [ ] Ne sais pas