1 puntos por GN⁺ 2024-03-26 | 1 comentarios | Compartir por WhatsApp
  • A fines de 1994, mientras Microsoft trasladaba código de la UI de Windows95 a Windows NT, las diferencias entre NT y Windows95 hicieron necesario un UI independiente para formatear discos
  • Tras organizar en papel opciones de formato como sistema de archivos, etiqueta, tamaño de clúster, compresión y cifrado, se armó una lista de selección vertical con VC++ 2.0 Resource Editor
  • El cuadro de diálogo temporal que iba a usarse hasta que llegara un UI mejor siguió prácticamente con la misma forma unos 30 años después
  • En ese mismo proceso, una decisión arbitraria sobre el rango permitido de cluster slack terminó derivando en el límite de 32 GB para formatear volúmenes FAT
  • Incluso una implementación registrada de forma temporal puede convertirse en un comportamiento y una limitación duraderos del producto, así que hay que tener cuidado al introducir soluciones “temporales”

El Windows NT Format Dialog hecho un jueves por la mañana

  • A fines de 1994, en Microsoft estaban porteando una parte importante del código de la interfaz de usuario de Windows95 a Windows NT
  • La función de formato era un área que requería una UI personalizada aparte, porque las diferencias entre NT y Windows95 eran grandes
  • Primero se organizaron en papel los elementos que había que elegir en el formateo de disco
    • sistema de archivos
    • etiqueta
    • tamaño de clúster
    • compresión
    • cifrado
  • Después, con VC++ 2.0 y Resource Editor, se acomodaron las opciones en una pila vertical, en un orden cercano al necesario
  • Este UI no era un diseño final, sino una implementación temporal para usar hasta que llegara una interfaz mejor

Efectos a largo plazo de una implementación temporal

  • Cerca de 30 años después, ese cuadro de diálogo sigue existiendo con la forma en que fue hecho aquel jueves por la mañana
  • El límite de 32 GB para formatear volúmenes FAT también provino de una decisión arbitraria tomada en ese mismo momento
    • En ese entonces había que decidir hasta qué punto permitir cluster slack
    • Esa decisión llevó al límite de tamaño para formatear volúmenes FAT
  • Un check-in “temporal” puede, contra la intención original, terminar fijándose como comportamiento y restricción a largo plazo del producto

1 comentarios

 
GN⁺ 2024-03-26
Comentarios en Hacker News
  • En el código fuente de Windows NT4 se puede confirmar que escribió por primera vez parte del código del diálogo de formato el 13 de febrero de 1995, así que decir finales de 1994 o principios de 1995 es, en general, correcto.
    Pero NT4 no era compatible con FAT32, y los volúmenes FAT también permitían clústeres de 64K, así que llegaban hasta 4 GB, más que muchos sistemas de la época. El formato FAT de NT4 no tenía verificación de clústeres ni opciones, y el tamaño del clúster se definía según el tamaño del volumen.
    Además, el límite de 32 GB para volúmenes FAT32 no estaba en el diálogo, sino en la función interna de formateo. En Windows 2000 sí podías intentar formatear una unidad de más de 32 GB como FAT32, pero al final del formateo fallaba por un límite hardcodeado. format.com, que usa la misma función, se comporta igual.
    No sé por qué siempre exagera su nivel de participación. Con el código de carpetas ZIP que Microsoft licenció de Info-Zip también pasó que hubo gente que creyó que él lo escribió solo porque lo tocó durante la integración. Ahora parece querer ser influencer, y exagerar es el tipo de cosa que hace esa gente.

    • La memoria es poco confiable, pero la historia de que el diálogo de formato imponía el límite de FAT32 está cerca de ser el mayor error en una de las viejas anécdotas de Dave.
      No sé si FAT32 estaba en desarrollo a finales de 1994, pero no se incluyó ni en Windows NT 4 ni en las primeras versiones de Windows 95. Incluso cuando llegó en Windows 95 OSR2, el comando format aceptaba sin problema particiones de hasta 128 GiB, aunque Windows 95 no era NT.
      La causa real parece ser la función interna de formateo de Windows 2000. La GUI, el comando format y diskpart no pueden crear sistemas de archivos de más de 32 GiB. No se sabe por qué, porque para entonces ya existían unidades de ese tamaño o mayores. Si usas algo como mkdosfs de Linux, el driver VFAT de Windows 2000+ sí acepta volúmenes de 2 TiB, e incluso se puede instalar Windows 2000 en volúmenes así de grandes.
    • Durante un tiempo, en la era de Windows Vista, me encargué de las carpetas ZIP, y estaba seguro de que ese código no se había escrito dentro de Microsoft, sino que era código comprado.
      Honestamente, parecía como si hubiera pasado por una herramienta de ofuscación, y pensé que el autor original lo había hecho así a propósito para dificultar que Microsoft lo cambiara o mejorara. Todavía tengo pesadillas con ese código.
    • En "vzip150.zip", marcado como plummer@visualzip.com, no hay nada relacionado con info-zip: https://www.sac.sk/files.php?d=7&l=V
      Entonces, ¿de dónde salió el Corvette?: https://www.tomshardware.com/software/windows/dev-shows-off-...
    • Fuente de referencia: https://github.com/lianthony/NT4.0/blob/b4a8d373d8a082db6758...
    • Parece que recuerda mal la parte del formateo. Sí hay código en la UI relacionado con tamaños arbitrarios de clúster para NTFS: https://github.com/lianthony/NT4.0/blob/b4a8d373d8a082db6758...
      Parece que ese código siguió presente incluso en algunas versiones de XP: https://github.com/tongzx/nt5src/blob/daad8a087a4e75422ec96b...
      El soporte ZIP es más difícil porque cuesta encontrar el código fuente de las carpetas ZIP como tal. En cambio, sí hay código extraído de otra empresa, Schlumberger Technology Corp.: https://github.com/tongzx/nt5src/blob/daad8a087a4e75422ec96b... si se confía en los comentarios, es código añadido en 1996.
  • Dave Plummer es realmente genial. Me gusta que escriba con tanta naturalidad sobre haber formado parte de la creación de uno de los kernels más usados de la historia.
    Se dice que creó varios programas, como el Administrador de tareas para Windows, el port de Space Cadet Pinball para Windows NT, el soporte para archivos ZIP en Windows y HyperCache para Amiga[4], y que además obtuvo 6 patentes en ingeniería de software.
    https://en.wikipedia.org/wiki/Dave_Plummer

  • Muestra muy bien una trampa común. Si “resuelves” un problema con una solución temporal, la prioridad de una solución mejor pasa a ser menor que la de todos los demás problemas que aún no están resueltos
    Siempre hay suficientes problemas sin resolver como para que nadie vuelva a revisar la solución temporal

    • He visto pasar esto en mi carrera. La lección es no “lanzar” algo hasta que quede en un estado del que te sientas orgulloso. Claro, no siempre es tan fácil como suena
    • “No hay nada más permanente que una solución temporal que funciona”
      No recuerdo dónde lo escuché, pero lo uso seguido cuando intento convencer a la empresa de no sacar soluciones temporales y hacer las cosas bien desde el principio
    • No estoy de acuerdo. Si desarrollaste una función que aguanta 30 años sin necesidad de arreglarla, eso me parece una victoria total de la ingeniería eficiente
  • Desde la idea de “anoté en papel todas las opciones posibles relacionadas con formatear el disco, como sistema de archivos, etiqueta, tamaño de clúster, compresión y cifrado” hasta la conclusión de “era una UI temporal para aguantar hasta que llegara una UI elegante” no parece haber una conexión muy clara
    Si ya muestra todas las opciones necesarias en una interfaz simple, ¿qué tendría que incluir una interfaz más “elegante”?

  • Ese cuadro de diálogo no solo sigue existiendo, sino que también influyó en herramientas como HP USB Disk Storage Format Tool. Siempre fue la herramienta que usé para saltarme el límite de 32GB de FAT32: https://www.majorgeeks.com/files/details/hp_usb_disk_storage...

    • Es una herramienta útil. La usé para crear una memoria USB FAT32 de 128GB cuando quería compartir una colección de juegos entre PCs retro
  • Tal como está ahora es perfecto, así que ojalá no lo cambien por una “UI elegante”

    • De hecho, ya fue “reemplazado” en Settings -> Storage -> Disks & volumes. Si lo ejecutas desde File Explorer aparece el cuadro de diálogo viejo porque File Explorer sigue siendo en gran parte una app de estilo heredado
      Como reemplazo del cuadro de diálogo de formato, la nueva UI me gusta bastante. Donde se queda un poco corta es en la parte que reemplaza funciones de Disk Manager, porque no tiene una representación gráfica del diseño del disco
      Vista predeterminada: https://i.imgur.com/56yZ8gZ.png
      Sección de vista avanzada: https://i.imgur.com/fKb3R8c.png
      Formato de partición existente: https://i.imgur.com/DmbX3FQ.png
      No es perfecta, pero en general conserva el mismo diseño, se adaptó al tema del sistema operativo y además agregó algunas opciones que en el viejo Disk Manager estaban metidas en un asistente de varias páginas. También tiene pequeñas mejoras, como que “format” es más directo que “start” y que “cancel” encaja mejor que “close”. Claro, habrá quien considere que aumentar el ancho en un 33% es el fin del mundo
      Aun así, sigue siendo raro que el tamaño de una partición nueva se ingrese en MB. Sí, pone separadores numéricos localizados, pero igual se siente extraño obligarte a pensar en cientos de miles o millones de MB cuando los números van a seguir creciendo
    • Format necesita una actualización. Estamos preparando una actualización…
    • Sí me da pena que hayan cambiado la UI del desfragmentador de disco. Me gustaba ver cómo los bloques se movían de un lado a otro. Vale la pena guardar un disco duro mecánico giratorio solo para eso
  • Más que existir soluciones temporales y permanentes por separado, yo diría que existen malas soluciones y buenas soluciones. Una buena solución, aunque se haya implementado rápido, se queda porque ya es suficientemente buena
    Una mala solución también puede quedarse si por un tiempo fue la única opción o la única realista, y entonces todo lo que venga después tiene que mantener compatibilidad hacia atrás con ella

  • Trabajé en uno de los bancos más grandes y antiguos de Europa, y era muy común que el entorno de producción estuviera lleno de este tipo de soluciones temporales
    Por lo general eran arreglos temporales creados a toda prisa para corregir problemas grandes causados por arreglos temporales anteriores

  • Hay que tener cuidado con las soluciones temporales “suficientemente buenas”. El componente principal de logging de una empresa fue escrito por un practicante y su nombre incluye POC
    El formato de datos también tenía toda la pinta de haber sido diseñado por un practicante, pero para cuando todos se dieron cuenta de verdad ya se había escrito tanta información que el presupuesto y el esfuerzo para corregirlo eran mayores que el problema en sí

    • Si durante mucho tiempo nadie se dio cuenta, entonces en la práctica quizá sí era una solución suficientemente buena y tal vez no valía la pena entrar en una discusión menor
      No siempre se puede hacer todo perfectamente, así que prefiero tranquilizarme pensando que hay que priorizar lo más importante y dejar pasar en cierta medida lo menos importante
  • Como dice el viejo dicho, no hay nada más permanente que una solución temporal

    • Creo que originalmente era una frase sobre los impuestos