![](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>