![](http://lafabriquedesmobilites.fr/wp-content/themes/fabmob/images/fabmob-logo.svg) # Webinaire l'Open Source en pratique --- ## Qui suis-je ? Maël THOMAS Développeur depuis 8 ans Référent technique à la FabMob --- ## Avant de commencer :::info * webinaire filmé (vidéo sur le wiki pour les absents) * Tout le monde coupe son micro... * ... et utilise la fonction "main levée" 🖐 pour demander la parole * Vous pouvez réagir avec les boutons :white_check_mark: ou :negative_squared_cross_mark: * N'hésitez pas à mettre vos questions dans le chat à tout moment ::: --- ## Et vous ? :::info * on va faire un tour de table à l'écrit dans le chat : dites-nous en 2 mots qui vous êtes * vous pouvez aussi mettre votre entreprise / organisation directement dans votre nom de participant : `Maël [FabMob]` ::: --- **Notre sujet** : l'open source en pratique. Note: Ce qui suit sera bien sûr influencé par ma vision, ma pratique. --- 1) Histoire et définitions rapides 2) Comment créer un projet open source ? 3) Comment rejoindre un projet open source ? 4) Quelques limites 5) La FabMob est open source --- ## Introduction --- ### Une anecdote Mon expérience dans l'open source commence avec une désillusion en startup. - une belle bibliothèque Web pour faire [des graphiques](https://www.carbonbrief.org/cmip6-the-next-generation-of-climate-models-explained) - une promesse d'ouverture - un rachat qui annule tout -> 50k€ gâchés. --- ### Quelques concepts essentiels 💭 n'hésitez pas à tout moment à poser des questions si je n'ai pas été clair sur un concept ou un terme technique --- L'`open source` commence à partir du moment où quelqu'un publie un code informatique en ligne. Il y a ensuite mille façons de continuer ! --- Open source ≠ gratuit Il y a : - des logiciels open source payants - et des logiciels privés gratuits --- #### Deux mouvements - Le code ouvert "open source" : je peux lire, modifier, vendre, tant que je cite l'auteur [![](https://upload.wikimedia.org/wikipedia/commons/thumb/4/4e/Open_Source_Initiative_keyhole.svg/1920px-Open_Source_Initiative_keyhole.svg.png =100x)](https://fr.wikipedia.org/wiki/Open_source) - Le code libre "free software" : idem, mais je dois reverser tout changement que je fais. Paradoxalement, on est alors moins libre, car on doit diffuser cette liberté. [![](https://upload.wikimedia.org/wikipedia/commons/thumb/9/93/GPLv3_Logo.svg/langfr-440px-GPLv3_Logo.svg.png =130x)](https://fr.wikipedia.org/wiki/Licence_publique_g%C3%A9n%C3%A9rale_GNU) --- Une license pour toutes les variations de ces deux principes. Un site de vulgarisation : [TLDR legal](https://tldrlegal.com/). --- ## Pour aller plus loin Beaucoup de ressources en ligne : - [wikipedia](https://fr.wikipedia.org/wiki/Open_source) - [L'open source pour les nuls :movie_camera:](https://wiki.lafabriquedesmobilites.fr/wiki/L%27Open_Source_pour_les_Nuls) sur le wiki FabMob - [Récit l'Open Source, les communes et la mobilité](https://wiki.lafabriquedesmobilites.fr/wiki/Le_r%C3%A9cit_de_l%27open_source_et_des_communs) par Gabriel Plassat - Thèse de Véronique Sanguinetti `Adoption de l’Open Source par les organisations : Articuler business model ouvert et implication dans les communautés` --- Et en pratique ? ![](https://starwarsblog.starwars.com/wp-content/uploads/2016/05/yoda1.jpg) Note: allons dans le monde obscur de la force... Non justement ! Démystifier le monde du code. --- ## Tel projet est-il open source ? --- En général, taper `[nom du projet] github` sur Google. Pour trouver des outils, en :uk: : `[description vague] library github`. Note: exemple : `github mobile tracing library` --- ### Github La plateforme de code reine :crown: : 40 millions d'utilisateurs et projets. Note: A tel point que même ceux qui n'y sont pas (les anciens Wikipedia, Wordpress) sont obligé d'y faire un mirroir. --- Comment github s'est-elle imposée ? Leur modèle économique : si open source => alors service gratuit Note: Ce n'est plus le cas aujourd'hui. GitHub a complètement sécurisé son business. --- Paradoxalement, Github lui-même est fermé ! Racheté par Microsoft, qui investit l'open source. ⚔️ Son grand concurrent ouvert : Gitlab. Note: Gitlab est surtout utilisé dans les organisations, par exemple Météo France qui lancerait sa "forge". Github est plus fignolé, gitlab plus puissant, on passe facilement de l'un à l'autre. --- ## Partir de zéro --- Situation pratique numéro 1) demain je lance un concurrent urbain et écolo à Google Maps. Confiné, je code tous les soirs, j'intègre la carte Open Street Map et un petit moteur de recherche. 🗺️ [Voilà à quoi ça ressemble](https://benmaps.fr/@2.369226,48.862795,15.98). Ceci est un projet réel, **Benmaps**, développé par [Benjamin](https://twitter.com/_benjamintd). --- J'ai découvert pendant ce webinaire, grâce aux commentaires, que Qwant Maps est un projet open source :smiley: https://github.com/QwantResearch/qwantmaps --- 5 fichiers de code déployés sur un serveur. La Fabmob relaie mon projet, et un dev me rejoint. Tant mieux, mes concurrents Google Maps sont 500 dev 😅 --- Mon collègue en parallèle veut intégrer le calculateur d'itinéraire open source [navitia](https://www.navitia.io). Comment on fait ? --- ### Git ![](https://miro.medium.com/max/1400/1*BCZkmZR1_YzDZy22Vn4uUw.png =130x) --- Git nous permet de synchroniser notre travail. `Moi` Je code, je veux publier mes changements `Git` : "attention, ton collègue a modifié les mêmes portions de code que toi", et m'aide à résoudre ce conflit. --- En gros, c'est la collaboration sur un pad ou un google doc, mais pour un contenu : 1) beaucoup plus complexe, avec des centaines de fichiers, des centaines ou milliers de lignes, parfois obscures. 2) beaucoup plus critique, il faut être certain que ça marche. --- Pour s'y retrouver, il faut - nommer chaque modification, `commit`, ex: "j'ai changé la taille de l'image" - les faire sur une `branche`, ex. "redesign de la page d'accueil" - regroupées dans des `release` (versions) Note: regardez quand vous mettez à jour les applis Android, Google a obligé les créateurs d'applis à écrire des notes de version. --- ![](https://i.imgur.com/VLBhx5r.png) Les "dépôts de code" (:uk: *repo*) à l'adresse `github.com/ORGANISATION/PROJET` --- ### Développer sur la place publique Github permet à tout le monde d'observer un projet se mettre en place... et d'y participer ! Plus que le code : les questionnements, le design, etc. --- ![](https://lvdneng.rosselcdn.net/sites/default/files/dpistyles_v2/ena_16_9_extra_big/2017/06/11/node_203207/31072682/public/2017/06/11/B9712277912Z.1_20170611124733_000%2BG2097RLAA.3-0.jpg?itok=M784hFq11502461890) --- La loi 🏛️ pour l'instant construite traditionnellement. Mais on peut déjà observer son application : [attestation covid](https://github.com/LAB-MI/deplacement-covid-19). 40 tickets, 10 branches de code. --- Autre exemple, l'administration développe sur github un nouveau langage de programmation Destiné à annoter la loi française, [avec l'INRIA](https://github.com/betagouv/mon-entreprise/issues/796). Note: L'INRIA c'est l'Institut national de recherche en informatique et en automatique --- ### Github "as a CV" Anecdote : j'ai recruté un collègue via ses contributions libres à notre code. Github est de plus en plus [un CV](https://github.com/laem), une page profil avec les contributions. --- ## Rejoindre un projet existant Souvent il y aura un site vitrine, de la doc. Pour rentrer dans le concret -> github. Exemple sur [ce projet fabmob](https://github.com/e-mission/e-mission-server) ça fait peur, non 😁 ? --- Voilà la documentation qu'il faut regarder : - le LISEZMOI (README) - le wiki - langage et license --- Et très important, **les mesures d'activité** : - nombre d'étoiles (de 0 à 100k) - dernier commit - page contribution, et qui sont les contributeurs - issues, PR et actives, releases - forks --- Un dépôt de code open source c'est une mine d'or pleine d'informations *même sans rentrer dans le code*. --- Exemple de beau succès : https://github.com/streetmix/streetmix --- Pour aller plus loin, voici d'autres exemples : Mauvais exemple, mais d'actualité : https://github.com/betagouv/stopcovid Exemple de succès absolu : https://github.com/facebook/react --- ## Last but not least : tests ☑ Elément incontournable du développement. --- Un exemple très marquant 📰 : que doit faire une voiture autonome si elle doit décider entre foncer dans un vélo ou piler avec une voiture à 1m derrière ? [Le dilemme macabre de la voiture Open Source](https://www.lemonde.fr/sciences/article/2016/06/23/tuer-un-pieton-ou-sacrifier-le-passager-le-dilemme-macabre-des-voitures-autonomes_4956924_1650684.html) Des tests ouverts, *même pour un code fermé*. --- ## Tout n'est pas rose Open source => collaboration => travail avec entre humains et organisations => drames Exemple : cet outil de présentation, CodiMD, existe en double. --- Savoir se relever et se demander si on (moi, nous, la communauté) a avancé. En général, oui ! --- > Anecdote : les développeurs Javascript parlent souvent de "Javascript fatigue", grâce à l'open source, ça bouge trop vite ! ![](https://www.supinfo.com/articles/resources/170614/6040/0.png =200x) --- ## La fabrique est ouverte - engager la collaboration avec différentes organisations (entreprises, associations, etc.) - [notre wiki](wiki.lafabriquedesmobilites.fr) : une mine de documentation ouverte et collaborative - la fabrique elle-même est un projet open source, réplicable : Québec, Italie, Energies --- :end: On s'arrête là, et si ça vous a plu... --- ... un prochain atelier encore plus pratique, pour vraiment contribuer à un projet --- # Questions et discussion Et :camera: --- <style> .reveal.reveal img, .reveal.reveal .graphviz { border: none; box-shadow: none; max-height: 250px; overflow: hidden; } .reveal h1, .reveal h2, .reveal h3, .reveal h4 { color: #5eb8e0; font-weight: semi-bold; } .reveal code { background: #9dcdd7; border-radius: .2rem; background: #9dcdd7; border-radius: 1rem; padding: 0.4rem 0.6rem; } .reveal p, .reveal ul, .reveal li, .reveal body { color: #18457B; font-size: 3rem; font-family: 'Roboto', sans-serif; } .reveal a { color: #2975D1; } .reveal em { font-size: 85%; font-style: normal; color: #18457Baa; } </style>
{"slideOptions":{"transition":"slide","theme":"white"},"tags":"open source"}