1 points par GN⁺ 2024-03-26 | 1 commentaires | Partager sur WhatsApp
  • Fin 1994, alors que Microsoft portait le code de l’interface de Windows 95 vers Windows NT, les différences entre NT et Windows 95 ont rendu nécessaire une UI distincte pour le formatage des disques
  • Après avoir listé sur papier les options de formatage — système de fichiers, libellé, taille de cluster, compression, chiffrement — une liste de choix verticale a été construite avec VC++ 2.0 Resource Editor
  • Cette boîte de dialogue temporaire, prévue pour être utilisée en attendant une meilleure UI, existe encore sous sa forme d’origine près de 30 ans plus tard
  • Dans le même processus, une décision arbitraire sur la tolérance de cluster slack a conduit à la limite de 32 Go pour la taille de formatage des volumes FAT
  • Même une implémentation intégrée temporairement peut devenir un comportement et une contrainte de produit à long terme ; il faut donc être prudent lorsqu’on introduit une solution « temporary »

La boîte de dialogue de formatage de Windows NT créée un jeudi matin

  • Fin 1994, chez Microsoft, une grande partie du code de l’interface utilisateur de Windows 95 était en cours de portage vers Windows NT
  • La fonction Format était un domaine où les différences entre NT et Windows 95 étaient importantes, ce qui nécessitait une UI personnalisée distincte
  • Les éléments à choisir lors du formatage d’un disque ont d’abord été notés sur papier
    • Système de fichiers
    • Libellé
    • Taille de cluster
    • Compression
    • Chiffrement
  • Ensuite, avec VC++ 2.0 et le Resource Editor, les choix ont été disposés sous forme de pile verticale, dans un ordre aussi proche que possible de celui souhaité
  • Cette UI n’était pas une conception finalisée, mais une implémentation temporaire destinée à servir jusqu’à l’arrivée d’une meilleure UI

Les effets à long terme d’une implémentation temporaire

  • Environ 30 ans plus tard, cette boîte de dialogue existe toujours sous la forme créée ce jeudi matin-là
  • La limitation à 32 Go de la taille de formatage des volumes FAT provient elle aussi d’une décision arbitraire prise à ce moment-là
    • À l’époque, il fallait déterminer jusqu’à quel niveau le cluster slack serait autorisé
    • Ce jugement a conduit à la limite de taille de formatage des volumes FAT
  • Un check-in « temporary » peut, contrairement à l’intention initiale, se figer en comportement et en contrainte de long terme pour le produit

