Microsoft et l'open source, comme chien et chat

A moins que ça ne soit comme chat et chien

Le 12 novembre 2014, Microsoft a annoncé1 qu'une majeure partie du framework .NET serait rendue public sous licence MIT afin de promouvoir le développement multiplateforme de site web sous ASP.NET.

Cette nouvelle a été rapidement suivie d'une annonce de la transformation de Visual Studio Professionnal en Visual Studio Community Edition sous certaines conditions.

Avant d'en arriver là, Microsoft est passé par plusieurs étapes dans sa réflexion, penchons-nous sur ces dernières.

"Les promoteurs du libre? Des communistes"

Alors qu'il était encore PDG de Microsoft, Bill Gates a dû faire face à la montée en puissance des logiciels libres et open source tels que OpenOffice en même temps que le piratage des licences de ses logiciels. Alors qu'il donnait une interview, il estimait alors :

Il existe une nouvelle sorte de communistes modernes qui veut être exemptée de taxes rémunérant les musiciens, les cinéastes et les éditeurs de logiciels.1

Bill Gates

Depuis sa fondation, Microsoft base son business model sur la vente de logiciels. Rapidement la branche Windows a été la plus rentable de toutes suivie de la branche Office.

L'arrivée de Azure (cloud de Microsoft) et des consoles XBox n'a pas vraiment remis en cause ce modèle qui n'a connu qu'un seul et unique trimestre déficitaire dans toute son histoire ! D'après S.Balmer, cela était dû à une forte dépréciation des actifs financiers liés à une filiale spécialisée dans la publicité qui était sensée concurrencer Google.

Depuis sa création, en 1975, Microsoft n'aura connu que trois PDG. L'histoire commence avec Bill Gates amenant la firme qu'il a co-fondée avec P.Allen au sommet de sa gloire jusqu'aux premiers procès antitrust des années 90.

Suite à ces premiers procès antitrust, et désireux de se concentrer sur son engagement humanitaire avec sa femme, B.Gates cède la direction de Microsoft à Steeve Balmer qui y restera jusqu'en 2014 lorsqu'il cèdera sa place à Satya Nadella.

Balmer sera le premier à infléchir la stratégie de Microsoft vers des cycles de développement plus rapides2 et à tenter de faire venir un maximum de développeurs vers les technologies Microsoft.

L'arrivée de Satya Nadella à la tête de la firme de Redmond permettra de concrétiser cette inflexion pour faire entrer Microsoft dans une ère plus libre et ouverte à l'open source, bien loin des considérations de B.Gates.


  1. En VO et dans son contexte ça donne : "No, I'd say that of the world's economies, there's more that believe in intellectual property today than ever. There are fewer communists in the world today than there were. There are some new modern-day sort of communists who want to get rid of the incentive for musicians and moviemakers and software makers under various guises. They don't think that those incentives should exist." source

  2. Internet Explorer, par exemple sort désormais une version majeure par an plutôt que tous les 2 ou 3 ans (IE6, comme XP ayant été un ovni)! 

.NET sur Linux, l'histoire mouvementée de Mono

En 2002, Microsoft décide de réunir les différentes technologies qu'il édite dans un cadre commun qu'il appelle le Framework .NET. Rapidement, les différents langages de Microsoft tels que VB ou Visual C++ seront intégrés à cette plateforme.

La plateforme .NET se base sur une machine virtuelle comparable à la Java Virtual Machine. Microsoft l'appelle CLI (Common Language Infrastructure) et nommera le langage intermédiaire généré par cette machine virtuelle CLR (Common Language Runtime). L'idée est double :

  • Proposer, comme pour Java, un environnement de développement multiplateforme (les programmes écrits grâce à la plateforme .NET sont dès le départ disponibles pour Windows 98, 2000, NT, XP et leurs équivalents côté serveur).
  • Permettre d'unifier les bibliothèques développées avec les différentes technologies. Ainsi vous pouvez développer un outil en Visual Basic .NET qui utilisera des bibliothèques écrites en Visual C++ ou plus tard en C#. Comme toutes ces technologies utilisent .NET, vous n'avez pas besoin d'adapter quoi que ce soit!

Rapidement, les développeurs remarqueront que le premier objectif n'est pas vraiment atteint : seules les plateformes Windows sont supportées. Une équipe se rassemblera alors autour du projet Mono, qui aura pour but d'écrire un interpréteur de CLR pour Linux et Mac.

