Microsoft a snobé Windows 9 : une histoire de code ?
Les développeurs s’interrogent sur la raison pour laquelle Microsoft n’a pas retenu le nom commercial « Windows 9 » pour son prochain OS. La réponse se trouve peut-être dans le code.
Ce mardi 30 septembre, Microsoft levait le voile sur Windows 10, présenté comme une plate-forme convergente orientée cloud et mobilité avec un focus sur la productivité « cross-device ».
Recherche universelle, bureaux virtuels, retour du menu Démarrer… Les démonstrations se sont succédé, mais une question est restée en suspens : pourquoi ne pas avoir choisi le nom commercial « Windows 9 », qui s’inscrivait dans la suite logique de Windows 8 ? Microsoft a bien tenté d’expliquer que le chiffre 10 reflétait plus pertinemment le concept d’expérience unifiée. Mais les observateurs sont restés dubitatifs : selon certains, l’éditeur a voulu marquer la rupture avec la version actuelle de son OS, froidement accueillie par le public depuis sa sortie en octobre 2012.
Une autre hypothèse fait son chemin dans la communauté des développeurs. Sur le réseau social américain reddit, un utilisateur postant sous le pseudonyme « cranbourne » et se revendiquant développeur Microsoft affirme que le problème est lié à une implémentation de code dans certains programmes tiers.
De nombreux logiciels encore exploités actuellement en entreprise examinent la machine sur laquelle ils s’exécutent pour ajuster automatiquement leurs paramètres. Plusieurs milliers d’entre eux remontent jusqu’à de très anciennes versions de Windows pour maximiser la compatibilité.
Selon le langage dans lequel ils sont écrits, les programmes récupèrent soit la version du noyau (NT 6.1 pour Windows 7, NT 6.2 pour Windows 8…), soit le nom commercial de l’OS. Visual Basic entre dans la première catégorie avec la fonction GetWindowsVersion, tout comme Python avec platform.release() et le C avec GetVersionEx. Les éditeurs qui exploitent JavaScript ont tendance à choisir la deuxième solution… Ce qui pose problème avec la fonction suivante :
if(version.StartsWith(« Windows 9 »))
{ /* 95 and 98 */
} else {
Si le programme détecte la chaîne de caractères « Windows 9 » dans le nom du système d’exploitation, il bascule en mode de compatibilité pour Windows 95 et 98. C’est d’autant plus problématique que cette portion de code a tendance à subsister dans les logiciels commerciaux qui existaient déjà dans les années 90 et qui sont encore commercialisés aujourd’hui.
Selon plusieurs des développeurs qui s’expriment sur le fil de discussion reddit, la logique chez beaucoup d’éditeurs est de laisser le code tel quel tant qu’il fonctionne, essentiellement pour des questions de temps… et parce que Windows le tolère : Microsoft fait régulièrement évoluer ses interfaces de programmation, mais fait en sorte d’assurer une compatibilité maximale avec les anciens programmes.
A noter qu’il est récemment arrivé le même type de souci avec le plugin Java pour Mac, qui interprétait OS X 10.10 comme la version 10.1.
—— A voir aussi ——
Quiz ITespresso.fr : connaissez-vous bien Microsoft ?
Crédit illustration : Lonely – Shutterstock.com