1 pontos por GN⁺ 2024-03-26 | 1 comentários | Compartilhar no WhatsApp
  • No fim de 1994, enquanto a Microsoft portava o código de interface do Windows95 para o Windows NT, foi necessário um UI separado para formatação de disco por causa das diferenças entre NT e Windows95
  • As opções de formatação, como sistema de arquivos, rótulo, tamanho do cluster, compressão e criptografia, foram primeiro organizadas em papel e depois transformadas em uma lista de seleção vertical no VC++ 2.0 Resource Editor
  • O dialog temporário que seria usado até chegar uma UI melhor permaneceu praticamente no mesmo formato cerca de 30 anos depois
  • Na mesma etapa de trabalho, uma decisão arbitrária sobre o limite aceitável de cluster slack acabou levando ao limite de 32GB para formatação de volumes FAT
  • Uma implementação registrada como temporária também pode acabar definindo comportamentos e limitações de longo prazo de um produto, então é preciso cautela ao introduzir soluções “temporárias”

O Windows NT Format Dialog criado numa manhã de quinta-feira

  • No fim de 1994, a Microsoft estava portando uma parte considerável do código da interface do Windows95 para o Windows NT
  • A funcionalidade de formatação era uma área que exigia uma UI personalizada separada, porque as diferenças entre NT e Windows95 eram grandes
  • Os itens que poderiam ser escolhidos na formatação de disco foram primeiro organizados em papel
    • sistema de arquivos
    • rótulo
    • tamanho do cluster
    • compressão
    • criptografia
  • Depois, usando VC++ 2.0 e o Resource Editor, os itens de seleção foram dispostos em uma pilha vertical na ordem mais próxima possível da necessária
  • Essa UI não era um projeto finalizado, mas sim uma implementação temporária para uso até que chegasse uma UI melhor

Os efeitos de longo prazo deixados por uma implementação temporária

  • Cerca de 30 anos depois, essa caixa de diálogo ainda permanece na forma em que foi criada naquela manhã de quinta-feira
  • O limite de 32GB para formatação de volumes FAT também veio de uma decisão arbitrária tomada na mesma época
    • Naquele momento, era preciso decidir até que ponto permitir cluster slack
    • Essa decisão acabou levando ao limite de tamanho para formatação de volumes FAT
  • Um check-in “temporary” pode, ao contrário da intenção original, acabar se consolidando como comportamento e limitação de longo prazo do produto