Heureusement pour les développeurs de Mono, la CLI sera normalisée en majeure partie sous le doux nom de ECMA335. Et Mono tentera de coller à cette norme.

Afin de s'assurer que l'outil sera utilisé par un maximum de personne, le créateur de Mono, Miguel de Icaza, fonde la société Ximian afin d'assurer un support client fiable aux utilisateurs de Mono.

Pourtant, dès le commencement, les retards de développement se font sentir1. Microsoft a un rythme de développement assez élevé et si .NET 1.0 a été publié en 2002, l'année a vu le .NET4.5.2 naître, très loin devant cette première norme.

Microsoft sera durant ces années très peu propice à partager son savoir faire avec l'équipe de Mono, ne participant à son développement que lorsque l'image même de .NET menace d'être écornée si Mono prend trop de retard.

En 2003, peu de temps après sa création, la société Ximian qui était le principal mainteneur de Mono est rachetée par Novell. Avec ce rachat, le développement de Mono va sensiblement s'accélérer.

En 2006, Microsoft attaque Novell, la société qui sponsorisait le développement de Mono à cette époque, pour violation de brevet. Néanmoins, au vu de la popularité grandissante des outils Mono, notamment utilisés par SecondLife2, Microsoft accordera à Novel le droit d'utiliser les technologies développées pour Mono qui imitaient les brevets .NET3.

En 2007, un événement va bouleverser toute la stratégie de Microsoft : Apple sort son IPhone, première version. Le "virage du mobile" doit alors être négocié et ni Windows Mobile, ni Windows Phone 7.5 n'y parviendront.

Ventes de mobiles en 2011->2013 (gartner/eco-conscient)

L'avenir de Mono va se jouer en 2011 lorsqu'une firme, nommée Xamarin est créée suite au rachat de Novell par un fond d'investissement, AtacheMate.
Cette société a pour but de créer des applications natives sur toutes les plateformes présentes sur le marché (IOS, Android, Windows Phone 7.5 puis 8) à partir d'un code C# compilé depuis Mono justement.

L'année 2011 sera d'autant plus importante qu'Unity3D, le moteur de création de jeu vidéo intégrera Javascript et C# comme langage de scripting. L'intégration de C# se fera via Mono pour qu'Unity3D soit portable sur les différents OS. De même Sony utilisera C# et Mono pour la PS Suite.

Voyant dans cette société un potentiel énorme de création d'applications pour leur store alors peu fourni en comparaison avec la concurrence, Microsoft fait de Xamarin un de ses principaux partenaires dans le développement mobile. Pour la première fois, le projet Mono est soutenu officiellement par Microsoft, ce qui lui permet de voir s'ouvrir de nouvelles portes.

