En mars, le New York Times avait publié un article sur les raisons du retard de Vista, le successeur de Windows XP.

Slashdot a repris et commenté l’article (le texte du NYT est dans les commentaires, et non ce n’est pas probablement pas légal) ; les remarques abondent sur l’architecture de Vista et sur les difficultés de la gestion de tels gros projets.

Un autre article assassin se trouve sur ce blog d’un employé microsoftien, un certain Philipsu ; il parle des problèmes de gestion de projets du géant de Redmond ; il se demande si Vista est simplement trop gros pour être maîtrisable, ou s’il soufre de trop de fenêtres brisées[1]. Voir aussi la discussion sur Slashdot.

Autre article ici de Paul Thurrott , avec ses commentaires sur Slashdot.

Retards successifs.

Windows XP, le système d’exploitation vendu avec l’écrasante majorité des PC actuels, a déjà cinq ans. En informatique, c’est une génération. Vista (autrefois connu sous le nom Longhorn) est son successeur. Des versions bêta circulent actuellement, et la version finale est programmée pour cet hiver.

Microsoft a déjà repoussé de nombreuses fois la date de sortie, initialement fixée en 2003. C’est une habitude chez Microsoft à chaque nouvelle version de Windows, mais le dérapage est là effroyable, et s’accompagne du renoncement de certaines fonctionnalités majeures, pourtant nécessaires pour reprendre le terrain perdu face à Apple et Google. XP date de 2001 et cela se sent[2].

Les annonces de Microsoft sur le côté révolutionnaire de son futur système comment à devenir lassante. Elles ont eu lieu pour Windows 95, Windows 98, Windows Millenium, NT 3.51, NT 4, Windows 2000, XP...

Certes, les employés de Microsoft n’ont pas chômé entre-temps : Windows 2000 Server, les deux Service packs de XP, une palanquée de patchs de sécurité, des versions PDA et pour téléphone qui ont eu leur succès, le tablet PC, des media centers[3]... Mais point de Windows desktop (donc « complet », qui marque une nouvelle étape dans les fonctionnalités utilisables par 99% des ordinateurs de la planète).

En face, Apple, en théorie une entreprise bien plus petite, a sorti quatre versions, la prochaine (Leopard) sortira avant Vista (Correction de novembre 2006 : En fait, Vista sortira finalement en janvier, et Leopard est prévu pour le second semestre 2007) - elle est déjà présentée comme « Vista 2 ». (Reste à savoir ce qu’on entend par version, Apple étant nettement plus incrémental ; mais bien des fonctions annoncées pour Vista sont depuis un an dans Tiger, notamment les widgets et le moteur de recherche local).

La taille

C’est l’indice qui suggère au New York Times que Vista est trop gros pour être gérable. XP fait 35 millions de lignes, le double de Windows 95, Vista atteindrait les 50 millions. Des bruits sur une réécriture de 60% du code sont hallucinatoires. Idem pour les bruits qui voulaient que des pans entiers soient réécrits en .net, le dernier environnement de développement de Microsoft. D’après Philipsu, il y aurait par contre bien cinquante couches dans le mille-feuilles des librairies.

La complexité délibérée

On a donc un monolithe hyper-complexe. Et d’après Ray Ozzie, nouveau grand chef de l’éditeur, “Complexity kills. It sucks the life out of developers, it makes products difficult to plan, build and test, it introduces security challenges and it causes end-user and administrator frustration.
Les interactions et la complexité d’un système augmentant au bas mot avec le carré de sa taille, on a une idée du problème. Par contre, il vaut mieux que le nombre de développeurs ne monte pas autant, car le temps perdu à coordonner ces gens explose également.

Mais Microsoft, bien qu’abritant de nombreux esprits brillants, semble plus dominé par les nécessités du marketing, du “ship it!” et de l’accumulation de features que par les nécessités de l’ingénierie[4].

D’après le NYT, “The REAL poor design decision was electing to create a tightly integrated system” - en clair un système propre et compact, qui aurait permis d’assurer plus facilement les objectifs prioritaires de compatibilité ascendante (avec vingt ans d’applications) et de débauche de fonctionnalités. Ces deux objectifs sont d’ailleurs deux bons moyens de faire « dériver » le code.
On en rajoute avec Internet Explorer, développé dans l’urgence (et ça se sentait, si vous vous souvenez de tous les problèmes quand IE 4 est sorti), et délibérément « éparpillé » dans le système pour le rendre « intégré » (c’était l’époque du procès antitrust). Faire dépendre un shell de composants du navigateur est une aberration technologique.
Pour finir, pilotes et interface graphique se sont retrouvés au niveau du noyau pour obtenir facilité d’utilisation et performances correctes.

Ainsi le mille-feuilles qu’est un système d’exploitation est devenu un véritable château de cartes.

Les renoncements.

Il n’y a pas que les dates à avoir souffert. La grande réécriture promise s’est transformé en abandon successif de fonctionnalités. Pas de .net sous-jacent, pas de WinFS, ce dernier étant pourtant déjà promis pour Cairo en 1991. IE 7 et Windows Media Player 11 sortiront indépendamment avant Vista. De nombreuses améliorations sont déjà apparues dans XP SP2. Quel intérêt a donc Vista ?

