A funcionalidade “Format Dialog” do Windows NT
(twitter.com/davepl1968)- 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
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
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
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
Então de onde veio o Corvette: https://www.tomshardware.com/software/windows/dev-shows-off-...
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
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
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...
Do jeito que está agora é perfeito, então espero que não troquem por uma “UI elegante”
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
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
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