11/27/2019 - DesenvolvimentoSoftwareTecnologia
Afinal, o que é código Open Source?
O termo open source é usado para denominar todo software cujo código-fonte é aberto para qualquer pessoa. Isso significa que terceiros podem analisar, auditar e em alguns casos até fazer modificações para atender suas necessidades ou realizar melhorias. O open source não deve ser confundido com o Software Livre, que apresenta características semelhantes: basicamente todo software livre precisa ser de código aberto, mas o contrário nem sempre é verdade. (saiba mais)
Historicamente a metodologia open source esteve longe de ser o padrão de mercado para desenvolvimento de produtos de software: em geral as empresas escolhiam o modelo proprietário, em que o código é propriedade da empresa e só pode ser analisado e alterado por ela. Neste modelo, as empresas costumam vender licenças de uso para seus produtos, e escondem o código do restante do mercado para evitar que alguém use a base de código existente para criar um produto concorrente. Alguns exemplos notáveis de software proprietário: Windows, Photoshop, Banco de Dados Oracle, SAP.
Considera-se que o movimento open source surgiu em meados de 1983, a partir do movimento Software Livre iniciado por Richard Stallman, que na época trabalhava no laboratório de inteligência artificial do MIT.
Stallman se propôs a criar uma alternativa gratuita ao sistema operacional Unix, que na época era proprietário da AT&T. O GNU (GNU's not Unix), sistema operacional concebido por Stallman, foi criado sob a filosofia do software livre, que possui uma base ideológica mais forte e pautada no princípio de que os usuários devem ser livres para usar o software da forma que quiserem, inspecionar o código e modificá-lo de acordo com suas necessidades.
Avançando alguns anos até 1991, seguindo os princípios do software livre, o desenvolvedor finlandês Linus Torvalds criou o kernel Linux, parte central de um sistema operacional que realiza a comunicação básica da parte de hardware com o software. Como o kernel era justamente a parte que faltava para que o GNU se tornasse um sistema operacional completo, os dois foram integrados de forma a resultar no sistema operacional GNU/Linux, que atualmente costuma ser chamado apenas de Linux.
O sistema operacional GNU/Linux foi provavelmente o primeiro software de código aberto a obter alta relevância, e mostrou para a comunidade o potencial de um sistema construído de forma colaborativa. Ao longo dos próximos anos o GNU/Linux continuou crescendo cada vez mais: atualmente aproximadamente 70% dos servidores web executam neste sistema operacional. Além disso, o Android, sistema operacional para dispositivos móveis mais utilizado do mundo, foi construído utilizando o kernel do Linux.
Com o crescimento do GNU/Linux, a comunidade percebeu o potencial de se desenvolver software de forma colaborativa, pois como o código é aberto para o público, milhares de desenvolvedores ao redor do mundo podem ler e analisar cada linha de código do sistema, e até mesmo realizar contribuições. Devido a participação da comunidade, o código aberto acaba se tornando muito mais robusto e confiável, pois falhas são detectadas muito mais facilmente, e melhorias são aplicadas rapidamente desde que haja um consenso entre a comunidade.
Portanto concebeu-se a possibilidade de desenvolver alternativas abertas para serviços proprietários, começando pelos itens mais próximos do cotidiano dos programadores: bancos de dados, linguagens de programação, servidores e similares. Assim surgiram diversas tecnologias que são extremamente relevantes até o dia de hoje, como o banco de dados MySQL (concebido como alternativa ao OracleDB), a linguagem de programação PHP, o servidor web Apache e vários outras.
Por e para programadores
Neste contexto programadores experientes de diversas partes do mundo começaram a contribuir para os primeiros projetos open source, que visavam criar soluções feitas por e para programadores – portanto não se tratavam de aplicações para o usuário consumidor final, e sim ferramentas específicas para o processo de desenvolvimento de software, que se tornaram muito mais performáticas, robustas e flexíveis do que as alternativas proprietárias.
É importante lembrar que Linus Torvalds, na época do desenvolvimento do Linux, criou também um sistema de controle de versão distribuído chamado Git, outro projeto open source que visava possibilitar a colaboração fácil e segura de programadores trabalhando de lugares diferentes e em horários variados. O Git é outro excelente exemplo de software open source que "dominou" o mundo: a simplicidade e elegância do sistema desenvolvido por Torvalds se tornou rapidamente o padrão para controle de versão de software, e até hoje a grande maioria dos sistemas é desenvolvida usando Git.
Após o surgimento dos primeiros projetos, ao longo dos anos 2000 a comunidade open source continuou crescendo, e consolidou-se a ideia de que o software aberto acabava sendo mais robusto e performático. Por conta disso, a maior parte das tecnologias de desenvolvimento de software que surgiram nos últimos anos se tornaram ou já foram concebidas como abertas: Docker, NodeJS, MongoDB, ReactJS, Kubernetes, VueJS, NPM, TensorFlow, .NET Core e várias outras. Além disso, surgiram também riquíssimos pacotes de bibliotecas open source de uso gratuito, como o NPM para Javascript, Maven para Java e pip para Python, cada um destes com milhares de bibliotecas de código aberto que são utilizadas em milhares de outros projetos.
Aqui é importante ressaltar que ter um projeto de software que é de código aberto não significa abrir mão de ganhar dinheiro com o produto: Ao longo dos anos várias empresas encontraram modelos de negócio que encaixam com o paradigma open source. O exemplo mais famoso talvez seja o da Red Hat, que decidiu oferecer serviços de suporte a nível empresarial para o uso de distribuições GNU/Linux e deu muito certo: Após anos de atuação e ajustes ao seu modelo de negócios, em 2019 a Red Hat foi adquirida pela IBM por 34 bilhões de dólares. Além da Red Hat outras empresas que atuam no ecossistema open source estão no mesmo caminho promissor, como a Elastic , MuleSoft e MongoDB.
Seguindo o princípio de que as tecnologias abertas acabavam se tornando de maior qualidade devido a atuação orgânica da comunidade open source, diversas empresas decidiram abrir o código de suas ferramentas de forma a desenvolvê-las melhor ao invés de vender licenças de uso e limitar o crescimento do produto. Os exemplos mais notáveis seriam do Facebook com o ReactJS, Google com TensorFlow e Microsoft com o .NET Core.
A Importância prática
Atualmente, no contexto de ferramentas para desenvolvimento de software, já podemos afirmar que o open source se tornou o padrão. Principalmente para os desenvolvedores, que utilizam diariamente bibliotecas de software que foram desenvolvidas de forma aberta por outros programadores (pacotes NPM, Maven, pip…), é muito importante entender como essas soluções foram desenvolvidas, como fazer alterações nelas e como adaptá-las às suas necessidades específicas. Sem dúvida alguma, qualquer desenvolvedor que tiver um histórico de contribuições significativas para projetos open source terá um currículo muito mais atrativo, pois a capacidade de contribuir demonstra um conhecimento técnico consolidado e comprometimento com o crescimento da comunidade e do ecossistema de desenvolvimento de software.
Conforme os últimos anos demonstraram, a criação conjunta de software traz resultados excelentes: soluções mais confiáveis, de altíssima qualidade e abertas para o uso. Até mesmo as empresas gigantes da tecnologia perceberam os benefícios do modelo, que apesar de contra-intuitivo a princípio, está se consolidando como o padrão na comunidade. Percebeu-se que não vale a pena desenvolver uma solução e escondê-la atrás de uma patente ou algo semelhante, pois ao longo do tempo é inevitável que a comunidade desenvolva uma alternativa melhor de forma colaborativa. Portanto, é muito mais inteligente "surfar na onda" e obter um protagonismo na cena open source, de forma que tanto a comunidade quanto os criadores do software possam se beneficiar.
Espero que este texto tenha ajudado a colocar em perspectiva o estado atual do open source e explicado um pouco dos acontecimentos que nos trouxeram até aqui. Para mim, a perspectiva de que, em parte dos contextos, o software construído colaborativamente acaba sendo muito superior é inspiradora! Como foi possível perceber ao longo do texto, se trabalharmos em conjunto conseguiremos atingir resultados muito melhores, portanto espero que esta leitura tenha te incentivado a conhecer um pouco mais e a participar da comunidade global open source!
Não pare por ai! Aqui estão links interessantes:
https://www.redhat.com/en/enterprise-open-source-report/2019 – Alguns números sobre o open source corporativo em 2019