Et comme Vista n’est pas une réécriture, il n’y a pas de réel progrès au niveau du système :

Yes, it’s a complete redesign from the ground up. That’s why the same crummy registry concept is there, why the control panel looks exactly the same with many of the same icons, why dll hell still exists to some degree, why programs are still installed in the same way, why the explorer process requires 100MB vs 20MB in XP. The way apps are installed and managed in OS X is so obviously superior that MS would be stupid not to copy it during a complete redesign. Should I go on? A complete redesign, I HOPE, would involve streamlining code/operation and killing some of it’s demons. Vista does neither. What MS have done is rewritten some of the modules and added a lot of new modules, which is why Vista has 15 million lines of code (or so) more than XP. It’s a much more complex OS... and not in a good way.

Certains ironisent sur le fait que Vista ne sera, comme XP, qu’une amélioration cosmétique - coûteuse en puissance (d’où l’intérêt de Dell et consorts pour une sortie rapide du Windows nouveau). Sur ce point, la concurrence est plus rapide, et rattrape son retard.[5]

Ironiquement, un des seuls progrès de Vista, la séparation nette entre utilisateur et administrateur, sera vécu comme une régression par bien des utilisateurs. Il s’agit pourtant d’un retard comblé sur Linux ou Mac OS...

Le process

Le développement a subi un retard énorme lors d’un changement de tactique. Deux ans de travail sur une version de XP SP2 améliorée avec du code en .net ont été jetés quand il a été décidé de repartir sur le noyau de Windows Server 2003. Décision nécessaire (pour éviter des performances désastreuses) mais ruineuse en temps.

J’aime beaucoup l’expression “Windows process has gone thermonuclear” sur l’orgie d’interactions dans l’équipe et la lourdeur du management. Pour citer Philipsu :

Windows process has gone thermonuclear. Imagine each little email you send asking someone else to fill out a spreadsheet, comment on a report, sign off on a decision -- is a little neutron shooting about in space. Your innocent-seeming little neutron now causes your heretofore mostly-harmless neighbors to release neutrons of their own. Now imagine there are 9000 of you, all jammed into a tight little space called Redmond. It’s Windows Gone Thermonuclear, a phenomenon by which process engenders further process, eventually becoming a self-sustaining buzz of fervent destructive activity.


(Je ne suis sûrement pas le seul à avoir vu ce genre de phénomène ailleurs, à plus petite échelle...)

Philipsu a également d’autres remarques assassines sur la culture des dates qui dérapent, notamment par peur d’annoncer une mauvaise nouvelle. En gros, de la petite politique interne.[6]

La compatibilité à tout prix

Un commentaire particulier jette une lumière sur ce qu’est le code de Windows. D’abord du code pénible (boring) : initialisations, essais successifs, transferts de messages d’erreur en cascade. [7]
Puis une orgie d’APIs diverses (Win32, WinMM, GDI, ATL, OCX, MFC, COM, DCOM, ODBC, ActiveX, DirectX, etc., etc.), à supporter toutes au bug près. (On remarquera qu’on ne cherche pas à corriger ces bugs en demandant aux développeurs d’adapter leurs logiciels : la porte ouverte à toutes les dérives. À l’opposé, la philosophie du côté Linux est plutôt de corriger et de laisser les développeurs d’applications adapter leurs programmes ; après tout on parle de bug.).

J’adore ce passage du même commentateur :

It is already a nightmare to decide which API to use, but to support them all in a bug-by-bug compatible way is programmer’s hell. It is like travelling with a hospital ship full of corpses that are not completely dead and need to be kept alive by a team of doctors, high doses of painkillers and cardiopulmonary and dialysis machinery, just in case someone needs them because he speaks this ancient language noone else but these living dead understands.

.Net n’a pas encore remplacé toutes ces APIs, mais rajoute une nouvelle couche et ses propres problèmes (temporaires) d’immaturité et de performance.

La compatibilité à tout prix a un coût. Elle remonte à Windows 3.0, en 1990. Le DOS est encore visible et pose quelques problèmes ponctuels.
Cela avait sa logique, les utilisateurs détestant changer leurs applications, et pouvant aller « voir ailleurs », ou ne pas migrer, s’il y a incompatibilité.

Mais j’ai du mal à croire que Microsoft craigne à perdre tant de clients si des programmes datant du XXè siècle ne fonctionnent plus. D’ailleurs, les logiciels touchant les couches les plus « mouvantes » du système (jeux, pilotes...) ne supportent pas déjà forcément les changements de version de Windows ou de Service Pack.

Si vraiment il le faut, on se demande pourquoi la solution adoptée plusieurs fois par Apple lors de ses migrations (notamment Classic, une émulation de l’ancien système complet au-dessus du nouveau, proprement réécrit de zéro) ne pourrait pas être adoptée par Microsoft. Même Linux y arrive partiellement, avec Wine pour faire tourner certains logiciels Windows. Le danger d’une version d’Apple pouvant un jour faire tourner les logiciels Windows « dans une boîte » sur le même principe est réel. (Note de décembre 2007 : En pratique, avec VMWare Fusion ou Parallels, c’est déjà fait.)
L’époque est à la virtualisation, pourquoi Microsoft n’en profite-t-il pas ?