1 comentários

 
GN⁺ 2024-03-26
Opiniões no Hacker News
  • No código-fonte do Windows NT4, foi possível confirmar que, em 13 de fevereiro de 1995, ele escreveu pela primeira vez parte do código da caixa de diálogo de formatação, então a afirmação de fim de 1994 a início de 1995 está, em geral, correta
    Porém, o NT4 não dava suporte a FAT32 e também permitia clusters de 64K em volumes FAT, possibilitando até 4 GB, mais do que muitos sistemas da época. A formatação FAT do NT4 não tinha verificação nem opções de cluster; o tamanho do cluster era determinado pelo tamanho do volume
    Além disso, o limite de 32 GB para volumes FAT32 não ficava na caixa de diálogo, mas sim na função interna de formatação. No Windows 2000, era possível tentar formatar uma unidade maior que 32 GB como FAT32, mas a operação falhava no fim por causa de um limite hardcoded. O format.com de linha de comando, que usa a mesma função, se comporta da mesma forma
    Não sei por que ele sempre exagera o próprio envolvimento. No caso do código de pastas Zip que a Microsoft licenciou do Info-Zip, também surgiu gente acreditando que ele o escreveu só porque mexeu nele durante a integração. Agora parece que ele quer virar influenciador, e exageros parecem ser o tipo de coisa que esse pessoal faz

    • Memória é algo pouco confiável, mas a história de que a caixa de diálogo de formatação impunha o limite do FAT32 chega perto de ser o maior erro entre as histórias antigas do Dave
      Não sei se o FAT32 já estava em desenvolvimento no fim de 1994, mas ele não estava incluído nem no Windows NT 4 nem no Windows 95 inicial. Mesmo quando entrou no Windows 95 OSR2, o comando format aceitava sem problemas partições de até 128 GiB, embora o Windows 95 não fosse NT
      A causa real parece ser a função interna de formatação do Windows 2000. A GUI, o comando format e o diskpart não conseguem criar sistemas de arquivos maiores que 32 GiB. Já existiam unidades maiores que isso na época, mas não dá para saber por que fizeram assim. Usando algo como o mkdosfs do Linux, o driver VFAT do Windows 2000+ aceita até volumes de 2 TiB, e é possível até instalar o Windows 2000 em volumes tão grandes
    • Durante algum tempo, na época do Windows Vista, fiquei responsável pelas pastas Zip, e eu tinha certeza de que aquele código não tinha sido escrito internamente na Microsoft, mas sim comprado
      Sinceramente, parecia ter passado por uma ferramenta de ofuscação, e eu achava que o autor original tinha feito aquilo de propósito para dificultar alterações ou melhorias pela Microsoft. Ainda tenho pesadelos com aquele código
    • O arquivo "vzip150.zip", mostrado como plummer@visualzip.com, não tem conteúdo relacionado ao info-zip: https://www.sac.sk/files.php?d=7&l=V
      Então de onde veio o Corvette: https://www.tomshardware.com/software/windows/dev-shows-off-...
    • Fonte para referência: https://github.com/lianthony/NT4.0/blob/b4a8d373d8a082db6758...
    • Parece que a parte da formatação foi mal lembrada. A UI tem, sim, código relacionado a tamanho arbitrário de cluster para NTFS: https://github.com/lianthony/NT4.0/blob/b4a8d373d8a082db6758...
      Acho que esse código também permaneceu em algumas versões do XP: https://github.com/tongzx/nt5src/blob/daad8a087a4e75422ec96b...
      Quanto ao suporte a ZIP, é difícil encontrar o código-fonte das próprias pastas Zip. Em vez disso, há um trecho de código de outra empresa, a Schlumberger Technology Corp.: https://github.com/tongzx/nt5src/blob/daad8a087a4e75422ec96b... Se os comentários forem confiáveis, é código adicionado em 1996
  • Dave Plummer é realmente uma pessoa incrível. Gosto de como ele escreve de forma tão despretensiosa sobre a criação de um dos kernels mais usados da história
    Dizem que ele criou vários softwares, como o Gerenciador de Tarefas para Windows, o porte do Space Cadet Pinball para Windows NT, suporte a arquivos Zip para Windows e o HyperCache[4] para Amiga, além de ter recebido 6 patentes na área de engenharia de software
    https://en.wikipedia.org/wiki/Dave_Plummer

  • Mostra bem uma armadilha comum. Quando você “resolve” um problema com uma solução temporária, a prioridade de uma solução melhor fica abaixo de todos os problemas que ainda não foram resolvidos
    Esses problemas não resolvidos são sempre numerosos o suficiente para que ninguém volte a olhar para a solução temporária

    • Vi isso acontecer na carreira. A lição é não “lançar” algo antes de estar em um ponto de que você mesmo se orgulhe. Claro, às vezes isso é mais fácil falar do que fazer
    • “Não há nada mais permanente do que uma solução temporária que funciona”
      Não sei onde ouvi isso, mas uso com frequência para convencer a empresa a não colocar uma solução temporária no ar e fazer direito desde o começo
    • Não concordo. Se você desenvolveu uma funcionalidade que conseguiu durar 30 anos sem precisar ser corrigida, vejo isso como uma vitória completa da engenharia eficiente
  • Na sequência em que diz que “anotei no papel todas as opções que era possível escolher em relação à formatação de disco, como sistema de arquivos, rótulo, tamanho de cluster, compactação, criptografia etc.”, a conclusão de que “era uma UI temporária para aguentar até chegar uma UI elegante” não parece se encaixar muito bem
    Se ela mostra todas as opções necessárias em uma interface simples, o que entraria em uma interface mais “elegante”?

  • Essa caixa de diálogo não só ainda existe como também influenciou ferramentas como o HP USB Disk Storage Format Tool. Era a ferramenta que eu sempre usava para contornar o limite de 32 GB do FAT32: https://www.majorgeeks.com/files/details/hp_usb_disk_storage...

    • É uma ferramenta útil. Usei para criar um pendrive FAT32 de 128 GB para compartilhar uma coleção de jogos entre PCs retrô
  • Do jeito que está agora é perfeito, então espero que não troquem por uma “UI elegante”

    • Ela já foi “substituída” em Settings -> Storage -> Disks & volumes. Quando você executa pelo File Explorer, a caixa de diálogo antiga aparece porque o File Explorer ainda é em grande parte um app de estilo legado
      Como substituta da caixa de diálogo de formatação, eu gosto bastante da nova UI. Mas a parte que substitui os recursos do Disk Manager fica um pouco devendo, porque não há representação gráfica do layout do disco
      Visualização básica: https://i.imgur.com/56yZ8gZ.png
      Seção de visualização avançada: https://i.imgur.com/fKb3R8c.png
      Formatação de partição existente: https://i.imgur.com/DmbX3FQ.png
      Não é perfeita, mas em geral mantém o mesmo layout, adapta-se ao tema do SO e adicionou algumas opções que antes ficavam em um assistente de várias páginas no antigo Disk Manager. Há também pequenas melhorias, como “format” ser mais direto do que “start”, e “cancel” fazer mais sentido do que “close”. Claro, alguns vão achar que o fato de estar 33% mais larga é o fim do mundo
      Mas ainda é meio estranho fazer você inserir o tamanho da nova partição em MB. Eles até colocam separadores numéricos localizados, mas, como os números tendem a ficar cada vez maiores, é meio esquisito fazer a pessoa se preocupar com milhões de MB
    • O Format precisa de uma atualização. Preparando a atualização…
    • Foi realmente uma pena terem mudado a UI do desfragmentador de disco. Eu gostava de ver os blocos se movendo de um lado para o outro. Só por isso já valeria a pena guardar um HD mecânico com pratos giratórios
  • Acho que não existem exatamente soluções temporárias e soluções permanentes; existem soluções ruins e boas soluções. Uma boa solução, mesmo que tenha sido implementada rapidamente, continua existindo porque é boa o suficiente
    Uma solução ruim também pode permanecer por um tempo se for a única opção, ou a opção realista, e tudo que vier depois precisa manter compatibilidade retroativa com ela

  • Trabalhei em um dos maiores e mais antigos bancos da Europa, e muitas vezes o ambiente de produção estava cheio desse tipo de solução temporária
    Normalmente eram coisas feitas provisoriamente para corrigir rápido um problema grande causado por uma correção temporária anterior

  • É preciso tomar cuidado com soluções temporárias “boas o suficiente”. O componente central de logging da empresa foi escrito por um estagiário e tem POC no nome
    O formato dos dados também era do tipo que um estagiário criaria, mas, quando todo mundo percebeu de verdade, já tínhamos gravado dados demais, e o orçamento e o esforço para corrigir tinham ficado maiores do que o próprio problema

    • Se ninguém percebeu por muito tempo, talvez na prática ela fosse uma solução boa o suficiente, e talvez não valesse a pena entrar em discussões pequenas
      Eu costumo me consolar dizendo que nem sempre dá para fazer tudo com perfeição; é preciso priorizar o que é mais importante e deixar passar um pouco o que é menos importante
  • Como diz o velho ditado, nada é tão permanente quanto uma solução temporária

    • Acho que esse ditado era sobre impostos