1 commentaires

 
GN⁺ 2024-03-26
Avis sur Hacker News
  • On a pu vérifier dans le code source de Windows NT4 que, le 13 février 1995, il avait écrit pour la première fois une partie du code de la boîte de dialogue de formatage ; l’affirmation « fin 1994-début 1995 » est donc globalement correcte.
    Cela dit, NT4 ne prenait pas en charge FAT32, et les volumes FAT autorisaient aussi des clusters de 64 K, ce qui permettait d’aller jusqu’à 4 Go, plus que beaucoup de systèmes de l’époque. Le formatage FAT de NT4 ne proposait ni vérification ni option sur les clusters ; la taille des clusters était déterminée par la taille du volume.
    En outre, la limite de 32 Go pour les volumes FAT32 ne se trouvait pas dans la boîte de dialogue, mais du côté de la fonction interne de formatage. Sous Windows 2000, on peut tenter de formater en FAT32 un disque de plus de 32 Go, mais l’opération échoue à la fin à cause d’une limite codée en dur. Même chose pour format.com en ligne de commande, qui utilise la même fonction.
    Je ne sais pas pourquoi il exagère toujours son degré d’implication. Pour le code des dossiers Zip que Microsoft avait licencié auprès d’Info-Zip, certaines personnes ont aussi fini par croire qu’il l’avait écrit, au motif qu’il y avait touché pendant l’intégration. On dirait qu’il essaie maintenant de devenir influenceur, et l’exagération semble être ce que font ces gens-là.

    • Les souvenirs sont peu fiables, mais l’histoire selon laquelle la limite FAT32 était imposée par la boîte de dialogue de formatage est probablement l’une des plus grosses erreurs dans les anecdotes de Dave.
      Je ne sais pas si FAT32 était en cours de développement fin 1994, mais il n’était inclus ni dans Windows NT 4 ni dans les premières versions de Windows 95. Même quand il est arrivé dans Windows 95 OSR2, la commande format acceptait sans problème des partitions jusqu’à 128 Gio, même si Windows 95 n’est certes pas NT.
      La vraie cause semble être la fonction interne de formatage de Windows 2000. L’interface graphique, la commande format et diskpart sont tous incapables de créer un système de fichiers de plus de 32 Gio. On ne sait pas pourquoi, alors qu’il existait déjà à l’époque des disques de cette taille. Avec quelque chose comme mkdosfs sous Linux, le pilote VFAT de Windows 2000+ accepte même des volumes de 2 Tio, et il est possible d’installer Windows 2000 sur d’aussi gros volumes.
    • À l’époque de Windows Vista, je me suis occupé pendant un moment des dossiers Zip, et j’étais convaincu que ce code n’avait pas été écrit en interne chez Microsoft, mais qu’il avait été acheté.
      Franchement, il donnait l’impression d’être passé par un outil d’obfuscation, et je pensais que l’auteur original l’avait volontairement fait ainsi pour rendre les modifications ou améliorations difficiles pour Microsoft. Je fais encore des cauchemars avec ce code.
    • Le fichier "vzip150.zip" affiché avec plummer@visualzip.com ne contient rien lié à info-zip : https://www.sac.sk/files.php?d=7&l=V
      Alors d’où vient la Corvette : https://www.tomshardware.com/software/windows/dev-shows-off-...
    • Source de référence : https://github.com/lianthony/NT4.0/blob/b4a8d373d8a082db6758...
    • Il semble mal se souvenir de la partie formatage. L’UI contient bien du code lié à une taille de cluster arbitraire pour NTFS : https://github.com/lianthony/NT4.0/blob/b4a8d373d8a082db6758...
      Ce code semble être resté dans certaines versions de XP : https://github.com/tongzx/nt5src/blob/daad8a087a4e75422ec96b...
      Pour la prise en charge ZIP, il est difficile de trouver le code source des dossiers Zip eux-mêmes. En revanche, on trouve un extrait de code d’une autre société, Schlumberger Technology Corp. : https://github.com/tongzx/nt5src/blob/daad8a087a4e75422ec96b... Si l’on en croit les commentaires, ce code a été ajouté en 1996.
  • Dave Plummer est vraiment quelqu’un de remarquable. J’aime la façon très posée dont il raconte l’époque où il contribuait à l’un des noyaux les plus utilisés de l’histoire.
    Il aurait créé plusieurs logiciels, dont le Gestionnaire des tâches pour Windows, le portage de Space Cadet Pinball sur Windows NT, la prise en charge des fichiers Zip dans Windows, HyperCache[4] pour Amiga, et il détiendrait aussi six brevets dans le domaine du génie logiciel.
    https://en.wikipedia.org/wiki/Dave_Plummer

  • Illustre bien un piège courant. Quand on « résout » un problème par une solution temporaire, la priorité d’une meilleure solution passe sous celle de tous les problèmes pas encore résolus.
    Et il y a toujours assez de problèmes non résolus pour que plus personne ne revienne jamais regarder la solution temporaire

    • J’ai vu ça dans ma carrière. La leçon, c’est de ne pas « livrer » tant qu’on n’en est pas soi-même fier. Bien sûr, ce n’est pas toujours aussi simple qu’à dire
    • « Rien n’est plus permanent qu’une solution temporaire qui fonctionne »
      Je ne sais plus où j’ai entendu ça, mais je m’en sers souvent au travail pour convaincre de ne pas publier une solution temporaire et de faire les choses correctement dès le départ
    • Je ne suis pas d’accord. Si on a développé une fonctionnalité qui a tenu 30 ans sans avoir besoin d’être corrigée, j’y vois une victoire totale de l’ingénierie efficace
  • Dans l’enchaînement « j’ai noté sur papier toutes les options disponibles liées au formatage de disque — système de fichiers, libellé, taille de cluster, compression, chiffrement, etc. », la conclusion « c’était une UI temporaire censée tenir jusqu’à l’arrivée d’une UI élégante » ne semble pas vraiment suivre.
    Si toutes les options nécessaires sont exposées dans une interface simple, que faudrait-il mettre dans une interface plus « élégante » ?

  • Cette boîte de dialogue existe non seulement encore, mais elle a aussi influencé des outils comme HP USB Disk Storage Format Tool. C’est l’outil que j’utilisais toujours pour contourner la limite FAT32 de 32 Go : https://www.majorgeeks.com/files/details/hp_usb_disk_storage...

    • Outil utile. Je m’en suis servi pour créer une clé USB FAT32 de 128 Go afin de partager des collections de jeux entre PC rétro
  • Elle est parfaite telle quelle, j’espère qu’ils ne la remplaceront pas par une « UI élégante »

    • Elle a déjà été « remplacée » sous Settings -> Storage -> Disks & volumes. Si l’ancienne boîte de dialogue apparaît quand on la lance depuis File Explorer, c’est parce que File Explorer reste encore largement une appli de style legacy.
      En tant que remplacement de la boîte de dialogue de formatage, la nouvelle UI me plaît assez. En revanche, pour ce qui remplace les fonctions de Disk Manager, c’est un peu insuffisant, faute de représentation graphique de la disposition des disques.
      Vue de base : https://i.imgur.com/56yZ8gZ.png
      Section de vue avancée : https://i.imgur.com/fKb3R8c.png
      Formatage d’une partition existante : https://i.imgur.com/DmbX3FQ.png
      Ce n’est pas parfait, mais ça conserve globalement la même disposition tout en l’adaptant au thème de l’OS, et ça ajoute aussi quelques options qui, dans l’ancien Disk Manager, se trouvaient dans un assistant sur plusieurs pages. Il y a aussi de petites améliorations, comme « format » qui est plus direct que « start », ou « cancel » qui convient mieux que « close ». Bien sûr, certains considéreront sans doute que le fait que ce soit 33 % plus large annonce la fin du monde.
      En revanche, demander encore la taille d’une nouvelle partition en Mo, c’est discutable. Ils ajoutent bien des séparateurs de milliers localisés, mais comme les nombres vont continuer à grossir, c’est un peu étrange de devoir se préoccuper de millions de Mo
    • Format a besoin d’une mise à jour. Préparation de la mise à jour…
    • Le changement de l’UI de défragmentation de disque est vraiment dommage. J’aimais voir les blocs se déplacer dans tous les sens. Ça vaut la peine de garder un disque dur métallique rotatif juste pour ça
  • Je ne pense pas qu’il y ait d’un côté des solutions temporaires et de l’autre des solutions permanentes ; il y a plutôt de mauvaises solutions et de bonnes solutions. Une bonne solution reste parce qu’elle est suffisamment bonne, même si elle a été implémentée rapidement.
    Une mauvaise solution peut aussi rester un temps si c’est la seule option, ou la seule réaliste, et tout ce qui vient ensuite doit alors assurer la compatibilité descendante avec elle

  • J’ai travaillé dans l’une des plus grandes et des plus anciennes banques d’Europe, et l’environnement de production était souvent rempli de ces solutions temporaires.
    C’étaient généralement des correctifs eux-mêmes temporaires, bricolés rapidement pour réparer de gros problèmes causés par des correctifs temporaires précédents

  • Il faut se méfier des solutions temporaires « suffisamment bonnes ». Le composant de journalisation central de l’entreprise a été écrit par un stagiaire et contient POC dans son nom.
    Le format des données ressemblait aussi à quelque chose qu’un stagiaire aurait conçu, mais quand tout le monde s’en est vraiment rendu compte, on avait déjà écrit tellement de données que le budget et l’effort nécessaires pour corriger le problème dépassaient le problème lui-même

    • Si personne ne l’a remarqué pendant longtemps, c’était peut-être en réalité une solution suffisamment bonne, et ça ne valait peut-être pas la peine d’en faire un débat mineur.
      On ne peut pas toujours tout faire parfaitement ; je me rassure en me disant qu’il faut donner la priorité à ce qui compte le plus et laisser passer, dans une certaine mesure, ce qui compte moins
  • Comme le dit le vieil adage, rien n’est aussi permanent qu’une solution temporaire

    • Il me semble que cette phrase parlait des impôts