Pas de punition

Seul Microsoft peut se permettre des années de retard sur un produit majeur.
XP de toute manière se vend avec chaque nouvelle machine ; Linux sur le bureau n’a pas encore assez de puissance marketing pour s’imposer et encourager les éditeurs et les fabricants, malgré les efforts d’IBM ou Novell ; aucun grand compte ne prendra le risque de se lier à Apple pour le logiciel et le matériel. XP suffit largement aux besoins actuels de bureautique - après tout il existe encore beaucoup de monde sous Windows 2000.

Microsoft n’a donc pas d’incitation réelle à respecter son planning, il n’y a pas de punition en cas de dérapage. D’où la culture du retard de l’entreprise.
(Cela pourrait coûter cher cependant : sur le marché des navigateurs, le quasi-arrêt des mises à jour après Internet Explorer 6 a permis à la concurrence, annihilée en 2000, de reprendre 10 à 20% du marché. IE 7 a été lancé en catastrophe et vise d’abord à reprendre le retard perdu en fonctionnalités, face à Firefox principalement.)

Apple

En face, Apple possède bien moins de revenus, de développeurs et de puissance de frappe marketing. Dans un sens, Apple est forcé de prendre des décisions difficiles, et ne peut pas se donner le luxe d’une compatibilité absolue avec l’existant. L’« écosystème » autour de l’éditeur s’est adapté et a tendance à migrer assez vite des anciennes aux nouvelles versions.

Les transitions d’Apple sont cependant connues pour être réussies (du 68000 au PowerPC, de Mac OS 9 au X via Classic, du PowerPC aux puces Intel via Rosetta...) (Note de décembre 2007 : Classic n’en a pas moins disparu de Léopard...)

Vista

Pour un avis sur les versions actuelles de Vista, voir l’article de Paul Thurrott.

Au risque de décevoir linuxiens et sectateurs d’Apple, Vista ne sera pas une catastrophe qui coûtera son trône à Microsoft, cette version sortira en 2007. D’après C’t (numéro 2006/12), s’il n’y a finalement aucune nouveauté majeure (comme déjà dit, elles sortent séparément), les améliorations sont innombrables. Le risque pour Microsoft est cependant que personne ne voit l’intérêt de migrer. Je ne me fais pas de soucis pour eux, Vista s’imposera petit à petit lors de l’achat de nouvelles machines. Les premiers mois promettent cependant une belle série de patchs et mises à jour, il est donc urgent d’attendre. Comme écrit Thurrott, on n’est plus à six mois près.

(Note de décembre 2007 : Effectivement, Vista se vend mal, et nombre d’utilisateurs préfèrent en rester à XP. Ce n’est qu’une question de temps cependant.)

Également à la décharge de Microsoft : la taille du projet est sans commune mesure avec ce qui a déjà été fait, et ce n’est pas un mince travail (même si on estime que l’éditeur s’est lui-même créé ce problème).

La vraie question porte sur l’avenir. Si Vista a été accouché dans une telle douleur, quid de son successeur ? Ray Ozzie, successeur de Bill Gates, imposera-t-il enfin la grande cure d’amaigrissement dont Windows a besoin ?

Ajout suite à un billet de janvier 2007 : L’exemple du menu d’arrêt est caricatural.

Ajout de 2010 : Vista reste dans les esprits comme un flop, et son successeur Windows 7, en fait Vista un peu amélioré, est nettement mieux accepté. Personnellement, pour mon usage quotidien, j’ai du mal à voir les améliorations...

Notes

[1] On entend par cette expression le fait que des imperfections dans le code encouragent d’autres imperfections. Version allégée de la « tolérance zéro » en matière de propreté de programmation. Voir The Pragmatic Programmer, ou attendre que j’ai fini mes billets résumant cette bible du développement.

[2] Par contre, les machines ont continué à progresser, et XP est maintenant presque un OS léger et agréable sur une bécane récente. Raison de plus pour ne pas s’exciter sur Vista.

[3] Deux échecs relatifs sur le plan commercial, mais la faute n’en incombe pas au développement que je sache.

[4] L’exemple inverse étant Debian, dont chaque version sort « quand elle est prête », au risque de se retrouver souvent obsolète dès sa sortie.

[5] Pour ma part, je trouve Windows en retard par rapport a un KDE configurable jusqu’à l’obscène, ou d’un Apple moins clinquant et nettement plus sobre.

[6] Je parierais que c’est également la cause du retard d’un autre énorme projet à la limite du faisable, l’A380.

[7] Mais pourquoi est-ce que ça me rappelle le pire du code d’Oracle Applications ? J’ai peur que cela soit une constante dans les grandes boîtes bureaucratiques où le travail est découpé en micro-unités à outrance.