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

Open-Source - Faites décoller vos projets et vo...

Open-Source - Faites décoller vos projets et votre carrière

Conférence donnée à l'INSA Rouen (ITI) le 17 Novembre 2025 pour le cycle de "Conférences Métier-Recherche".

Avatar for Jérôme Tamarelle

Jérôme Tamarelle

November 17, 2025
Tweet

More Decks by Jérôme Tamarelle

Other Decks in Programming

Transcript

  1. Jérôme TAMARELLE Vous connaissez des projets Open-Source ? • Linux

    • Apache • Java depuis 2006 • NumPy • PostgreSQL • GNU gcc
  2. Jérôme TAMARELLE Jérôme TAMARELLE Seinomarin depuis 1986 Ingénieur diplômé en

    2010 Manageur d’équipe de développeurs pendant 10 ans Open-Source depuis 15 ans
  3. Jérôme TAMARELLE Définition • Liberté de redistribuer • Code source

    accessible • Travaux dérivés autorisés • Respect de l’intégrité de l’auteur du code original • Pas de discrimination sur les gens ou les usages • Licence générique https://opensource.org/osd
  4. Jérôme TAMARELLE Workflow GitHub main branch 1. create branch in

    your fork 2. open pull-request 3. get review and update 4. merge by a maintainer
  5. Jérôme TAMARELLE Semantic Versioning 2 . 7 . 6 Spécification

    sur semver.org Major Breaks the API Minor New features Patch Fix bugs
  6. Jérôme TAMARELLE Backward Compatibility Promise Modifier une API casse le

    code de ceux qui l’utilisent • Renommer une méthode d’une classe ❌ • Ajouter une méthode à une classe ✅ • Ajouter une méthode à une interface ❌ https://symfony.com/doc/current/contributing/code/bc.html
  7. Jérôme TAMARELLE Maintenance de plusieurs branches branch 2.x bug fix

    goes into lowest branch with the bug branch 1.x up-merge create new version
  8. Jérôme TAMARELLE Workflow Git Branches versions maintenues 6.4, 7.3, 7.4,

    8.0 Merge des bug fix dans la version la plus ancienne présentant le bug Merge des features et autres améliorations dans la prochaine version mineure
  9. Jérôme TAMARELLE Rapporter un bug • Version concernée • Description

    détaillée • Comment reproduire le bug • Résultat attendu / résultat observé • Environnement • Idée de correctif
  10. Jérôme TAMARELLE Proposer une fonctionnalité • Description détaillée • Exposé

    du problème • Proposition de solution • Valeur ajoutée attendue • Exemple d’utilisation
  11. Jérôme TAMARELLE Formatter les erreurs en Markdown • Problème :

    HTML est verbeux à lire pour les LLM • Solution : Formater les erreurs en Markdown lorsque le client accepte ce format • Avantage : gain coût et performance pour le vide-coding https://github.com/symfony/symfony/issues/61797
  12. Jérôme TAMARELLE Pull Request Facilitez la vie des relecteurs •

    🤏 Petit = facile • ✅ Ajoutez des tests • 🔗 Ajoutez des liens • 👀 Relisez-vous en premier https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/g etting-started/helping-others-review-your-changes
  13. Jérôme TAMARELLE Le rôle de la Core Team • Relire

    les pull requests • Garant du process • Analyse des rapports de sécurité https://symfony.com/doc/current/contributing/core_team.html
  14. Jérôme TAMARELLE Allemagne “We are securing open digital infrastructure as

    the foundation for a future-oriented economy and modern society” — sovereign.tech 114 M€
  15. Jérôme TAMARELLE PIE : PHP Install Extension pecl (ancien) pie

    (nouveau) Code ancien peu maintenu Code moderne sur GitHub Publication de nouvelles versions à la main via une page web avec authentification basic par mot de passe Publication directement sur GitHub avec double authentification Installe systématiquement la dernière version publiée Support des contraintes SemVer https://github.com/php/pie
  16. Jérôme TAMARELLE • Serveur “Community” Open-Source • Drivers Open-Source •

    Base de données polyvalente • Orientée document — Schéma flexible • ACID — atomicité, cohérence, isolation et durabilité • Réplication — stratégies de lecture et d’écriture, préférence géographique • Vecteurs, Time-series, Geospatial, Recherche sémantique
  17. Jérôme TAMARELLE Document oriented { "_id" : ObjectId("5ad88534e3632e1a35a58d00"), "name" :

    { "first" : "John", "last" : "Doe" }, "address" : [ { "location" : "work", "address" : { "street" : "16 Hatfields", "city" : "London", "postal_code" : "SE1 8DJ"}} ], "dob" : ISODate("1977-04-01T05:00:00Z"), "retirement_fund" : NumberDecimal("1292815.75") } More suited to modern programming practices: OOP, API-first, microservices Easily expandable and polymorphic schema: accelerate software evolution, build powerful data aggregators High performance: get full business entities in a single operation without having to rebuild them from components
  18. Jérôme TAMARELLE Distributed Architecture Horizontal scalability Sharding High availability Replica

    sets Application Driver Mongos Primary Secondary Secondary Shard 1 Primary Secondary Secondary Shard 2 Primary Secondary Secondary Shard N Mongos ••• ••• ••• Application Reliability axis Scalability axis
  19. Jérôme TAMARELLE Still a database P S S Application write

    this done! Strongly consistent ACID transactions Key Key Key Key Key Key Key Fully indexable Vector, Time-series Full-text, Geospacial Rich queries Aggregations Joins, Unions, …
  20. Jérôme TAMARELLE MongoDB: no bad surprise The best of both

    worlds High Availability by design Strengths and Additional Innovations of NoSQL and Big Data Document Model: agility Scalability & Performance Entreprise grade management and security Traditional strengths of Relational Strong consistency and ACID transactions Expressive query language and rich indexing
  21. Jérôme TAMARELLE Encryption throughout the data lifecycle All data transmitted

    over the network is encrypted by TLS by default. In-Transit All data stored in the database cluster is encrypted at rest by default using AES-256. At-Rest Sensitive fields can be encrypted client-side using Queryable Encryption or Client-Side Field Level Encryption. In-Use
  22. Jérôme TAMARELLE db.artists.aggregate( [ // First Stage { $bucket: {

    groupBy: "$year_born", boundaries: [ 1840, 1850, 1860, 1870, 1880 ], default: "Other", output: { "count": { $sum: 1 }, "artists" : { $push: { "name": { $concat: [ "$first_name", " ", "$last_name" ] }, "year_born": "$year_born" } } } } }, // Second Stage { $match: { count: {$gt: 3} } } ] ) MongoDB Query API Expressive queries • Find anyone with phone # “1-212…” • Check if the person with number “555…” is on the “do not call” list Geospatial • Find the best offer for the customer at geo coordinates of 42nd St. and 6th Ave Text search • Find all tweets that mention the firm within the last 2 days Aggregation • Count and sort number of customers by city, compute min, max, and average spend Native binary JSON support • Add an additional phone number to Mark Smith’s record without rewriting the document • Update just 2 phone numbers out of 10 • Sort on the modified date JOIN ($lookup) • Query for all San Francisco residences, lookup their transactions, and sum the amount by person Graph queries ($graphLookup) • Query for all people within 3 degrees of separation from Mark
  23. Jérôme TAMARELLE Mon Parcours 2000 : Bidouillage informatique autodidacte 2008

    : Projet d’étude, je choisi d’utiliser Symfony Première issue 2010 : Diplôme d’ingénieur. Premier emploi “lead dev” Participation à des meetup, puis conférences 2020 : Confinement, intensification des contributions Open-Source 2021 : Je rejoins la Core-Team Symfony 2023 : Embauche MongoDB pour travailler sur le driver et l’écosystème PHP
  24. Jérôme TAMARELLE A vous de participer ! • Proposer une

    amélioration • Améliorer la documentation • Relire une pull-request • Rapporter un bug • … L’important : faites le premier pas