Pour autant, Mono n'assure pas un support complet de ce qu'on peut trouver dans la plateforme .NET. En effet, le support du WPF n'est pas assuré. Microsoft n'a toujours pas donné les sources de cette bibliothèque graphique et la garde pour son propre environnement. De ce fait, Mono se cantonne au vieillissant WinForm qu'elle implémente grâce à GTK#.


  1. Aujourd'hui encore le support dit "Everything in .NET 4.5 except WPF, WWF, and with limited WCF and limited ASP.NET 4.5 async stack." 

  2. Plus précisément pour le scripting des mods de SecondLife 

  3. Ce qui a donné lieu à plusieurs montées de bouclier dans le monde du libre car seuls Novel et ses clients étaient alors concernés par cet accord.[ 

Le prix des licences en baisse, le web vers le libre

Le premier pas vers une intégration bien plus conséquente du libre dans le développement de logiciels utilisant .NET fut la création du gestionnaire de package NuGet. Installable en tant que plugin depuis Visual Studio 2010, il est intégré par défaut depuis la version 2012.

Ce gestionnaire de package, à l'instar de pip pour python, npm pour JS ou Maven pour Java, permet de résoudre les dépendances dans vos projets mais aussi de vérifier la compatibilité avec les licences.

Exemple d'installation d'un package

Lorsque vous créez une bibliothèque de code, le partage de cette bibliothèque, la gestion de ses versions peut facilement se faire sur un dépôt NuGet privé, sur nuget.org ou sur un miroir personnel puisque le code de nuget.org est lui même libre. L'exploration de NuGet ou d'un de ses miroirs étant fortement facilitée par la mise en place d'une API REST.

Depuis l'arrivée de Satya Nadella à la tête de Microsoft, une stratégie assumée d'ouverture se met en place. Bien que le PDG de la firme de Redmond soit encore parfois accusé d'utiliser la célèbre stratégie des 3E "Embrace Extend Extinguish"2, plusieurs actions sont venues rassurer le monde du libre.

Cette stratégie commerciale s'appuie sur un changement radical de politique de vente : toute licence OEM1 vendue sur un device dont l'écran fait moins de 10 pouces est gratuite.
De plus, la direction de Microsoft adhère au constat qu'aujourd'hui, l'open source est passé de "toléré" à "prévu".

Dans cette optique, le développement de ASP.NET MVC ainsi que d'autres modules tels que SignalR a dès le départ été rendus open source.

SignalR, le framework de temps réel pour ASP.NET

SignalR, le framework de temps réel pour ASP.NET


  1. L'acronyme originel signifie Original Equipment Manufacturer et désigne dans l'industrie les pièces détachées vendues dans des packages minimalistes. Les licences "OEM" ont été mises en place pour limiter la réutilisation des logiciels préinstallés dans les ordinateurs grand public. Si vous changez l'ordinateur, vous n'avez pas le droit d'utiliser les logiciels OEM de l'ancien. Cette pratique est fortement décriée dans le monde du libre. 

  2. Adopte, étends et extermine, la stratégie d'introduction des produits par Microsoft 

De la .NET Foundation à la libération du .NET Core

Nous arrivons donc en 2014. Microsoft publie Windows 8.1 suite à l'échec relatif de la version 8.0, de même les WindowsPhone équipés de la version 8 de toutes les gammes sont désignés comme éligibles à WindowsPhone 8.1. Microsoft annonce la création des applications universelles. L'expérience de la mise en open source de ASP.NET MVC s'étant révélée positive, Microsoft décide de créer en collaboration avec Xamarin la .NET Foundation.

Cette fondation réunit les projets considérés comme majeurs par ses fondateurs, Xamarin en pilotant plus de dix !

L'un des plus gros projets de cette fondation est la création d'un compilateur open source utilisant au maximum les technologies de compilation à la volée pour :

  • Augmenter fortement les performances
  • Améliorer l'efficacité, la justesse et l'intégration des systèmes d'auto complétion dans les IDE
  • Permettre par la suite d'envoyer un programme utilisant .NET qui n'a pas besoin de l'installation complète du framework pour être partagé car le code sera natif.

C'est à partir de la .NET Foundation que la stratégie d'ouverture de Microsoft passe désormais et, il y a peu, une partie du framework a été complètement ouverte et publiée sous licence MIT, soit l'une des plus permissives !

Pour comprendre quelles parties ont été publiées, le mieux reste de vous fournir le schéma officiel :

Architecture du .NET Core

Ce qu'il faut comprendre c'est que Microsoft lie toujours très fortement ses bibliothèques graphiques (WinForm et WPF) à son système d'exploitation et refuse donc d'en libérer les sources pour aider les équipes de Mono. Le but est clairement d'éviter que les distributions Linux puissent copier l'identité visuelle que l'on trouve depuis les version 2010 d'office et 2012 de Visual Studio.

Notons toutefois qu'avec la politique visant à unifier les applications sur tout l'écosystème Microsoft, l'entreprise continue sa stratégie de libération de ses produits de développement. Le dernier en date est Chakra, le moteur javascript intégré à Edge.

Sources principales


29 commentaires

Merci beaucoup pour la news. :)

Ca me rappelle le type de news très instructive qu'on pouvait trouver sur le SdZ et j'espère sincèrement que d'autres auront le courage (et l'envie !) de se prêter au jeu !

C'était un commentaire hors sujet certes (j'ai quand même lu la news car j'ai déjà travaillé sur .NET, mais passons) mais j'espère qu'il fera quand même plaisir…!

Bravo pour cet article très intéressant ! :)

Ca permet de bien savoir où en est Microsoft dans ses stratégies. Et, j'espère qu'un jour ils seront moins jaloux de leurs interfaces graphiques, parce que j'ai pratiquement arrêté le C# pour des applications Desktop : elles étaient en WPF, donc non multiplateformes (et j'utilise beaucoup Linux avec Windows). Par contre, j'apprécie beaucoup l'ouverture de l'ASP .NET !

