Qu’est-ce que le logiciel open source ?
Le logiciel open source est un logiciel dont le code source est mis à la disposition publique de toute personne pour inspecter, modifier et distribuer. L’initiative Open Source fournit la définition largement acceptée :
« Le logiciel open source est un logiciel avec du code source que tout le monde peut inspecter, modifier et améliorer. Le titulaire du droit d’auteur accorde aux utilisateurs les droits d’étude, de modification et de distribution du logiciel à toute personne et à toute fin, sous réserve des conditions d’une licence open source.
Cette définition met l’accent sur plusieurs principes clés :
- Disponibilité du code source : Le code source complet doit être accessible publiquement, pas seulement les fichiers binaires exécutables.
- Liberté de modifier : Les utilisateurs peuvent modifier le logiciel en fonction de leurs besoins, corriger les bogues ou ajouter des fonctionnalités.
- Droits de redistribution : Les utilisateurs peuvent partager le logiciel avec d’autres utilisateurs, sous forme d’origine ou modifiée.
- Termes du contrat de licence : Les droits d’utilisation sont définis par une licence open source qui spécifie les autorisations, les restrictions et les obligations.
Les logiciels open source diffèrent fondamentalement des logiciels propriétaires, où le code source reste secret et les droits d’utilisation sont étroitement contrôlés par le titulaire du droit d’auteur.
Modèle open source collaboratif
Le développement open source implique la création de logiciels collaboratifs avec plusieurs contributeurs :
Développement piloté par la communauté
- Contributeurs distribués : Les développeurs du monde entier contribuent au code, à la documentation, aux tests et au support.
- Participation volontaire : De nombreux contributeurs participent volontairement, motivés par la résolution des problèmes, l’apprentissage, la création de réputation ou les outils de soutien qu’ils utilisent.
- Méritocratie: L’influence dans les projets correspond généralement à la qualité et à la quantité de contributions plutôt qu’à la hiérarchie organisationnelle.
- Processus transparents : Le développement se produit dans des référentiels publics où tout le monde peut observer des discussions, des décisions et des modifications.
Workflows collaboratifs
- Dépôts publics : Le code est hébergé sur des plateformes telles que GitHub, GitLab ou Bitbucket où tout le monde peut l’afficher.
- Suivi des problèmes : Les bogues et les demandes de fonctionnalités sont suivis publiquement, ce qui permet aux membres de la communauté d’identifier les problèmes et de proposer des solutions.
- Révisions de pull request : Les contributeurs soumettent des modifications par le biais de pull requests qui sont examinées par les mainteneurs et d'autres membres de la communauté avant d'être fusionnées.
- Gestion des versions : Les mainteneurs coordonnent les mises en production, garantissant ainsi la stabilité et la compatibilité tout en intégrant les contributions de la communauté.
Modèles de gouvernance de projet
Différents projets open source adoptent différentes approches de gouvernance :
- Dictateur bienveillant : Un seul individu (souvent le fondateur) prend des décisions finales sur la direction du projet (par exemple, Python avec Guido van Rossum historiquement).
- Équipe principale : Un petit groupe de mainteneurs prend collectivement des décisions par consensus ou vote.
- Gouvernance de la fondation : Les grands projets créent souvent des bases (comme Apache Foundation, Linux Foundation) qui fournissent une structure juridique, des ressources et des infrastructures de gouvernance.
- Parrainage d'entreprise: De nombreux projets open source sont principalement gérés par les employés des entreprises qui dépendent de ces logiciels.
Adoption généralisée du logiciel open source
Les logiciels open source sont devenus omniprésents dans tous les secteurs de la technologie :
Statistiques d’adoption du secteur
- Utilisation de l’entreprise : Plus de 90% d’entreprises utilisent des logiciels open source dans des environnements de production.
- Infrastructure Internet : La majorité des serveurs web s’exécutent sur Linux (open source), servent du contenu via Apache ou Nginx (open source) et utilisent des bases de données telles que PostgreSQL ou MySQL (open source).
- Cloud computing : Les principales plateformes cloud utilisent et prennent en charge les technologies open source : Kubernetes, Docker, Terraform et de nombreux autres outils open source constituent la base de l’infrastructure cloud moderne.
- Appareils mobiles : Android, le système d’exploitation mobile le plus populaire au monde, repose sur le noyau Linux et comprend des composants open source étendus.
Composition de la stack technologique
Les empilements technologiques modernes sont principalement open-source :
- Systèmes d’exploitation : Linux alimente l’infrastructure cloud, les conteneurs et de nombreux systèmes incorporés.
- Langages de programmation : Python, JavaScript, Java, Go, Rust, Ruby, PHP : les langages les plus populaires sont open source.
- Bases: PostgreSQL, MySQL, MongoDB, Redis, Elasticsearch dominent les déploiements de bases de données.
- Technologies web : React, Angular, Vue.js, Express, Django, Rails permettent le développement d’applications web.
- Outils de développement : Git, Docker, Kubernetes, Jenkins, VS Code sont des outils de développement open source essentiels.
L’adoption par Microsoft d’open source
Microsoft illustre la transformation des attitudes de l’entreprise en matière de logiciels open source :
Changement historique
Microsoft a historiquement vu open source comme une menace pour son modèle d’entreprise de logiciel propriétaire. Cela a changé considérablement au cours de la dernière décennie, car la société a reconnu l’importance stratégique de l’open source.
Open source dans Azure
Azure intègre largement les technologies open source :
Langages et runtimes : Azure prend en charge Python, Node.js, Java, PHP, Ruby, Go et d’autres langages open source comme options de plateforme de première classe.
Bases: Azure offre des services managés pour PostgreSQL, MySQL, MariaDB et Redis, ainsi que des offres propriétaires.
Orchestration de conteneur : Azure Kubernetes Service (AKS) fournit Kubernetes managé, la plateforme d’orchestration de conteneurs open source.
Outils de développement : Azure DevOps s’intègre à Git, Jenkins et à d’autres outils open source, tandis que GitHub (acquis par Microsoft) est la plus grande plateforme mondiale pour le développement open source.
Données et analytique : Azure prend en charge Apache Spark, Hadoop, Kafka et d’autres technologies Big Data open source.
Transformation de .NET
La plateforme .NET illustre l’engagement complet de Microsoft en matière d’open source :
Open-sourcing .NET : Microsoft a publié .NET Core (maintenant .NET 5+) comme open source sous la licence MIT, rendant la plateforme entière disponible librement avec le code source. Le runtime .NET, les bibliothèques, les compilateurs et les outils sont tous open source.
Développement multiplateforme : En rendant .NET open-source, Microsoft a activé le développement multiplateforme sur Windows, Linux et macOS, élargissant considérablement la portée de .NET.
Contributions communautaires : Les dépôts .NET sur GitHub reçoivent des milliers de contributions des développeurs en dehors de Microsoft, avec l’entreprise qui examine activement et accepte les améliorations de la communauté.
Dépendances open source : les applications ASP.NET Core incorporent généralement de nombreux composants open source :
- Bibliothèques frontales : jQuery, React, Angular, Vue.js permettent des interfaces utilisateur riches.
- Bibliothèques utilitaires : Newtonsoft.Json, Serilog, AutoMapper et d’innombrables autres fournissent des fonctionnalités courantes.
- Frameworks de test : xUnit, NUnit, Moq prennent en charge le développement piloté par les tests.
Contribution à des projets open source
Microsoft contribue activement aux projets open source au-delà de ses propres :
Noyau Linux : Microsoft contribue au noyau Linux, améliorant l’intégration Hyper-V et prenant en charge l’infrastructure Azure.
Kubernetes : Microsoft est un contributeur majeur à Kubernetes, aidant à mettre en forme la plateforme qui alimente AKS.
Initiatives open source : Microsoft parraine des événements open source, finance une infrastructure open source critique et emploie des développeurs pour travailler à plein temps sur des projets open source.
Projets open source créés par Microsoft
Au-delà de contribuer à des projets existants, Microsoft crée et ouvre des logiciels importants :
Visual Studio Code : L’éditeur de code le plus populaire est open source, avec des extensions, des thèmes et des améliorations contribuées par une communauté mondiale.
Tapuscrit: Le langage de Microsoft pour le développement JavaScript de type sécurisé est open source et largement adopté.
PowerShell Core : Le framework d’automatisation de Microsoft est open source et multiplateforme.
.NET Foundation : Microsoft a créé .NET Foundation pour prendre en charge les projets open source dans l’écosystème .NET, en fournissant des ressources, une gouvernance et un support communautaire.
Pour plus d’informations, consultez le site web .NET Foundation.
Justification stratégique
L’adoption par Microsoft de l’open source reflète les décisions stratégiques de l’entreprise :
Adoption du développeur : Les développeurs préfèrent les outils et les langages open source. En prenant en charge open source, Microsoft attire les développeurs vers ses plateformes.
Entreprise cloud : Les charges de travail open source favorisent l’adoption du cloud. Une excellente prise en charge open source sur Azure rend la plateforme plus attrayante.
Vitesse de l’innovation : L’open source permet une innovation plus rapide grâce aux contributions de la communauté, ce qui réduit la charge de développement de Microsoft.
Croissance de l’écosystème : Les communautés open source créent des extensions, des outils et des connaissances précieux qui améliorent la valeur de la plateforme.
Positionnement concurrentiel : Alors que les concurrents (AWS, Google Cloud) soutiennent largement l'open source, Microsoft doit égaler ou surpasser leurs capacités open source.
Pourquoi les organisations choisissent open source
Les organisations sélectionnent des logiciels open source pour plusieurs raisons :
Considérations relatives aux coûts : L’élimination des frais de licence réduit les coûts directs, particulièrement important lors du déploiement de logiciels à grande échelle ou de la création de produits où les coûts de licence seraient passés aux clients.
Flexibilité et contrôle : L’accès au code source signifie que les organisations peuvent modifier des logiciels pour répondre à des besoins spécifiques, corriger les bogues critiques indépendamment et ne sont pas verrouillées dans les chronologies des fournisseurs pour les fonctionnalités ou les correctifs.
Transparence et sécurité : Le code source public permet des audits de sécurité, la révision de la communauté identifie les vulnérabilités plus rapidement et l’absence de portes dérobées masquées ou de collecte de données donne confiance.
Évitez le verrouillage du fournisseur : Les logiciels open source peuvent généralement être déployés n’importe où, ce qui réduit la dépendance vis-à-vis des fournisseurs spécifiques et améliore les positions de négociation.
Support communautaire : Les communautés open source actives fournissent des forums, de la documentation, des didacticiels et de l’assistance aux pairs, souvent rivalisant ou dépassant la qualité du support commercial.
Innovation et fonctionnalités : Les technologies de pointe émergent souvent dans open source en premier, et les organisations peuvent contribuer aux fonctionnalités dont elles ont besoin plutôt que d’attendre les feuilles de route des fournisseurs.
Comprendre ce qu’est le logiciel open source et pourquoi il est devenu si largement adopté fournit un contexte essentiel pour explorer les préoccupations que les organisations doivent résoudre lors de l’implémentation de composants open source, que l’unité suivante couvre.