O protótipo do sistema de arquivo verde-oliva permite executar códigos antigos em computadores modernos

No início de 2010, as economistas de Harvard Carmen Reinhart e Kenneth Rogov publicaram uma análise de dados econômicos de diferentes países e concluíram que se a dívida exceder 90% do PIB, isso ameaçará o crescimento econômico do país. Com tanta dívida, na opinião deles, o crescimento deve se tornar negativo.
Sua análise foi feita logo após a recessão de 2008, por isso estava diretamente relacionada ao trabalho dos legisladores, muitos dos quais estavam confiantes na necessidade de aumentar a dívida para estimular as economias nacionais. Ao mesmo tempo, políticos conservadores como Olli Rehn, então
comissário europeu e congressista dos EUA Paul Ryan, usaram as descobertas de Reinhart e Rogov para fazer campanha em favor da abstinência financeira.
Três anos depois, Thomas Herndon, um graduado da Universidade de Massachusetts, encontrou um erro na planilha do Excel que Reinhart e Rogov usavam para seus cálculos. Seu significado era enorme: com uma análise apropriada, Herndon mostrou que o nível de endividamento de 90% do PIB estava correlacionado com um crescimento positivo da economia de 2,2%, e não com um crescimento negativo de -0,1%, como escreveram Reinhart e Rogov.
Herndon pôde verificar facilmente as conclusões dos economistas de Harvard, já que ele tinha acesso ao software com o qual trabalhavam - o Microsoft Excel. E as descobertas mais antigas que usavam software antigo que hoje são difíceis de encontrar?
Podemos decidir que a solução para esse problema - manter um software importante para futuros pesquisadores - não deve ser complicada. Afinal, o software é apenas uma coleção de arquivos, e esses arquivos são fáceis de armazenar no disco rígido ou em fita em formato digital. O código de alguns programas pode até ser reproduzido em papel, a fim de evitar problemas com a obsolescência da mídia digital para a qual foi escrita.
Os programas são armazenados dessa maneira continuamente, mesmo para programas com várias décadas de idade. On-line, você pode, por exemplo, encontrar o código-fonte do Apollo Guidance Computer, que ajudou a entregar astronautas à Lua na década de 1960. Foi reescrito do papel e carregado no GitHub em 2016.
E embora um programador hardcore possa gostar de um estudo cuidadoso desse código vintage, a maioria das pessoas não está interessada. Eles estão interessados em usar software. Mas manter o software pronto para ser executado por longos períodos de tempo é extremamente difícil, porque para executar a maioria dos programas antigos, você precisa de computadores e sistemas operacionais antigos.
Você pode ter encontrado esses problemas ao tentar jogar jogos de computador de sua juventude. Mas no campo da pesquisa científica e técnica, a incapacidade de iniciar um programa antigo pode levar a consequências muito mais graves.
Além dos economistas, muitos outros pesquisadores, por exemplo, físicos, químicos, biólogos e engenheiros, usam constantemente programas para processamento de dados e visualização dos resultados das análises. Eles estão envolvidos na simulação de fenômenos usando modelos de computador escritos em várias linguagens de programação e usando um grande número de bibliotecas de software que suportam seu trabalho e links para conjuntos de dados. Essas investigações e o software em que eles confiam desempenham um papel importante nas descobertas e nos relatórios de resultados de pesquisa.
Imagine que você é um pesquisador que deseja verificar os cálculos de outro cientista, realizados há 25 anos. Esse software antigo ainda estará disponível para você? A empresa que o lançou já pode fechar. Mesmo se houver uma versão moderna, eles aceitarão os dados no formato original? Todos os cálculos - por exemplo, funcionam com erros de arredondamento - serão idênticos aos antigos feitos no computador uma geração atrás? Provavelmente não.
A dependência de pesquisadores em computadores está aumentando, e as dificuldades em tentar executar softwares antigos estão aumentando, o que os impede de verificar os resultados publicados anteriormente. O problema do software desatualizado nega o conceito de reprodutibilidade subjacente à ciência.
Esse problema pode afetar a realização de exames forenses. Suponha que os cálculos do engenheiro mostrem que o edifício deve permanecer de pé e, depois disso, o teto do edifício cai. O engenheiro cometeu um erro ou o software estava com defeito? Se, muitos anos depois, o software não puder ser iniciado, será muito difícil verificar.
Portanto, colegas da Universidade Carnegie Mellon e eu desenvolvemos uma maneira de arquivar programas de tal maneira que possam ser facilmente lançados hoje e no futuro. Meus colegas, os cientistas da computação Benjamin Gilbert e Ian Harks, escreveram a maior parte do código. O arquivista de software Daniel Ryan e as bibliotecárias Gloriana Saint-Claire, Erica Linke e Kif Webster, que, por razões óbvias, têm grande interesse em preservar essa parte da cultura moderna, também participaram da colaboração.
NCSA Mosaic 1.0, um dos primeiros navegadores com Macintosh, 1993
Chaste (ambiente de câncer, coração e tecidos moles) 3.1 para Linux, 2013
The Oregon Trail 1.1, jogo para Macintosh, 1990
Wanderer, um jogo para MS-DOS, 1988
Mystery House, jogo para Apple II, 1982
The Great American History Machine, um atlas educacional interativo para Windows 3.1, 1991
Microsoft Office 4.3 para Windows 3.1, 1994
ChemCollective, Software educacional de química para Linux, 2013Como esse projeto está relacionado à preservação de software, e não à ciência da computação popular, não levantamos recursos para agências estatais comuns, mas da Fundação Alfred Sloan e do Instituto de Serviços de Museus e Bibliotecas. Com a ajuda deles, demonstramos a restauração de sistemas de computadores há muito esquecidos e os disponibilizamos para todos online, para que qualquer usuário de computador pudesse voltar no tempo com um clique.
Criamos o sistema
Olive , um acrônimo para a Open Library of Images for Virtualized Execution. O Olive permite que você obtenha através da Internet a mesma impressão que obteria ao iniciar um aplicativo, sistema operacional ou computador do passado. Ao instalar o Olive, você pode trabalhar com um software muito antigo, como se fosse moderno. Este é um pouco do arquivo da Internet da
Wayback Machine para programas executáveis.
Para entender como o Olive pode reviver um ambiente de computador antigo, você precisa passar por várias camadas de abstrações de software. Na base, está a base comum das mais modernas tecnologias de computação: um computador desktop ou laptop padrão com um ou mais microprocessadores x86. Nele, rodamos o sistema operacional Linux, que forma a segunda camada da pilha.
Acima do sistema operacional está o software VMNetX, escrito em meu laboratório, executando uma máquina virtual em uma rede [Execução de Rede de Máquina Virtual]. Uma máquina virtual é um ambiente de computação que imita o ambiente em um computador que existia em um tipo diferente de computador. O VMNetX permite armazenar máquinas virtuais em um servidor central e executá-las remotamente sob demanda. A vantagem é que seu computador não precisa baixar o status inteiro do disco e da memória do servidor para iniciar a máquina virtual. As informações armazenadas no disco e na memória são baixadas em partes, se necessário, para organizar a próxima camada - o monitor da máquina virtual (hypervisor), que pode suportar a operação de várias máquinas simultaneamente.
Um emulador de hardware funciona em cada uma das máquinas virtuais - este é o próximo nível na pilha Olive. O emulador finge que está executando um computador há muito tempo fora de uso - por exemplo, o antigo Macintosh Quadra com a CPU Motorola 68040 dos anos 90. Se o software arquivado puder ser executado em um computador com base em x86, essa camada de virtualização poderá ser omitida.
A próxima camada é o sistema operacional antigo, que pode executar o software de arquivamento. Ela tem acesso a um disco virtual que simula uma unidade de disco e um sistema de arquivos, necessários para que as próximas camadas do bolo de abstração do programa funcionem.
Acima do antigo sistema operacional já é o próprio programa. Pode ser o topo da pilha, ou pode ter outra camada que consiste em dados que o programa precisa alimentar para obter o que você deseja.
As camadas superiores do Olive são diferentes para cada um dos programas de arquivamento e são armazenadas em um servidor central. As camadas inferiores são instaladas no computador do usuário como parte do cliente. Ao iniciar o programa de arquivamento, o cliente Olive baixa as partes necessárias das camadas superiores sob demanda do servidor central.

