Academia.eduAcademia.edu

Software Livre: Pré Requisito para a Ciência Aberta

2021

ARTIGO SOFTWARE LIVRE: PRÉ-REQUISITO PARA A CIÊNCIA ABERTA POR Christina von Flach e Fabio Kon flach@ufba.br, kon@ime.usp.br A ciência sempre se pautou pela disseminação do conhecimento, com destaque para a reprodutibilidade de experimentos. É claro que há limites práticos – e mesmo éticos – para o que pode ser compartilhado e reproduzido, mas expandir esses limites é um objetivo de interesse para cientistas de todas as áreas. Esse é o foco do movimento pela ciência aberta, que tem tido bastante repercussão nos últimos anos. A Ciência Aberta requer que as ferramentas e os instrumentos necessários para a prática científica estejam dis- poníveis para todos, de modo que os experimentos possam ser reproduzidos e os resultados verificados por terceiros. No Século 21, o software consolidou-se como onipresente no conjunto de ferramentas usado por pesquisadores das Ciências Exatas e Biomédicas e tem uso crescente nas Ciências Sociais e Humanas. Software é usado para limpeza, processamento e visualização de dados, bem como para criar modelos e realizar previsões. Algoritmos especializados são codificados na forma de bibliotecas, scripts e metadados. Sem compartilhar todos esses artefatos, é muito difícil e custoso reproduzir a pesquisa científica e validar sua correção. C O M PU T A Ç Ã O B R A S I L | D E ZE M B R O 2 021 12 Assim, para alcançar a abertura plena na Ciência, é essencial que bibliotecas de software, scripts, pacotes e aplicativos usados e desenvolvidos por cientistas estejam prontamente disponíveis para qualquer pesquisador interessado em reproduzir ou estender uma determinada parte da pesquisa. Em particular, quando se trata de financiamento público, é altamente desejável que o software produzido no contexto da pesquisa (research software) seja Software Livre para garantir que seus benefícios sejam disponibilizados para uma vasta comunidade e de forma abrangente. O Movimento do Software Livre teve início em 1983 quando o projeto GNU foi fundado como um meio de desenvolver um corpo robusto de software, incluindo um sistema operacional, ferramentas e aplicativos associados que estariam completamente disponíveis para todos os interessados. Em 1998, o termo Open Source Software passou a ser utilizado como uma estratégia para difundir, para empresas, essa nova forma colaborativa de desenvolver e compartilhar software. Atualmente, o software livre é reconhecido e adotado pelas principais empresas de TI do mundo, que usam e produzem software sob licenças de software livre/aberto. Milhares de componentes de software de alta qualidade estão disponíveis como software livre, desde drivers e sistemas operacionais até bibliotecas, arcabouços e aplicativos. A Free Software Definition (https:// www.gnu.org/philosophy/free-sw.html) estabelece o que é Software Livre em termos de quatro liberdades dadas aos seus usuários: (1) para executar o software para qualquer propósito, (2) para estudar e modificar o software (o acesso ao código fonte é uma pré-condição para isso), (3) para redistribuir cópias do software e (4) para distribuir suas versões modificadas do software. Essas quatro liberdades alavancam os princípios da Ciência Aberta. Por exemplo, a permissão para executar o software para qualquer finalidade permite que pesquisadores utilizem o software existente sem ter que comprá-lo ou construí-lo do zero para realizar seus próprios estudos. A permissão para estudar e modificar o software na forma de código-fonte oferece suporte à reprodutibilidade e replicabilidade, divulgando software de pesquisa, artefatos relacionados e o conhecimento embutido neles. Também aumenta a transparência (fluxos de trabalho visíveis), auditabilidade e confiabilidade (os resultados podem ser verificados por terceiros e qualquer pessoa pode detectar e corrigir um erro ou um recurso malicioso). A permissão para redistribuir cópias possibilita o compartilhamento de pacotes de replicação que, além dos dados brutos, fornecem o código necessário para seus experimentos de análise e interpretação em diferentes ambientes. Finalmente, a permissão para distribuir versões modificadas do software permite que os pesquisadores desenvolvam seu próprio trabalho, reutilizando e expandindo o fluxo de trabalho, a base de código ou a ferramenta de alguém, de modo a compartilhar o novo conhecimento para o benefício de outros. As licenças de software livre correspondem à definição mencionada anteriormente e, como tal, alavancam a Ciência Aberta. Para que seja C O M PU T A Ç Ã O B R A S I L | D E Z E M B R O 2 021 13 compartilhado como Software Livre (Free and Open Source Software), um trecho de código deve idealmente ser distribuído sob uma licença formalmente aprovada pela Open Source Initiative (https://opensource. org/licenses), de preferência uma que seja rotulada como “popular e amplamente utilizada ou com comunidades fortes”, tais como a GNU General Public License (GPL) ou a Mozilla Public License 2.0. Projetos de código aberto bem organizados adotam um modelo de desenvolvimento que resulta em código de alta qualidade que se adapta rapidamente a diferentes situações. Várias práticas estabelecidas são usadas e reconhecidas como contribuições importantes para a manutenção de software de alta qualidade. Estas incluem o uso de repositórios públicos, sistemas de controle de versão, colaboração por pares, revisão de código, testes automatizados, formatos e interfaces padrão e documentação relevante, e podem ser consideradas boas práticas para a Ciência Aberta. Os sistemas de controle de versão permitem que várias versões do mesmo software sejam mantidas e, possivelmente, referenciadas por experimentos de pesquisa e artigos científicos. Repositórios abertos podem ser usados para compartilhar vários tipos de ativos de pesquisa, como algoritmos, dados, código, relatórios e fluxos de trabalho, apoiando a reprodutibilidade, reduzindo a redundância e promovendo a colaboração científica aberta. A colaboração entre pares é frequente e habilitada por meio de acesso compartilhado ao código-fonte e vários canais de comunicação. A revisão de código promove a melhoria da qualidade do software por meio de compartilhamento, colaboração e revisão por pares e pode ser aplicada a outros ativos de pesquisa. Os testes automatizados aumentam a confiabilidade e a facilidade de manutenção, além de promover agilidade no desenvolvimento de novos recursos. O uso de formatos de dados e de interfaces padronizados facilita a integração com outros sistemas e desencoraja a dependência de fornecedores específicos. A documentação frequente e contínua é uma prática recomendada para manter os guias do usuário, os manuais e os outros documentos relevantes atualizados em relação à versão mais recente do software. Essas, e outras práticas usadas pelas comunidades de software livre, podem ser consideradas boas práticas para a Ciência Aberta, uma vez que oferecem suporte contínuo à disponibilidade e reúso de ativos, colaboração entre pares, transparência do fluxo de trabalho e confiabilidade. O software desenvolvido ou utilizado no contexto de uma pesquisa científica deve ser facilmente localizável, acessível, interoperável e reutilizável (https://bit. ly/3mGZass). Nesse contexto, os ecossistemas de software livre também promovem princípios da Ciência Aberta. Software livre pode ser localizado em repositórios com base em identificadores e descritores, utilizando diversos critérios como palavras-chave, linguagem de programação, versão do software, entre outros. A acessibilidade é encorajada em software livre disponível em repositórios abertos, com licenças de compartilhamento explícitas e bem definidas e documentação associada. A definição de interfaces de programação e formatos de entrada/saída e o uso de padrões promovem a interoperabilidade C O M PU T A Ç Ã O B R A S I L | D E ZE M B R O 2 021 14 e o reúso por vários grupos de pesquisa em todo o mundo. Além disso, no ecossistema da Ciência Aberta, o software deve ser sustentável, citável e reconhecido como uma valiosa contribuição da pesquisa científica, tão importante quanto os artigos, dados e metadados. A adoção do modelo de software livre promove a sustentabilidade do software no longo prazo. No entanto, esforços e incentivos são necessários para que os créditos para o software se tornem mais específicos e rastreáveis na ciência. O Software Livre tem sido o principal componente da pesquisa em Ciência da Computação nas últimas décadas. Há centenas de exemplos de sistemas, de bibliotecas e de ferramentas que têm promovido o rápido desenvolvimento da pesquisa em Computação. Exemplos conhecidos incluem o sistema operacional Gnu/Linux, a ferramenta de composição tipográfica LaTeX e bibliotecas e linguagens para computação estatística, como R. Por fim, atualmente, há uma grande coleção de bibliotecas livres como Scikit-learn, TensorFlow e PyTorch que contribuem para o rápido desenvolvimento dos campos de Inteligência Artificial e Aprendizagem de Máquina. Outras Ciências também se beneficiam com o software livre. A genômica, por exemplo, desenvolveu o software de código aberto EMBOSS, um pacote de análise para atender as necessidades de biólogos moleculares. Já ROOT é uma infraestrutura de suporte à análise de dados usada em pesquisas de Física Experimental de Altas Energias. É um software livre que nasceu no CERN e tem recebido contribuições de desenvolvedores de todo o mundo. Atualmente, mais de 1 Exabyte de dados científicos são armazenados em arquivos ROOT. O bóson de Higgs foi encontrado com o suporte do software livre ROOT. O Software Livre é fundamental para a Ciência Aberta. Esta mensagem deve ser transmitida a cientistas, agências de fomento à pesquisa, organizações científicas e governamentais. CHRISTINA VON FLACH é Professora Associada do Instituto de Computação da Universidade Federal da Bahia. Atua na área de Engenharia de Software tendo publicado mais de 100 artigos científicos em congressos e periódicos. Recentemente tem trabalhado com temas relacionados à Educação em Engenharia de Software, Sustentabilidade e Aspectos Sóciotécnicos de Ecossistemas de Software, e Ciência Aberta. FABIO KON é Professor Titular de Ciência da Computação na Universidade de São Paulo. Atua na área de Sistemas Distribuídos, Engenharia de Software e Ciência de Dados tendo publicado cerca de 200 artigos científicos em congressos e periódicos. Recentemente tem trabalhado na área de Cidades Inteligentes e gostaria de ter mais tempo para tocar seu vibrafone. C O M PU T A Ç Ã O B R A S I L | D E Z E M B R O 2 021 15