+0 -0

Ça reste aussi symptomatique de la victoire général de l'Open source, sur le web en particulier. Il y a très peu d'appli web qui tournent sans aujourd'hui. Et dans les entreprises les logiciels ouverte sont bien mieux considéré qu'il y a quelques années.

Très bon article, merci de l'avoir rédigé et partagé.

Il relève plusieurs points très intéressants que j'avais envie de commenter :

  • en premier lieu, comme l'a dit Kje, l'avènement de l'Open Source pour les bibliothèques, frameworks, et environnements (pas au sens software mais plutôt "stack d'outils") de développement. Me souviens d'une présentation d'un mec de Red Hat, qui avait complètement omis, dans toute sa présentation de mentionner la licence du serveur web qu'il présentait, ce n'est que pendant le Q&A que la question lui a été posée et il a très bien résumé la tendance "Ah yeah, of course it's open source, who isn't these days ?". Pour moi .NET restait le dernier bastion de gros frameworks web pas encore Open Source. Je pense que ce choix devrait leur être extrêmement bénéfique. En tant que développeur web, je ne pourrais pas bosser avec un framework sans avoir la source à disposition, ne serait-ce qu'en consultation. Ça fait peur, tout simplement. Pour le peu que j'ai travaillé avec C# j'ai toujours trouvé que le langage était élégant, et qu'il comblait pas mal de lacunes qu'on peut trouver en Java notamment.
  • Une forte tendance aux nouveaux outils du web temps-réel se dégage. Assez amusant de voir les modes évoluer dans ce domaine. On a vu plusieurs tendances se dégager successivement.
    • le code serveur "qui-fait-tout" : premières versions de php, CGI, ASP
    • le code serveur organisé en managers/contrôleurs + templates "propres" générés côté serveur (Java EE + JSTL vs. ASP.NET vs. Apache Struts 1)
    • le "model-driven-development" : "MVC à l'extrême" : Rails et consorts, Spring MVC, Grails, un peu Django
    • le "tout-asynchrone" : serveurs "temps-réel", non-bloquants : Node.js, SignalR, Netty, Vert.x, Grizzly, Undertow C'est plutôt une bonne nouvelle, on dispose maintenant d'une palette d'outils complète et stable qui permet de fournir des services différents, et peuvent être utilisés de concert.
  • Enfin, les dernières décisions de Microsoft me plaisent beaucoup. Je ne sais pas si c'est dû à l'arrivée d'un seul homme, ou uniquement des effets d'annonce, mais j'ai l'impression que la direction choisie par la société me plaît beaucoup. J'ai l'impression que la qualité des produits augmente énormément, à tel point que les developer-previews sont aujourd'hui de meilleure facture que certains des produits finis d'autrefois. La tendance à l'uniformisation en termes d'OS (desktop/mobile) n'est pas pour me déplaire non plus, si tant est qu'elle soit transparente et "propre" pour l'utilisateur final.

Pour la première fois depuis des années je trouve que Microsoft fait de bons choix et plutôt du bon travail. Et je pense que l'Open Source (et Apple, et Google) n'est pas étranger à cet état de fait. Tant mieux pour nous.

+10 -0

Je confirme, super article, vachement intéressant, fluide et simple à lire, merci !

Et merci Javier aussi qui fait presque son propre article/compte rendu dans les commentaires ! :lol:

+1 -0

Javier, tu n'aurais pas envie de rédiger un article ? Fais plaisir à ton loup :p

Arius

Non surtout pas malheureux ! Tu lui demandes un commentaire et il te fait un article. Donc si tu lui demandes un article, il te fera un big-tuto !

Si c'est un article que tu lui veux, demande-lui un court résumé, pas plus :-°

+5 -0

Plus sérieusement, j'aimerais beaucoup lire un article écrit par Javier ! :)

Et si c'est un sujet qu'il te faut, demande au loup, il en a en réserve le coquinou !

+1 -0

Il est vrai que ces derniers mois ont été riches en annonces qui font plaisir. Et ce sont des choses palpables, c’est d’autant plus appréciable.