É isso que o sistema tem sob o capô. Mas o que Olive pode fazer? Hoje, ele contém 17 máquinas virtuais diferentes que podem executar uma variedade de sistemas operacionais e aplicativos. A escolha do que incluir no sistema foi baseada em uma mistura de curiosidade, acessibilidade e interesses pessoais. Por exemplo, um membro de nossa equipe lembrou com carinho como ele tocou no The Oregon Trail enquanto cursava a escola no início dos anos 90. Como resultado, encontramos uma versão antiga do jogo para Mac e conseguimos lançá-la através do Olive. Depois que isso se tornou conhecido, muitas pessoas começaram a chegar até nós com perguntas sobre a possibilidade de reviver seu software favorito do passado.
O aplicativo mais antigo que restauramos é o Mystery House, um jogo gráfico do início dos anos 80 para um computador Apple II. Outro programa é o NCSA Mosaic, que, como pessoas de uma certa idade podem se lembrar, lhes deu maravilhas na WWW.
Olive tem uma versão do Mosaic escrita em 1993 para o Macintosh System 7.5. Este sistema operacional é executado no emulador de CPU Motorola 68040, criado usando o software em um computador baseado em x86 executando o Linux. Apesar de toda essa virtualização, o desempenho não é ruim, pois os computadores modernos funcionam muito mais rápido que o hardware original da Apple.
É bastante interessante direcionar o mosaico restaurado de Olive para sites modernos. Ele apareceu antes das tecnologias modernas da web, como JavaScript, HTTP 1.1, Cascading Style Sheets e HTML 5, e, portanto, não pode exibir a maioria dos sites. Mas você pode estar interessado em procurar
sites há tanto tempo que sejam perfeitamente visíveis neste navegador.
Do que mais o Olive é capaz? Você pode estar se perguntando quais ferramentas foram usadas nos negócios logo após o processador Intel Pentium aparecer. Olive pode ajudar com isso. Inicie o Microsoft Office 4.3 desde 1994 (que, felizmente, saiu antes que o irritante assistente de clipe aparecesse).
Você pode querer passar uma noite nostálgica jogando Doom for DOS, ou ver por que os atiradores em primeira pessoa se tornaram tão populares no início dos anos 90. Ou talvez você precise refazer seus impostos a partir de 1997 e não consiga encontrar um disco com essa versão do TurboTax no sótão. Não se preocupe, Olive cuidará de você.
Se falar de coisas mais sérias, o Olive
Chaste 3.1 é armazenado. É a abreviação de Câncer, Coração e Ambiente de Tecidos Moles (câncer, coração e tecidos moles). Esta é uma simulação desenvolvida na Universidade de Oxford, que permite resolver problemas computacionais em biologia e fisiologia. A versão 3.1 foi relacionada a um trabalho de pesquisa publicado em março de 2013. No entanto, dois anos após a publicação, o código-fonte do Chaste 3.1 deixou de ser compilado em novas versões do Linux. Este é um ótimo exemplo dos problemas de reprodutibilidade científica que o sistema Olive deve resolver.

