Publié par Mads Torgersen, Lead C # Architect chez MicrosoftProjet RoslynRoslyn est le nom de code qui a été attribué au compilateur open-source pour C # et Visual Basic.NET. Le projet a commencé dans l'obscurité la plus profonde de la dernière décennie de la vie d'entreprise de Microsoft - et s'est terminé par un projet open source, un moteur universel universel multiplateforme pour C # (et VB, que je considérerai comme acquis dans la suite de cet article).
La première discussion sur le projet, qui est devenu plus tard Roslyn, était déjà en cours lorsque j'ai rejoint Microsoft en 2005 - peu de temps avant la sortie de .NET 2.0. Il a été question de réécrire C # en C #. C'est une pratique normale pour les langages de programmation - preuve de la maturité du langage. Mais il y avait une motivation plus pratique et plus importante: nous, les créateurs de C #, nous n'avons pas programmé en C # nous-mêmes, nous avons programmé en C ++! Si vous programmez en C # quotidiennement, alors vous changez d'avis: la grande puissance de travailler sur l'outil que vous développez (dogfooding).
Les utilisateurs dépendent du comportement du nouveau compilateur tout comme l'ancien. L'écriture d'un nouveau compilateur pour C # est une tentative de trouver une correspondance bogue à bogue.
La difficulté de réécrire le compilateur, qui est activement utilisé depuis plusieurs années, est que les utilisateurs dépendent du comportement du nouveau compilateur comme l'ancien. L'écriture d'un nouveau compilateur pour C # est une tentative de trouver une correspondance bogue à bogue. Et je ne parle pas seulement de bogues connus, mais aussi d'erreurs inconnues et de comportements indésirables que les développeurs ont trouvés et utilisent, souvent à leur insu.
Pendant de nombreuses années, l'ampleur de ce problème ne nous a même pas permis de démarrer le projet.
Bien que les développeurs du groupe linguistique de Microsoft aient reçu de nombreux avantages du nouveau compilateur C # écrit en C #, la valeur pour les utilisateurs finaux n'était pas si évidente: en quoi le nouveau compilateur leur sera-t-il avantageux? Peut-être que les seules personnes qui se soucient que le compilateur C # soit écrit en C # sont les développeurs du compilateur eux-mêmes.
Dans le même temps, un autre problème se manifeste de plus en plus: la duplication d'efforts entre différents outils fonctionnant sur du code C #. En plus du compilateur, une autre équipe a travaillé sur la prise en charge IDE pour C # dans Visual Studio, et ils ont également dû écrire beaucoup de code (à l'époque également en C ++) afin de comprendre la syntaxe et la sémantique de C #.
Dans le même temps, le nombre d'outils de Microsoft et d'autres sociétés, tels que StyleCop, CodeRush, etc., augmentait: tous devraient implémenter un traitement significatif du code C #. Chacun de ces programmes a ses propres erreurs légèrement différentes, différents niveaux de compréhension, divers compromis et concessions. Et tous dépenseraient beaucoup d'efforts pour parvenir à une compréhension commune du code.
Et nous avons décidé d'une proposition importante: nous assurer qu'il n'y a qu'une seule base de code dans le monde - une base unique pour tous les outils qui fonctionnent avec du code C #!
La valeur d'une telle proposition provient d'une augmentation du nombre d'outils disponibles, et notamment d'une amélioration de la qualité des outils existants. Toutes les exigences pour l'exactitude et les performances de la langue sont attribuées à une seule base de code. Assez d'effort unique pour créer une base de qualité stellaire et une grande polyvalence. Nous allons créer un véritable moteur pour la langue! API unifiée et ouverte pour le code C #. Nous donnerons une nouvelle définition au concept de «compilateur».
Bien sûr, une fois que vous avez créé une API pour la communauté C # au sens large, il va sans dire que ce devrait être une API .NET implémentée en C #. Ainsi, le rêve de longue date d'écrire C # en C # vient presque comme un effet secondaire aléatoire.
Ainsi, Roslyn est née d’un esprit ouvert: partager le fonctionnement interne de C # pour une utilisation programmatique par le monde. C'était en soi une proposition audacieuse pour la culture d'entreprise encore assez fermée de Microsoft.
Partageons-nous la propriété intellectuelle gratuitement? Allons-nous habiliter les outils qui nous font concurrence?
Dans la discussion d'entreprise, nous avons été aidés à gagner des arguments sur le renforcement de l'écosystème et la création d'un langage avec les meilleurs outils de la planète. Il s'agissait de la croissance à long terme de C # et .NET par rapport à la monétisation à court terme et à la protection des actifs Microsoft. Ainsi, sans même mentionner le code open source, parier sur Roslyn a été une décision importante et audacieuse pour Microsoft.
Bien sûr, développer quelque chose comme ça ne peut pas être facile. Les perspectives pour Roslyn étaient très ambitieuses et lourdes de problèmes techniques, et il nous a fallu cinquante ans pour tout gérer. Mais c'est une autre histoire.
Pendant la majeure partie du développement initial, Roslyn est restée un projet de source fermée.
Dès le début d'un travail sérieux sur le projet en 2009, nous avons eu des idées pour ouvrir des compilateurs, mais Microsoft n'était tout simplement pas encore prêt.
Microsoft a une culture de développement fermé et de protection par brevet du code source depuis les années 1970. Bien que les changements soient dans l'air, ils ont été plus lents que ce que notre équipe espérait.
En fait, pendant un certain temps, il semblait que l'entreprise allait dans une direction complètement opposée.
Le projet Windows 8 a grandement affecté l'ensemble de l'entreprise. Grâce au nouveau modèle de programmation, ses tentacules ont pénétré profondément dans les équipes de développement d'outils et de langages, et tout a été couvert dans un secret extrême, non seulement de l'extérieur, mais même à l'intérieur de l'entreprise. À titre d'exemple, la fonction asynchrone que nous développions à l'époque était coordonnée et mélangée au modèle de programmation Windows 8, et je n'oserais pas publier de notes sur sa conception même à l'intérieur de l'entreprise, de peur de divulguer accidentellement des informations sur Windows 8 et des problèmes sur ma tête. ! Cela a créé un climat terrible pour l'innovation, et bien sûr, ne nous a pas permis de compter sur le compilateur C # open source.
Cependant, à la fin, lorsque Windows 8 a suivi son propre chemin, la société a commencé à se transformer et à trouver une nouvelle direction, un nouveau leadership et une philosophie complètement différente - le Microsoft que nous connaissons aujourd'hui. L'open source se répand désormais rapidement au sein de Microsoft.
F # est sorti en 2010 avec une licence ouverte et sa propre organisation -
F # Software Foundation . Une communauté exceptionnelle s'est formée autour de lui, qui a vite fait l'envie de nous tous. Notre équipe a obstinément insisté pour obtenir une licence gratuite pour Roslyn - et, finalement, l'infrastructure de l'entreprise a permis de le faire.
En 2012, Microsoft a créé l'organisation Microsoft Open Tech, qui se concentre spécifiquement sur les projets open source. Roslyn est passée sous son aile et est officiellement devenue un projet open source. Roslyn était assez mûre pour cela: toutes les ressources de développement étaient internes et bien connues, et le projet lui-même ne souffrait pas d'un grand nombre de dépendances pouvant donner lieu à des conflits de licence.
En avril 2014, lors de la Build Developers Conference à San Francisco, Anders Halesberg a présenté
Roslyn en tant que projet open source , et le code source lui-même a été publié le 3 avril sur CodePlex (l'ancienne plate-forme Microsoft pour les référentiels) sous la licence Apache 2.0.

Dans le même temps, la
Fondation .NET a été déclarée la base des projets .NET, y compris Roslyn.
Cette sortie est devenue une véritable bouffée d'air frais! Nous avons commencé à récolter les bénéfices de l'ouverture déjà dans CodePlex, puis les obstacles procéduraux restants à l'open source chez Microsoft ont été supprimés, donc aujourd'hui l'open source est une partie naturelle et intégrante de la façon dont nous travaillons dans beaucoup de nos équipes.
Nous ne voyons plus GitHub comme un endroit pour publier du code source - c'est juste l'endroit où nous travaillons.
Sur d'autres fronts, la société a également réalisé qu'il n'était pas nécessaire de s'efforcer de tout contrôler. Il est devenu clair qu'il n'y avait aucune bonne raison pour que CodePlex existe - et Roslyn, avec d'autres projets, a migré vers GitHub, alors la plate-forme principale de facto pour les projets open source. Non seulement le code lui-même, mais aussi le processus de sa création se déroule dans GitHub: nous ne considérons plus GitHub comme un lieu de publication de codes sources - ce n'est que le lieu de notre travail.

La conception du langage C # et l'implémentation du compilateur sont maintenant des processus complètement ouverts, avec une implication significative de tiers. Ils créent notamment des fonctions de langage complètes. La valeur de C # se répercute simplement non seulement en raison de la mise à l'échelle des efforts d'écriture des fonctions et de la correction des erreurs, mais aussi en raison de la compréhension et de la correction du cours, que nous produisons grâce à la boucle de rétroaction quotidienne instantanée avec la communauté.
Ce fut un voyage long et fou, et pour moi, il symbolise les énormes changements que Microsoft a subis au cours de la dernière décennie. Roslyn Nugget est née dans l'obscurité, mais a grandi sur les idées d'ouverture - et a aujourd'hui explosé dans un million d'utilisations différentes grâce à la puissance de l'open source.
Apprenez Roslyn et C # Language Design:Roslyn sur githubC # sur GitHub