Jusqu’à maintenant je n’avais pas les moyens (pour du dev loisir) d’investir dans un Visual Studio Pro et me contentais donc des versions Express (qui présentaient tout de même pas mal de contraintes, notamment l’impossibilité d’y installer des plugins). Avec la version Community je n’ai plus ce souci, et même si je n’ai pas les outils de profilage de la version Ultimate, j’ai au moins la possibilité d’intégrer des alternatives gatuites (ou peu chères).

Le rachat et la mise à disposition gratuitement du plugin UnityVS était l’autre bonne nouvelle de cette fin d’année pour moi.

Comme je l'ai déjà dis aux auteurs, l'article est vraiment de bonne facture. Ravi de voir que vous avez mené ce projet a terme, c'est très intéressant à lire.

J'ai découvert certaines choses en regardant le Github de .NET. Je n'avais pas idée de l'existence de Appveyor comme outil d'integration continue sur Windows, qui est gratuit pour les projets open source.

A coté de ça les badges du projet .NET Core claquent quand même pas mal.

Issue Stats

Issue Stats

Ils sont vachement réactifs on dirait dans le dev.

Merci pour cet article ! :)

Je possède déjà Visual Studio Professional 2013 (obtenu de façon totalement légale) et je me demandais quelles étaient les différences avec ce nouveau Visual Studio Community.

J'ai trouvé ceci sur le site de Microsoft mais ce n'est pas très précis :

Toutes les fonctionnalités de Visual Studio Professional 2013 sont incluses dans Visual Studio Community qui est conçu et optimisé pour les développeurs individuels, étudiants, contributeurs open source et les petites équipes.

Avez-vous plus de détails ou des liens à m'indiquer pour trouver plus d'infos ?

Merci d'avance ! :)

+0 -0

Je possède déjà Visual Studio Professional 2013 (obtenu de façon totalement légale) et je me demandais quelles étaient les différences avec ce nouveau Visual Studio Community.

Le logiciel est le même, visual studio community n'est obtensible que sous certaines conditions, tout comme la license "VS 2013 Professional".

Petites équipe = moins de 6 dev ET ne fait pas plus de je ne sais plus combien en CA avec les projets codés avec VS.

Le community Edition c'est en quelque sorte une version express premium, l'éligibilité est assez restreinte finalement.

A noter que l'Open Source de Microsoft ressemble un peu à celui de Apple : les projets sont libres, sous une licence très permissive (ce qui est très bien) ; cependant :

  1. Ça ne veut pas dire que l'avis de la communauté va servir à quoi que ce soit
  2. Ce n'est pas pour ça que l'éditeur fait le moindre effort pour permettre au code d'être réutilisé.

On peut par exemple regarder le 1er commit du dépôt de Chakra pour s'en convaincre.

On peut par exemple regarder le 1er commit du dépôt de Chakra pour s'en convaincre.

SpaceFox

C'est quoi le problème avec le premier commit ? Si c'est le nombre de fichiers, c'est probablement que l'outils de révision précédent ne permettait pas de recréer des commits dans git. C'est assez courant lorsque des projets à sources fermées passent au libre.

Une autre raison possible est la confidentialité et d'autres clauses : les développeurs du projet depuis sa création ne sont pas forcément tous encore employés. Or pour reconstruire l'historique (si c'est seulement possible, voir le point précédent) il aurait fallu demander l'avis de tous : même si Microsoft est propriétaire du code, mentionner le nom d'ex-employés ainsi que leur contributions précises peut être dans certains cas problématique.

Si c'est pour une autre raison que tu n'aimes pas le premier commit. J'aimerais bien savoir car là je vois pas. ;)

+2 -0

Il existe une nouvelle sorte de communistes modernes qui veut être exemptée de taxes rémunérant les musiciens, les cinéastes et les éditeurs de logiciels.

Cette citation est un peu hors-sujet à mon avis, tout comme le titre "Les promoteurs du libre? Des communistes" qui l'accompagne.

Ici, Bill Gates s'attaque aux gens qui souhaitent réformer le droit de la propriété intellectuelle / brevets pour en restreindre les droits. Il parle des gens qui pensent que l'existence de la propriété intellectuelle est une mauvaise chose, ceux qui disent que les auteurs ne devraient pas pouvoir profiter de leurs oeuvres.

C'est assez loin de "Microsoft et l'open source", je trouve. Une minorité de libristes sont aussi extrêmes que ça, et l'open source n'est pas particulièrement libriste.

+4 -2
Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte