Le monde est ainsi fait que le marketing arrive parfois à nous faire oublier les réalités techniques. Microsoft - mais c'est aussi vrai pour les grands acteurs de l'informatique - est un spécialiste de ces enrobages qui, sans être à proprement parler faux ou mensongers, font parfois passer un gentil matou pour un tigre sanguinaire en puissance.
Windows 10, parce qu'il est le produit phare d'une nouvelle ère de Microsoft sous l'égide de Satya Nadella, n'échappe à cette règle marketing. C'était particulièrement visible lors de la dernière conférence Build dont Windows 10 était la star. Pour être franc, comme je suis quelqu'un de technique, je trouve particulièrement agaçant cette surenchère marketing, surtout face à un public de développeurs qui n'a pas besoin de ça. Mon objectif dans ce billet d'humeur est d'essayer de démonter ce discours marketing pour poser la question qui m'obsède : Windows 10 existe-t-il vraiment ?
Le discours marketing"Windows 10 fonctionnera sur toutes les machines que ce soit des ordinateurs, des smartphones, des tablets, des consoles de jeu, des casques de réalité augmentée (Hololens) ou des miniPC (RaspberryPI). Les applications écrites pour Windows 10 fonctionneront donc sur toutes les machines "
Voilà le discours marketing.
Alléluia ! Le rêve d'un même système et d'applications qui fonctionnent sur tous les périphériques est de retour. Mes plus lointains souvenirs d'annonces similaires dans l'informatique datent de la préhistoire: la naissance du langage Java (un environnement pour tous les périphériques) et celle de Pocket PC, qui se voulait être le portage de Windows pour Smartphone (un seul système pour le bureau et le smartphone: oui déjà !).
Un seul système pour toutes les plateformes: vraiment ?
Mais qu'est-ce que Windows ? Une immense quantité de code développé en langage C/C++ (WIN32 vient de là) et qui a toujours été pensé pour s'exécuter sur un PC dont il prend le contrôle en tant que système d'exploitation. Tout ce code gère ce qu'on appelle traditionnellement le bureau. En 2012, Microsoft y a ajouté la fameuse interface Metro/Modern UI qui globalement est une simple IHM permettant de lancer des nouvelles formes d'applications ne s'exécutant pas dans le bureau et qui sont écrites en .NET ou en JavaScript.
Qu'est-ce que Windows Phone ? C'est aussi une immense quantité de code destiné à contrôler un smartphone. Windows Phone partage-t-il du code avec Windows ? Oui, certainement (nous y reviendrons) mais c'était un enjeu majeur pour Microsoft de réécrire de zéro un OS plutôt que de répéter l'échec cuisant de Windows Mobile qui se voulait un simple portage pour smartphone de Windows (voir ici pour s'en rappeler).
Donc, vous l'aurez compris Windows et Windows Phone ce n'est pas le même code donc Windows ce n'est pas la même chose que Windows Phone !
Qu'est-ce que change Windows 10 ? Est-ce que Windows 10 est la fusion du code de Windows et de Windows Phone pour donner un nouveau système ?
Non pas du tout. La preuve: avez-vous vu un schéma d'architecture ou un article de blog de Microsoft qui dit clairement et sans ambiguïté qu'il s'agit d'une fusion ? Si oui, s'il vous plait communiquer le moi, je le recherche !
Windows 10 est simplement le rapprochement ergonomique des IHM de Windows 8.x et Windows Phone 8.x - ne serait-ce que pour qu'elles soient cohérentes - mais cela n'en reste pas moins des systèmes d'exploitation différents qui ont d'ailleurs une date de sortie différente et sont des SKU ("produits" dans le jargon Microsoft) différents.
Une seule application pour toutes les plateformes: vraiment ?
Voilà qui est vraiment formidable: avoir des applications qui peuvent s'exécuter aussi bien sur votre PC, votre smartphone que sur votre tablet et qui vont s'adapter automatiquement à la taille d'écran et aux capacités de votre machine.
Mais prenons l'exemple d'Office qu'utilise Microsoft dans ses présentations. Dès aujourd'hui Office fonctionne sur PC (Office 2013), sur Mac (Office 2011 Mac), sur iPad, sur Android et même sur le web dans votre navigateur (Office 365). Est-ce la même version d'Office à chaque fois ? Bien sûr que non.
Là aussi si l'on prend du recul et qu'on revient au source d'Office, on sait qu'Office est un ensemble de code C/C++ WIN32 volumineux qui implémente toutes les fonctionnalités riches de la suite Office pour PC. On sait aussi que Microsoft a réécrit des versions légères d'Office, notamment pour le web et Office 365, qui reprennent un sous-ensemble des fonctionnalités en conservant le format des fichiers Office. Mais il ne s'agit que de versions limitées d'Office, pas du produit Office lui-même qui est prévu pour s'exécuter uniquement sur une architecture PC.
Avec Windows 10 et Office 2016, Microsoft a-t-il réécrit Office pour qu'il fonctionne uniquement en web de manière à être portable pour tous les environnements ? Bien sûr que non. La richesse des fonctionnalités d'Office ne pourrait convenir à tous les environnements. Il s'agit uniquement d'un habillage marketing de différents produits et ce n'est pas parce que vous brancherez votre smartphone Windows 10 sur un écran que vous aurez accès à toutes les fonctionnalités riches de la suite Office WIN32.
Allons plus loin: qu'en est-il des fameuses "Applications Universelles" qu'en tant que développeur vous avez l'opportunité d'écrire et qui fonctionneront sur toutes les plateformes.
Là non plus il n'y a pas de miracle: si en effet Microsoft vous propose avec Visual Studio des outils vous permettant de gérer de manière commune votre application sur différentes plateformes, vous aurez intérêt à choisir une technologie portable (.NET, JavaScript et pas Win32) et vous aurez à gérer des parties spécifiques de votre projet pour cibler tel ou tel environnement (PC ou smartphone/tablet). D'ailleurs le concept d'applications universelles existe déjà depuis plusieurs mois et très concrètement il vous impose de séparer le code commun à chaque plateforme et le code spécifique dans des sous-projets Visual Studio.
Donc là-aussi l'application unique qui fonctionne sur toute les plateformes n'est qu'un habillage marketing sur un ensemble d'applications qui portent le même nom sans être réellement la même chose.
Mais alors on nous aurait menti ?
Bon dans tout ce qui précède j'ai forcé un peu le trait bien sûr, mais je dois reconnaître que derrière le discours marketing il y a quand même un fond de vérité. Il est difficile de trouver des sources fiables mais quelques articles indiquent que l'équipe système de Microsoft travaille depuis plusieurs années à un concept de noyau système partagé appelé "Windows Core".
On peut par exemple en voir la trace sur cet article qui expliquait comment pour Windows RT, Windows a dû être "porté" sur ARM ou celui-ci qui indique que Windows 10 est la première étape vers une utilisation plus large du "Windows Core" qui pourrait bien arriver dans la prochaine version de Windows, appelée "Redstone".
Donc, OUI Windows 10 et Windows Phone 10 partagent des éléments communs mais NON ce n'est pas à proprement parlé le même système. Et pour les mêmes raisons NON toutes les applications Windows ne s'exécuteront pas sur tous les terminaux mais OUI, Microsoft propose des outils pour qu'elles partagent des éléments commun.
Est-il vraiment nécessaire de cacher sous un habillage marketing une diversité de fonctions et de technologies qui restent une véritable complexité technique pour les développeurs ?
Je ne crois pas. Appelons juste un chat un chat et un tigre un tigre même s'ils sont de la même famille.