OpenSource : au secours du développeur… et de l’architecte !

A presentation at Snowcamp in February 2022 in Grenoble, France by Stéphane Philippart

Slide 1

Slide 1

L’Open Source au secours du développeur (et de l’architecte) ?

Slide 2

Slide 2

Slide 3

Slide 3

Faisons connaissance 🖐 Qui utilise un ou plusieurs projets Open Source ? 🖐 Qui a déjà participé une fois à un projet Open Source ? 🖐 Qui participe régulièrement à un projet Open Source ? 🖐 Qui le fait de manière professionnelle (cad payé pour ça 😉) ? Question bonus : 🖐 qui (ou sa société) a déjà payé / sponsorisé un projet Open Source ? (hors achat de support)

Slide 4

Slide 4

Éléments de langages ⛔ Open source <> Freeware ⛔ Open source <> Gratuit ⛔ Open source <> Pas de licence ✅ Open source == Accès au code source ✅ Open source =~ Ouvert à la participation ✅ Open source == Licence attachée au source (MIT, BSD, Mozilla, …) source

Slide 5

Slide 5

Un peu de contexte …. ● Développeur un jour … développeur toujours ○ ○ ● De développeur à architecte ○ ○ ● Débuts à l’âge de 9 ans Passion avant un métier 13 ans de développement 7 ans d’architecture / développement D’intellij à powerpoint

Slide 6

Slide 6

Et vous vous en êtes où ? 🖐Qui estime qu’il ne code pas assez ? 🖐Au niveau professionnel ? 🖐Au niveau personnel ? 🖐Qui n’est pas développeur ?

Slide 7

Slide 7

Pourquoi se lancer dans l’Open Source ?

Slide 8

Slide 8

Continuer à développer ⌛ 20% du temps restant pour développer (au mieux) ⚰ Side project 🎯 Trouver un objectif motivant

Slide 9

Slide 9

Continuer à progresser 󰞼 Permet de faire de la R&D et continuer à apprendre 💬 Se confronter aux autres 🔎 Découvrir le code des autres source 👀 Exposer son code au regard des autres

Slide 10

Slide 10

Partage et communauté 🤝 Le développement est un travail d’équipe ❤ Participer à quelque chose d’utile 📥 Re-verser un peu à la communauté

Slide 11

Slide 11

Les mauvaises raisons pour faire aller vers l’open source 🤩 Gloire et beauté 📸 Célébrité et renommé 💶 Richesse

Slide 12

Slide 12

Par où commencer ? 🌐 Internet …. 📰 How to contribute to open source project as beginner (Catalin Pit) 📽 Conférence donnée par Helen Scott (Jet Brains)

Slide 13

Slide 13

Trouver le bon projet 🔎 Utiliser des “indexeurs” de projets ouverts à participation ➡ https://up-for-grabs.net ➡ https://www.codetriage.com ➡ https://www.firsttimersonly.com/ 🔎 Topics dans GitHub / GitLab ➡ good first issue, hacktoberfest, help wanted, …

Slide 14

Slide 14

Un projet connu et utilisé régulièrement

Slide 15

Slide 15

Un projet connu et presque utilisé régulièrement 🧠 Syndrome de l’imposteur ou marche trop haute ? ➡ SpringBoot ➡ OpenJDK ➡ Jenkins-core 🏭 JenkinsPipelineUnit … Trop professionnel ➡ Groovy ➡ Candidat idéal pour une démarche Open Source “professionnelle”

Slide 16

Slide 16

💡 Tips 💡 💡 Ne pas viser tout de suite la lune, accepter de commencer modestement 💡 Essayer de trouver un projet utilisé par l’entreprise pour y participer sur le temps de travail

Slide 17

Slide 17

Un projet connu fonctionnellement et utilisé régulièrement 👍 Jenkins reste un bon choix ⚙ Fonctionnement connu : utilisation quotidienne ❤ Plugins plus “abordables” : moins complexe que le core 󰤇 Java 8 (pas encore 11) https://jenkins.io

Slide 18

Slide 18

💡A défaut de participer à un projet utilisé dans ses développements, participer à un projet qui est une application utilisée tous les jours peut aider à “rentrer” dans le projet

Slide 19

Slide 19

https://www.ariane.group/fr/photos-videos/

Slide 20

Slide 20

Comprendre (comment fonctionne) le projet 📝 Les documentations projet sont inégales ➡ Peu de documentation de conception / d’architecture 🐙 Privilégier les projets dont les issues sont sur GitHub / GitLab ⚠ Avis personnel (préférence par rapport à JIRA)

Slide 21

Slide 21

💡 Regarder les tests unitaires (en règle générale les projets Open Source ont pas mal de tests) aide à comprendre comment le projet doit être utilisé

Slide 22

Slide 22

La première contribution ➡ Ansicolor-plugin Lire les différents éléments inhérents à la contribution (CONTRIBUTING.MD) ➡ règles de développement (checkstyle, nom des branches, …) ➡ code de conduite “Il n’y a pas de petites contributions” ➡ Correction d’un lien du README vers le CONTRIBUTING www.birdsdessines.fr

Slide 23

Slide 23

🎉 ● 🔓 Verrou débloqué ● 🚀 Envie d’aller plus loin !

Slide 24

