Windows ConfidentialGestion de piratage de compabilité

Le site Web de Raymond Chen

IL EXISTAIT UN PROGRAMME écrit pour Windows® 3.1 qui ouvrait le Panneau de configuration Imprimantes par l'accès à la fenêtre Panneau de configuration, puis au menu Fichier et par la recherche d'un élément appelé Imprimante. Dans Windows 95, le Panneau de configuration ne disposait pas de l'option Imprimante sous Fichier. Par conséquent, exécuté sur Windows 95, ce programme envoyait un message de commande incorrect au Panneau de configuration. Pour résoudre ce problème, Windows 95 a créé une fenêtre Panneau de configuration leurre à partir de laquelle le programme effectuait sa recherche. Lorsque le programme envoyait le message au leurre, le dossier Imprimantes s'ouvrait.

Certains soutiennent que Windows 3.1 aurait dû détecter que le programme évaluait de façon incorrecte le Panneau de configuration et afficher un avertissement. De cette manière, l'auteur du programme aurait vu l'avertissement et résolu le problème avant l'édition du produit. Mais détecter l'intention d'un segment de code requiert un niveau d'analyse digne de l'intelligence artificielle. Pour l'essentiel, Windows 3.1 aurait dû détecter que le programme exécutait un strcmp pour les Imprimantes, analyser le strcmp spécifique et décider s'il était erroné. Mais cela ne concerne que le cas des Imprimantes. Combien de contrôles de compatibilité le système doit-il effectuer ? Et que dire des faux positifs ?

Un autre argument consiste à dire que Windows 95 aurait dû répondre à cette hypothèse incorrecte en affichant un avertissement indiquant que le programme Intel commettait une erreur. Pour que le Panneau de configuration puisse identifier l'élément qui avait envoyé le message incorrect, l'identification aurait dû être effectuée dans le gestionnaire de fenêtres Le lien entre les deux composants, le Panneau de configuration et le gestionnaire de fenêtres est fragilisé. Et, encore une fois, cela ne résout qu'un seul problème. Souhaitez-vous que le lien entre le gestionnaire de fenêtres et tous les autres composants du système soit fragile ?

Fournir un message générique sans nommer l'application spécifique serait plus simple. Mais cette solution n'est pas satisfaisante non plus. Un message d'erreur approximatif ne vaut pas mieux que l'absence totale de message. Qui plus est, cette boîte de dialogue serait, selon toute vraisemblance, ignorée par l'utilisateur, surtout parce qu'elle ne recommanderait aucune procédure spécifique. Les utilisateurs considéreraient cette boîte de dialogue comme un désagrément. Ce point est très important. Il est essentiel que la cause indiquée dans les messages d'erreur puisse être résolue. L'avertissement n'est utile que si l'utilisateur sait agir en conséquence.

  

Le fait qu'une boîte de dialogue crée un point de réentrance en raison de la boucle de la boîte de dialogue constitue un autre problème. Il s'agit d'un problème technique. Une réentrance imprévue représente une source majeure de bogues dans la programmation d'IU. De plus, le Panneau de configuration peut être à l'état modal et l'affichage d'une boîte de dialogue entraîne l'effondrement de la structure modale.

Une boîte de dialogue crée également une nouvelle charge de localisation. Si une boîte de dialogue est écrite pour chaque piratage de compatibilité, cela signifie que des centaines sont disséminées dans l'ensemble du système, chacune devant être traduite dans les 33 langues pour lesquelles Windows fournit une traduction complète.

Enfin, tenez compte de la réaction des concurrents lorsque leur produit donne l'une de ces boîtes de dialogue. Ils disent des choses comme « Microsoft reproche à d'autres personnes les bogues de son propre système d'exploitation » et « Microsoft donne délibérément une mauvaise image de notre programme ». Et je n'exagère pas. Certaines sociétés se sont plaintes au Congrès que Microsoft visait et désactivait leur logiciel par malveillance. Après enquête, il s'est avéré que leurs programmes contenaient des bogues. Franchement, mieux vaut résoudre leur bogue à leur place plutôt que de devoir endurer une longue enquête du Congrès.

Par conséquent, les versions actuelles de Windows affichent seulement un avertissement lorsqu'un programme est incompatible avec Windows à un point tel que son exécution s'avère carrément impossible ou qu'elle est strictement limitée. Et même dans ce cas, Microsoft essaie de travailler en collaboration avec le fournisseur pour garantir qu'aucun client n'est livré à lui-même. Après tout, vous voulez exécuter des programmes sur les systèmes d'exploitation que vous achetez. Si un programme ne fonctionne pas, qu'importe à qui revient la faute, vous voulez simplement faire votre travail.

Le site Web de Raymond Chen, The Old New Thing, dresse un historique de Windows et traite de la programmation Win32. Il prépare actuellement un livre, également intitulé de manière fortuite The Old New Thing (Addison-Wesley, 2007).

© 2008 Microsoft Corporation et CMP Media, LLC. Tous droits réservés. Toute reproduction, totale ou partielle, est interdite sans autorisation préalable.