ultramcu - Fotolia
Microsoft va intégrer le Shell Unix Bash à Windows
Après Hadoop, Docker, Mesos, c'est finalement le shell Unix Bash qui va rejoindre l'écurie des technologie open source intégrées à Windows. Mais dans sa course à l'ouverture aux technologies libres, Microsoft ne néglige-t-il pas la plus évidente : le noyau Linux ?
Cet article a été amendé le 1er avril pour ajouter des détails sur la façon dont Microsoft a implémenté Bash sur Windows.
Le pèlerinage de Windows vers l’open source se poursuit lentement mais sûrement. Hier, à l’occasion de sa conférence Build 2016, l’éditeur de Redmond a annoncé l’intégration du Shell Bash (Bourne Again Shell) à Windows. L’interface en mode ligne de commande Bash est une réinterprétation modernisée du Shell Bourne, écrit par l’anglais Stephen Bourne en 1977 et disponible en standard sur tous les Unix v7.
Développé pour le projet GNU par Brian Fox pour devenir le Shell officiel du projet, Bash s’inspire massivement du Shell Bourne mais emprunte aussi nombre d’améliorations apportées par le Korn Shell (développé par David Korn en 1983) et par le C Shell (développé à Berkeley en 1978 par Bill Joy, l’un des cofondateurs de Sun Microsystems).
Bash est aujourd’hui l’interface en mode ligne de commande standard de nombreuses distributions Linux, mais aussi de Mac OS X, l’OS d’Apple (par opposition les OS Free BSD utilisent aujourd’hui une version modernisée du Shell C, baptisée tcsh).
L’adoption de Bash par Microsoft est certes une énième preuve de l’ouverture prêchée par Satya Nadella le patron de Microsoft, mais elle est aussi le signe que Microsoft est devenu brutalement pragmatique pour ce qui est du choix des technologies à intégrer dans Windows. Microsoft disposait jusqu’alors de son propre Shell avec PowerShell, mais si la technologie a visiblement séduit les administrateurs Windows, elle n’a guère convaincu les administrateurs Linux. Avec Bash, ces derniers ne seront pas dépaysés et retrouveront, dans Windows les commandes qui leurs sont familières. Ils pourront deplus exécuter leurs scripts linux directement dans Windows. C’est vu de Redmond un obstacle en moins à l’adoption de Windows comme plate-forme pour l’exécution d’applications.
En pratique l'intégration de Bash a nécessité un peu de créativité. Microsoft a créé un nouveau sous-système dans le noyau Windows (le Windows Subsystem for Linux) qui reroute et transcrit les Syscall Linux vers leur équivalent Windows. L'éditeur a ensuite emprunté à Ubuntu son user-mode afin de l'implémenter directement au dessus de ce sous-système. Dans la pratique, Canonical a créé une distribution spécifique amputée du noyau Linux et Microsoft a implémenté cette distribution au dessus du noyau Windows. C'est donc l'intégralité du usermode Ubuntu qui fonctionne désormais au dessus du noyau Windows, avec l'ensemble des outils du usermode Ubuntu (il y a encore des trous et des problèmes mais la technologie est encore en développement).
L’ouverture de Microsoft : le prix à payer pour l’échec du « Windows Everywhere » de Gates et Ballmer
Autrefois incontournable, Windows est aujourd’hui une citadelle assiégée. Linux est par exemple présent dans près de 70 % des VM déployées dans les différents clouds du monde et il est l’OS de 30 % des VM dans le propre cloud de Microsoft, Azure. Le noyau Linux domine le marché des smartphones – grâce à Android - et celui de l’embarqué. Il est sur le point de conquérir le monde de l’Internet des objets. Même sur le monde du poste de travail, Windows est de plus en plus contesté par Mac OS X, ChromeOS et les multiples variantes d’Android pour le poste de travail (comme le Remix de Jide). La stratégie Windows Everywhere imaginée par Bill Gates et Steve Ballmer est en ruine.
Satya Nadella en a conscience et il sait surtout qu’une génération entière d’informaticiens a été biberonnée aux technologies ouvertes et qu’il lui faut aujourd’hui s’adapter ou périr. L’ancien Microsoft avait commencé à évoluer, mais ne s’était pas résolu à adopter des technologies tierces. Lors de l’émergence du Web, au lieu d’adopter Apache, Microsoft avait développé IIS. Plutôt que d’adopter Xen, Microsoft avait préféré créer Hyper-V. Au lieu d’adopter un shell existant, Microsoft avait répondu en développant PowerShell. Etc.
L’arrivée de Satya Nadella aux commandes de Microsoft a mis un terme à ce syndrome du « Not Invented Here » caractéristique de l’ère Ballmer. Le nouveau Microsoft n’a plus d’états d’âme. Les devops veulent des conteneurs. Microsoft s’allie avec Docker pour faire de la technologie open source le cœur de son offre de conteneurs. Ils veulent Hadoop sur Windows, Microsoft s’allie avec HortonWorks pour créer HDInsight Service (dans Azure) et HDInsight Server (pour Windows Server). Ils veulent un outil d’orchestration de conteneurs à grande échelle. L’éditeur s’allie avec Mesosphere pour faire d’Apache Mesos le cœur de son offre Azure Container Service (une offre qui sera aussi déployée sur Azure Stack) et porter Mesos sur Windows Server. Ils veulent retrouver leur shell Linux favori dans Windows, Microsoft annonce l’arrivée de Bash.
Jusqu’à l’arrivée de Satya Nadella, toutes ces annonces auraient tout simplement été inenvisageables. L’Open Source était un cancer avait décrété Steve Ballmer. Sauf que le libre, en tant que modèle de développement et d’innovation l’a emporté. Satya Nadella n’a donc d’autre choix que d’être pragmatique, même si pour cela il lui faut sacrifier un certain nombre de vaches sacrées.
Windows de plus en plus ouvert aux technologies open source
La question désormais n’est pas de savoir si Microsoft est prêt à l’ouverture. Ses faits mêmes en attestent aujourd’hui. Elle est plutôt de savoir s’il y a encore des limites à l’ouverture et s’il reste encore des vaches sacrées chez l’éditeur.
Dans les datacenters, le système d’exploitation est devenu secondaire. Fini l’époque binaire ou Windows et .Net étaient étroitement réunis au sein d’une plate-forme applicative menant la guerre face au couple Linux/Java (et préalablement au couple Unix/Java). Aujourd’hui, les développeurs ne veulent plus avoir à choisir. Les OS et les infrastructures sous-jacentes se doivent d’accueillir efficacement toutes les applications qu’ils ont imaginées.
Après 20 ans d’inflation, l’OS se réduit de nouveau à sa portion congrue (noyau, pilotes, réseau, stockage, shell, virtualisation) et il doit pouvoir accueillir tout type de runtime, de base de données, de technologie de conteneur, d’orchestrateur…
Le problème pour Microsoft est que la plupart des nouvelles technologies de runtime, de conteneur et d’orchestrateur naissent aujourd’hui dans le monde open source. De ce fait, Linux est leur plate-forme naturelle de déploiement. L’éditeur mène donc une difficile bataille pour veiller à ce que Windows Server et Azure ne soient pas trop à la traîne.
Le noyau Linux: prochaine frontière de l’ouverture pour Microsoft ?
On ne peut que s’émerveiller du remarquable travail effectué par l’éditeur pour intégrer les technologies libres dans son portefeuille. Mais la question se pose de savoir si ce travail coûteux n’est pas ultimement futile et si l’avenir n’est tout simplement pas à l’adoption par Microsoft du noyau Linux dans Windows Server.
L’adoption du noyau Linux permettrait au géant de Redmond d’implémenter en temps réel les innovations du monde libre tout en conservant ce qui fait sa force en matière d’interface graphique, de développement et de support. .Net est déjà quasiment porté sur Linux du fait des travaux de Xamarin (acquis par Microsoft) et il est sans doute relativement simple d’envisager une technologie d’émulation ou de virtualisation légère pour assurer la compatibilité des applications existantes. Les technologies réseaux et stockage de l’éditeur sont elles aussi sans doute éminemment portables.
Une alternative pourrait être pour Redmond de proposer sa propre distribution Linux en parallèle de Windows en traçant une roadmap de convergence vers un futur OS unique. Cette stratégie duale aurait le mérite de permettre à Microsoft de se battre immédiatement à armes égales avec Red Hat , Suse, Ubuntu & Co dans le monde des datacenters (soit en forkant CentOS, soit en acquérant un acteur comme CoreOS), tout en continuant à faire vivre Windows Server en tant que plate-forme d’exécution « legacy » pour faire tourner le vaste parc d’applications existantes. La vraie question est de savoir si Redmond est prêt au sacrifice de sa dernière vache sacrée…