Slide 24

💡 Lire les documentations pour la contribution et l’organisation de la communauté facilite l’intégration et la prise en compte des futures PR 💡 Ne pas hésiter à commencer par des PR simplistes ou de documentation 💡 Demander avant de travailler sur une issue, c’est plus apprécié et permet de nouer un premier contact

Slide 25

Slide 25

Le début de l’aventure

Slide 26

Slide 26

La recherche du Graal ➡ conventional-commits-plugin ✅ Géré dans GitHub ✅ Pas trop gros mais actif ✅ Communauté active ✅ Peu de code (facilité de prise en main) ✅ Un peu de chance … (GSoC)

Slide 27

Slide 27

💡Essayer de trouver un projet d’une taille pas trop grosse facilite sa prise en main 💡Une communauté réduite est simple à contacter et identifier (qui fait quoi, notamment les maintainers) 💡 Une communauté ayant un canal pour discuter librement (ou du moins trouver le canal 😉)

Slide 28

Slide 28

La première issue / Pull Request (PR) 🔀 Fork du projet (et non clone) : penser à mettre à jour l’upstream pour faciliter les merges ⏰ PR au plus tôt (dès la modification de la documentation par exemple) ❤ Coder pour le plaisir ➡ retrouver la raison première d’être développeur pas de biais d’entreprises (budgets, rétro planning, managers, réunions, …) ➡ 🔢 A ce jour une petite quinzaine de PR https://docs.github.com

Slide 29

Slide 29

💡 Créer la PR au plus tôt en draft 💡 Expliquer ce que l’on compte faire 💡 Pusher le code au fil de l’eau

Slide 30

Slide 30

Rythme de travail 😱 Ne pas reproduire le stress du monde professionnel ⏳ Prendre le temps pour développer feature après feature 📅 Une feature : 1 à 2 semaines 📅 Rythme de review : 3 à 5 jours ➡ Un projet Open Source est géré par des anonymes qui font cela sur leur temps personnel comme vous et moi !

Slide 31

Slide 31

⚠ Avant de se lancer dans la participation d’un projet Open Source il faut s’assurer que l’on a le temps pour cela une fois déduites toutes les activités habituelles (travail, sommeil, famille, …). ⚠ S’engager sur des implémentations de features et ne pas le faire par manque de temps pénalise le projet mais aussi les personnes qui auraient pu travailler sur ces features.

Slide 32

Slide 32

Organisation 📅 Principalement le WE et pause déjeuner 🕰 Accepter le rythme de travail des autres lors de reviews de PR 💡 En profiter pour faire une pause / review des autres PR ➡ 3 à 4 heures par semaine

Slide 33

Slide 33

💡 Ne pas cloner son projet sur son ordinateur pro pour ne pas être “tenté” 💡 Un seul projet pour débuter dans le l’Open Source et pour ne pas avoir à switcher et avoir des moments de pause 💡 Ne pas s’engager si on n’a pas vérifié notre capacité à faire

Slide 34

Slide 34

Bonus apporté par l’Open Source 󰏅 Améliorer mon niveau d’anglais 🎓 Apprendre de nouvelles façons de développer / de s’organiser 🆘 Aider d’autres développeurs 🤩 Petite fierté personnelle : au bout de quelques semaines je suis devenu core commiter

Slide 35

Slide 35

Pari gagné ? ✅ Reprendre un rythme de développement en Java ✅ Continuer à apprendre … même en Java 8 ✅ Vaincre (un peu) le syndrôme de l’imposteur ✅ Sentiment d’être utile 😎

Slide 36

Slide 36

Et la suite ? Projet en légère perte de vitesse : réalité pour un projet Open Source, il peut être abandonné 📉 ✅ essayer d’être un Maintainer principal ✅ Hacktoberfest ✨ Se lancer dans d’autres projets ➡ Projet Java 11 / 17 Les nouveaux challenges apportés par mon intégration à OVH Cloud ➡ Dans tous les cas continuer cette aventure !

Slide 37

Slide 37

Alors et maintenant ? 🖐 Qui a envie de se lancer dans l’aventure ?

Slide 38

Slide 38

Stéphane Philippart “Il n’y a pas de petites contributions” 🏷 Baby DevRel@OVHCloud (depuis 2 jours) 🥑 🏷 Co-créateur de TADx (meetups Agile, Dev, DevOps) 🏷 Commiteur Open Source @wildagsx 🌐 https://philippart-s.github.io/blog https://github.com/philippart-s/ https://www.linkedin.com/in/philippartstephane/ https://roti.express/r/sc22-040

Slide 39

Slide 39

Liens ● ● ● ● ● ● ● ● ● https://opensource.com/ https://screenrant.com/ https://daily.dev/blog/how-to-contribute-to-open-source-projects-as-a-beginner © https://blog.jetbrains.com/idea/2020/08/jetbrains-technology-day-for-java-how-i-st arted-contributing-to-open-source-and-why-you-should-too https://github.com/spring-projects/spring-boot/blob/main/CONTRIBUTING.adoc https://openjdk.java.net/contribute/?utm_source=pocket_mylist https://www.jenkins.io/participate/ https://www.jenkins.io/ https://www.conventionalcommits.org/en/v1.0.0/ ArtVstudio