La stratégie Microsoft: ouverture et multiplateforme

Microsoft Mobile First Cloud FirstEn mars 2014, Satya Nadella (directeur général de Microsoft) annonçait clairement la nouvelle stratégie Microsoft : innover pour s’ancrer dans un monde orienté mobile et cloud (mobile-first, cloud-first world).

Un an après, les réalisations de cette stratégie sont de plus en plus visibles et démontrent une volonté forte d’ouverture de la part de Microsoft pour atteindre cet objectif.

Priorisation des déploiements des produits, licences/tarifs, opensource, multiplateforme et respect des standards, toutes les branches de la société de Redmond sont impactées par la vision de S. Nadella.

En novembre dernier, nous parlions déjà de la transformation de Microsoft et de cette tendance à l’ouverture avec notamment la mise à disposition en Open-Source d’ASP.Net, du compilateur et du runtime .Net ainsi que l’intégration de composants récents comme Docker sur Azure et Windows Server. La conférence //Build qui s’est déroulée fin avril à San Francisco enfonce le clou sur le thème de l’ouverture (vous pouvez retrouver tous les vidéos en ligne sur Channel9 //Build 2015 et Microsoft organisera un tour du monde pour un rejeu dans 26 villes dont Paris le 1 juin).

Voyons d’abord le terme ouverture (ou par extension l’intéropérabilité), nous pouvons définir 2 types d’ouverture :

  • Ouverture vers l’extérieur : mes applications ou services à base de technologies Microsoft doivent fonctionner avec/sur les autres plateformes
  • Ouverture vers l’intérieur : les applications ou services des autres fonctionnent dans mon écosystème Microsoft

Vers l’extérieur

Pour faciliter l’adoption des technologies Microsoft, il n’y a pas eu d’autres choix que de s’ouvrir vers l’extérieur en s’intégrant à des projets open-source ou en diffusant/libérant ses propres technologies jusqu’alors gardées secrètes (.Net Foundation). Plus d’informations sur ces initiatives sont disponibles sur le site MS Open Tech.

Voici quelques autres éléments saillants :

Xamarin

Sur la partie mobile, il existe Xamarin. Bien que n’étant pas un produit Microsoft, Xamarin est « sponsorisé » par le géant (nous pourrions imaginer que Microsoft décide de racheter Xamarin ou de développer sa propre solution).

Xamarin est un suite logicielle de développement permettant de créer des applications multiplateforme Windows, iOS et Android. Un projet Xamarin est composé d’une structure spéciale de fichiers et de compilateurs permettant une mutualisation maximale de code et des IHM. Ces projets permettent aussi l’écriture de portion de code spécifique à chaque plateforme.

Si en lisant cela vous avez l’impression d’entendre de PhoneGap, Titanium, Appcelerator, c’est normal car l’objectif est le même, à la différence qu’ici le langage de développement sera le C# (et non le HTML/JS) et que Xamarin compilera ce code en binaire natif propre à chaque plateforme (oui, du C# qui produit un IPA ou un APK c’est possible)

Ainsi une équipe de .Netistes pourra « facilement » faire une application native sur les 3 plateformes. Evidemment, personne ne s’invente développeur Windows, iOS ou Android du jour au lendemain, l’équipe devra faire preuve de pragmatisme pour faire les meilleurs choix et ne pas se perdre dans l’éternel dilemme du développement natif vs framework générique.

Pourquoi faire des portages ?

Ces portages rapides pourront se justifier pour des applications satellites, des besoins de marché à satisfaire très rapidement (répondre à un buzz ou une tendance) ou des applications où l’identité de la marque ou du produit primera sur la plateforme (notamment les jeux ou les services ayant un univers ou une identité visuelle différenciante).
En vrac, voici quelques pistes de réflexion : maintenabilité, pérennité, expérience utilisateur, UX adaptée à la plateforme, identité différenciante, satisfaction utilisateur, quick-win, applications satellites vs application coeur…

mobile vs native dilemna

Visual Studio Code

L’une des surprises de la //Build était la mise à disposition d’un IDE/Compilateur/Debugger multiplateforme (c’est-à-dire qui fonctionne sous Windows, Mac et Linux) pour le développement d’applications Web ASP.Net (qui sont elles-même multiplateformes car pouvant être hébergés n’importe où grâce au moteur ASP.Net open-source et multiplateforme).

Ainsi les entreprises et développeurs web ASP.Net (et Node) ne sont plus cantonnés à l’écosystème Microsoft (ni en terme d’OS de travail et ni d’OS de déploiement) et les développeurs venant d’autres plateformes peuvent profiter de l’outillage et du moteur ASP.Net.

Market-first

Les utilisateurs de téléphones Windows sont un peu en rogne. De nouvelles versions d’Office, OneDrive et autres applications Microsoft sont disponibles ou mises à jour en premier sur les plateformes iOS et Android, WindowsPhone n’arrivant qu’en bout de chaîne. Etrange ? Pas tant que cela.

Imaginez-vous propriétaire d’une plateforme occupant à peine 10% du marché et d’un écosystème (applications, services…) très large et connu. Deux possibilités :

  • A – Soit vous utilisez votre écosystème comme levier pour tenter de rendre votre plateforme attractive, au risque de le rendre aussi peu utilisé que votre plateforme.
  • B – Soit vous ouvrez tout en rendant votre écosystème accessible partout et par tous, au risque de ne pas faire progresser les parts de marché de votre plateforme.

Si vous avez choisi la réponse B, vous êtes pragmatique comme Microsoft en vous disant qu’il ne sert à rien d’engouffrer tous les actifs de l’entreprise dans un marché de niche (en considérant que WindowsPhone est actuellement une niche dans le marché du mobile). Le marché actuel étant dominé par iOS et Android, rendons donc nos services disponibles sur ces plateformes. Evidemment, il y a bien d’autres moteurs aux décisions de Microsoft qui mériteraient des articles dédiés.

Une autre adaptation au marché touche les licenses, le cloud Azure fournit toutes les strates de l’informatique en service locatif:

Azure as a Service

Et Windows 10 n’échappe pas à l’appellation « Windows 10 as a Service », les licences et la notion de versions pour les particuliers et les entreprises se voudront simplifiées.

Vers l’intérieur

Diffuser sa technologie est très pertinent mais ce sera peine perdue si elle n’évolue pas ou si c’est une « vieille » coquille vide.

Un cloud à jour

De l’hébergement de VM Linux ou de bases Oracle à la simple location des services en lignes Office 365 en passant par l’utilisation plateforme de Machine Learning (AzureML), Azure est une des plateformes cloud les plus polyvalentes du marché.

Microsoft investit massivement sur cette plateforme pour ajouter de nouveaux services et les rendre disponibles pour tous. Microsoft fait aussi preuve d’une grande réactivité pour intégrer des composants tiers récents (comme par exemple Hadoop et R pour le bigdata ou Docker et Node pour la partie serveur d’application)

Des serveurs web modernes

Avec la mise en open-source du moteur ASP.NET 5, de ses composants (dont MVC 6) et les portages pour Linux et OSX, le développement de serveur Web et de Web API en .Net devient accessibles à tous. Certains crieront à l’hérésie en envisageant l’hébergement d’un site ASP.Net sur un serveur Linux. Il ne s’agira évidemment pas d’un cas généralisé mais qui pourra avoir ses cas d’usages:

  • un hébergeur voulant mutualiser son infrastructure
  • une société non-Microsoft recevant un site .Net venant d’un prestataire ou d’une agence
  • une société voulant utiliser ses compétences (.Net) pour un projet Web tout en conservant son infrastructure
  • ou simplement un projet avec un graphiste sous MacOS, des développeurs sous Windows, des administrateurs sous Linux qui veulent chacun pouvoir contribuer au projet en hébergeant en local une version de travail

Le web n’ayant pas attendu Microsoft pour s’outiller, Microsoft a donc aussi intégré les outils du moment comme le support de GruntJS, AngularJS, la gestion de packages via NPM et Bower. Si les nouveautés ASP.Net/MVC vous intéressent, je vous conseille de lire l’article Top 10 Changes in ASP.NET 5 and MVC 6.

Le portage d’applications mobiles

Une des suprises de la //Build était aussi l’annonce de Islandwood et Astoria. Derrière ces noms de lieux se cachent 2 projets de portage applicatif.

iOS Bridge « Islandwood » est un compilateur de sources iOS (Objective-C puis Swift) en un binaire fonctionnant sous Windows.
Une équipe iOS peut ainsi porter « facilement » les sources de ses applications vers les plateformes Windows.

Android Bridge « Astoria » est un compilateur Android pour Windows + une machine virtuelle Android (Dalvik / AOSP – Android Open Source Project) intégrée à Windows 10 Mobile pour exécuter directement les binaires Android. Cela inclut un mapping automatique des API Google vers les API Microsoft équivalentes (comme le remplacement de Google Analytics par Microsoft App Insights pour l’analyse d’audience).
L’équipe Android pourra, à quelques modifications près, rendre disponibles ses applications aux utilisateurs Windows.

Actuellement, ces deux initiatives sont en beta et accessibles uniquement sur invitation. Microsoft évalue même au cas par cas les demandes de portage Android.

Bien sûr, tout n’est pas rose et le portage pourra ne pas être 100% fonctionnel. Et comme dans le cas de Xamarin (voir plus haut), il ne faudra pas se réfugier derrière une mutualisation excessive qui se ferait au détriment des besoins réels et de l’expérience utilisateur.

Question à $1 000 000 :
En rendant son écosystème ouvert, Satya Nadella préfère-t’il voir ses fidèles développeurs s’essayer au développement sur d’autres plateformes (quitte à y prendre goût et devenir développeur iOS ou Android) ou augmenter l’attractivité de sa plateforme pour les utilisateurs et les développeurs en promettant/permettant des portages facilité ?

Le nouveau navigateur Microsoft Edge

Microsoft a de plus annoncer le nom de son nouveau navigateur web Microsoft Edge (anciennement Project Spartan). Ce navigateur totalement revu est 100% compatible HTML5 (dont WebGL) et promet un cycle de mise à jour très fréquent pour suivre les évolutions des technologies web.

En synthèse

En résumé, Microsoft a appris de ses erreurs et compris que son approche MS-centric était en déphasage avec la dynamique des Géants (dont les GAFA). Le tournant est donc clairement pris :

  • Ouverture vers l’extérieur pour permettre aux entreprises de toucher de nouveaux utilisateurs, d’aller sur de nouveaux marchés ou simplement d’être libres de choisir des solutions mixant Microsoft et d’autres plateformes.
  • Ouverture vers l’intérieur pour que les entreprises profitent des technologies récentes et à l’état de l’art venant de sociétés ou communautés tierces. Pour les éditeurs d’applications et les fournisseurs de services pouvoir les rendre disponibles « même sous Windows ».

En plus de ses signes d’ouverture, Microsoft a annoncé la Universal Windows Platform qui est un kit de développement à destination de l’ensemble des plateformes pouvant exécuter Windows 10 telles que les smartphones, les tablettes, les ordinateurs mais aussi les objets connectés (IoT), l’embarqué, le wearable et le casque HoloLens (je vous conseille de regarder les videos du site HoloLens).

Gordon Kelly de Forbes écrivait « Microsoft Is The New Google, Google Is The Old Microsoft », attendons encore un peu pour voir vers où va le futur.