O Windows 95 uniu aplicativos MS-DOS e Windows e atualizou o conjunto de APIs de 16 para 32 bits, e a Microsoft queria que as pessoas não tivessem nenhum motivo para não atualizar. Um motivo quase sobreviveu: o SimCity para Windows 3.x, cujo autor Jon Ross havia deixado acidentalmente um bug que lia memória que ele acabara de liberar. No Windows 3.x funcionava bem porque a memória nunca ia a lugar nenhum; nas versões beta do Windows 95 o jogo quebrava. Com mais de 5 milhões de cópias vendidas, o SimCity tinha que funcionar sem falhas.

A Microsoft rastreou o bug e adicionou ao Windows 95 um código que procura o SimCity; se encontrar o jogo em execução, executa o alocador de memória em um modo especial que não libera a memória imediatamente. O SimCity não estava sozinho: o Administrador de Compatibilidade no Windows ADK mostra o banco de dados de correções por aplicativo. O Windows NT, ao detectar arquivos tipicamente instalados com o Final Fantasy VII, aplica uma correção literalmente chamada “Win95VersionLie” — simplesmente dizendo ao jogo que ele está no Windows 95 — enquanto o Dungeon Keeper recebe correções de caminho de arquivo vinculadas a arquivos como “Horny.tif”.

A obsessão era institucional. Raymond Chen documentou em 2005 que o gerente de desenvolvimento do Windows 95 dirigiu uma caminhonete até a loja local da Egghead Software e comprou uma cópia de cada programa de PC da loja; cada desenvolvedor ficou responsável por até dois programas para instalar, executar e documentar bugs, e os testadores podiam ficar com o que terminassem. Mike Perry, ex-diretor criativo da Maxis, observou mais tarde que Ross foi trabalhar na Microsoft depois de deixar a Maxis.

Camadas de compatibilidade: o sistema operacional reconhece um aplicativo específico e silenciosamente adapta seu próprio comportamento — liberações adiadas, mentiras sobre a versão — para que o binário antigo nunca saiba que algo mudou.

Uma atualização de sistema operacional vive ou morre pelo seu catálogo de aplicativos; os usuários não comprarão um sistema operacional que quebre os jogos e ferramentas que já possuem.

Corrigir todos os fornecedores terceiros era impossível, então as camadas de compatibilidade permitiram que a Microsoft reparasse a compatibilidade sem tocar no código de ninguém.

Detectar aplicativos pelo nome ou por arquivos instalados manteve cada correção cirúrgica em vez de mudar o comportamento para tudo.

O teste em massa de software real de varejo transformou incompatibilidades desconhecidas em uma lista de verificação documentada e atribuível antes do lançamento.

A compatibilidade retroativa pode ser comprada aplicativo por aplicativo: emular os bugs de uma plataforma antiga — até mesmo seus erros de memória — remove toda desculpa para não atualizar e quebra o problema do ovo e da galinha do software.

Joel Spolsky, que recontou a história do SimCity em 2000, chamou isso de a maneira de quebrar o problema do ovo e da galinha do sistema operacional: 'oferecer um modo de compatibilidade retroativa que entregue um caminhão de galinhas ou um caminhão de ovos, dependendo de como você encara, e sentar e lucrar.' O banco de dados de camadas de compatibilidade por aplicativo sobreviveu ao Windows 95 e continua inspecionável no Windows Assessment and Deployment Kit.

CONFIRA AS EVIDÊNCIAS

As fontes

  1. Windows 95 went the extra mile to ensure compatibility of SimCity, other games Ars Technica · arstechnica.com ·