Para manter o Chaste 3.1 funcionando, o Olive fornece um ambiente Linux atemporal. Recriado em Olive Chaste também contém exemplos de dados publicados com um trabalho de 2013. O processamento desses dados fornece uma visualização do trabalho dos músculos. Futuros pesquisadores de fisiologia que desejam estudar essas visualizações ou fazer correções no software publicado poderão usar o Olive para editar o código em uma máquina virtual e executá-lo.
Atualmente, o Olive está disponível para um número limitado de usuários. Devido a restrições de licenciamento, o pacote Olive de software antigo está disponível apenas para pessoas que ajudaram no desenvolvimento do projeto. As empresas relacionadas a software devem fornecer permissão para apresentar programas revividos a um amplo público.
Não estamos sozinhos em nossa busca de oportunidades para manter a vida em softwares antigos. O Internet Archive salva milhares de programas antigos com um emulador de MS-DOS baseado em navegador. Em Yale, eles estão desenvolvendo o projeto EaaSI (emulação como uma infraestrutura de serviço), na esperança de dar a todos acesso a milhares de emulações de ambientes de software do passado. Cientistas e bibliotecários do projeto Rede de Preservação de Software estão trabalhando neste e em outros projetos. Eles também estão trabalhando na resolução de problemas de direitos autorais que aparecem ao iniciar o software antigo dessa maneira.
Olive já está bem desenvolvida, mas ainda está longe de ter um sistema totalmente acabado. Além do problema de licenciamento, ela precisa superar alguns obstáculos técnicos.
Um dos obstáculos é a importação de novos dados para processamento pelo programa antigo. Até o momento, esses dados devem ser inseridos manualmente e esse método é difícil e propenso a erros. Este método também limita a quantidade de dados que podem ser analisados. Mesmo se adicionássemos um mecanismo de importação de dados, a quantidade de dados armazenados seria limitada pelo tamanho do disco virtual da máquina virtual. Isso pode parecer um pequeno problema, mas é preciso lembrar que os sistemas de arquivos dos computadores antigos às vezes tinham limitações no volume que agora são percebidas como estranhas.
Outro obstáculo é a emulação de GPU. Há já algum tempo, os cientistas usam a computação paralela para acelerar vários cálculos. Para arquivar software executável usando uma GPU, o sistema Olive precisará recriar versões virtuais desses chips - e essa é uma tarefa difícil. Isso ocorre porque as interfaces da GPU - no que elas podem entrar e no que produzem - não são padronizadas.
Obviamente, ainda há muito trabalho a ser feito antes de anunciarmos a solução de problemas com o arquivamento de programas executáveis. Mas o Olive é um bom começo para criar os sistemas necessários para garantir que os programas antigos sejam mantidos em tal estado que possam ser estudados, testados e usados por um longo tempo.