As vantagens do uso do código aberto
25 de julho de 2024
6 min de leitura
Custo é menor, e comunidade consegue contribuir com atualizações e melhorias
Para que qualquer software seja executado no computador ou celular, primeiro é necessário que alguém escreva seu código-fonte, que então será traduzido em código de máquina para, finalmente, ser executado no dispositivo. Geralmente, temos acesso apenas a esse código de máquina, que é praticamente impossível de entender. No entanto, alguns softwares vão além e disponibilizam também o código-fonte, legível para quem entende a linguagem de programação utilizada para escrevê-lo.
A maioria das pessoas depende no dia a dia de alguma ferramenta cujo código-fonte está disponível ao público. Inclusive aquelas que não têm código-fonte acessível também se beneficiam de alguma forma de projetos que disponibilizam os seus.
O compartilhamento de código-fonte sempre foi uma prática comum na comunidade científica e entre entusiastas da computação, seja para disseminação de conhecimento, seja para correção de erros ou como forma principal de distribuição de softwares.
A ideia de publicar o código-fonte com uma licença que permita sua modificação e redistribuição foi formalizada com a criação da Fundação de Software Livre, liderada por Richard Stallman, em 1985.
Em 1986, Stallman apresentou a primeira definição de software livre, que estabelece que, para ser considerado como tal, o software deve garantir as liberdades de executar, estudar, modificar e distribuir o código. Segundo ele, “as liberdades do software livre estão entre os direitos humanos que a sociedade deve estabelecer e proteger” e são essenciais para a manutenção de outros direitos humanos. Em 1998, porém, um novo conceito foi cunhado, de modo a partir do ponto de vista estratégico e prático do desenvolvimento: o “código aberto” (“open source”).
Diferentemente da definição de software livre, cuja origem era política e filosófica, a noção de código aberto visou definir uma estratégia de desenvolvimento que trouxesse benefícios aos que a adotam, já que contribuições externas ajudam com a redução de gastos e a maior velocidade de desenvolvimento.
O conceito foi idealizado pela recém-formada Open Source Initiative (Iniciativa do Código Aberto). Para uma licença ser considerada como código aberto, é preciso que ela respeite dez critérios que garantem, em resumo, que o código possa ser redistribuído livremente, incluindo novas adições e mudanças, sem restrição e discriminação entre usuários, grupos ou campos de aplicação.
Mesmo tento filosofias diferentes, os dois conceitos resultaram em uma prática similar, voltada para a contribuição e o desenvolvimento aberto, termos que, hoje em dia, são usados de forma indistinta. Uma nova definição, inclusive, vem ganhando popularidade: Free Open Source Software (software livre de código aberto), incorporando ambos os conceitos, o de código aberto e o de software livre. Daqui em diante será usado o termo “código aberto” para fazer referência tanto a projetos considerados como software livre quanto ao código aberto baseado na definição da Open Source Initiative.
Direitos autorais
É importante notar que código aberto não se encaixa dentro do conceito de domínio público, uma vez que é protegido por direitos autorais, mesmo que seus termos permitam a redistribuição e a modificação de forma similar ao domínio público. Além disso, na maioria das licenças de código aberto, ainda é necessária a referência aos autores e a inclusão da licença em todas as cópias distribuídas.
Código aberto também não significa que qualquer contribuição será aceita, independentemente da qualidade e dos objetivos. Os projetos de código aberto são liderados por mantenedores, que são os desenvolvedores responsáveis por analisar e discutir as contribuições da comunidade e que, em geral, também são os maiores contribuidores das iniciativas. Dessa forma, os novos recursos sempre buscam melhorias no software com seus usuários em mente e podem ser sugeridos e implementados pela própria comunidade.
Bifurcação
Por outro lado, nem sempre a comunidade concorda com o desenvolvimento do projeto. Devido às liberdades do código aberto, qualquer um pode criar um “fork” (bifurcação), uma versão do código com suas próprias modificações. Porém, enquanto o código sob licença de código aberto permite a publicação dessas versões, logos e nomes podem estar sob diferentes licenças, o que geralmente resulta em nomes e logos distintos dos apresentados nos projetos originais.
Muitas vezes esses forks são criados por membros da comunidade que desejam seguir no desenvolvimento do projeto, mas em rumos diferentes, e não é incomum que essas modificações acabem no código original depois de um tempo, assim como também não é incomum que um fork acabe mais popular do que o projeto original em que é baseado.
Recentemente a empresa responsável pelo desenvolvimento do software de banco de dados Redis passou a lançar as novas versões do projeto com uma licença mais restritiva, que não é considerada de código aberto. Como resposta, a comunidade criou um fork que irá seguir o desenvolvimento a partir da última versão disponível com licença de código aberto. Empresas como Amazon e Google já estão apoiando o novo fork financeiramente.
Existem softwares abertos para diversos fins, e muitos projetos são alternativas para versões pagas, como o Libre Office (alternativa ao Office da Microsoft), o GIMP (Editor de imagem, alternativa ao Adobe Photoshop) e o Zotero (Gerenciador de referência, alternativa ao Mendeley). Outros projetos são referências em suas áreas, como o Open Broadcaster Software (OBS), para transmissões ao vivo, o VLC, para reproduzir mídia, e projetos como o Blender, um software de modelagem e animação 3D que foi utilizado em múltiplos curtas de animação premiados, como “Agent 327” e “Spring”.
Essa lista não inclui somente projetos com poucos desenvolvedores ou empresas pequenas. Os navegadores Edge, Chrome e Opera dependem do Chromium, um projeto de código aberto desenvolvido e mantido pelo Google. Os celulares Android utilizam uma versão modificada do Linux, um sistema operacional de código aberto. Empresas como Netflix e Meta também possuem múltiplos projetos disponíveis em código aberto.
Vantagens
O custo é apenas uma das vantagens de utilizar projetos de código aberto. Em virtude de o seu desenvolvimento estar muito atrelado à maneira como a comunidade usa, essas ferramentas são desenvolvidas para funcionar bem com outros softwares, sem que seu uso seja limitado aos softwares da mesma empresa. Também é possível encontrar versões oficiais ou adaptadas pela comunidade para cada sistema operacional. Outro benefício é que muitas vezes a documentação e os manuais também estão disponíveis em uma licença de código aberto, o que significa que a comunidade consegue contribuir com atualizações, melhorias na escrita e exemplos de uso.
Porque o código está disponível para todos, problemas de vulnerabilidade são menos frequentes, pois quem depende da ferramenta pode revisar e validar o código e, caso alguma falha seja encontrada, indicar para os desenvolvedores ou até mesmo implementar uma solução própria.
Algumas empresas fornecem suporte especializado pago para os softwares que desenvolvem e distribuem por meio de código aberto. Outras oferecem hospedagem para projetos de código aberto, como, por exemplo, o WordPress (WP), que admite sites que utilizam sua ferramenta de gerenciamento de sites e blogs. No entanto, como o código do WP é aberto, é possível hospedar um site em outro local utilizando a mesma ferramenta.
No caso do Chromium e do Linux, múltiplas empresas que dependem desses projetos também fornecem recursos a eles, seja por meio de tempo dos desenvolvedores, seja com doações financeiras para as fundações responsáveis por gerir esses projetos.
Cuidados
No entanto, assim como no caso dos softwares com código fechado, é sempre necessário tomar alguns cuidados antes de se comprometer e depender totalmente de algum projeto de código aberto. É importante levar em consideração se o projeto ainda está em desenvolvimento ativo, possui investimentos ou está atrelado a alguma empresa.
Além disso, uma comunidade grande e ativa costuma resultar em melhor documentação e em mais chances de encontrar ajuda quando necessário. Projetos populares raramente são abandonados, com membros da comunidade assumindo o papel de mantenedores e continuando o trabalho de supervisionar o desenvolvimento.
Na Skylar, utilizamos múltiplos projetos de código aberto, desde as ferramentas para controle de versões (git) até tecnologias para desenvolver nossos aplicativos (React e Vue). O fato de esses projetos serem de código aberto, além de permitir serem completamente adaptados ao nosso uso, é uma garantia de funcionamento, de futuro desenvolvimento e de suporte da comunidade. Quando outros desenvolvedores encontram falhas nesses projetos e as reportam ou contribuem com correções, nós também somos beneficiados. No âmbito da Skylar já fizemos correções de falhas em projetos que usávamos, compartilhando nossa solução com a comunidade.
No geral, adotar o uso de softwares de código aberto pode trazer grandes vantagens, como segurança, qualidade, redução de custos e flexibilidade para futuras mudanças. Entretanto, alguns cuidados devem ser tomados: é importante levar em consideração a comunidade e o suporte disponíveis; outro ponto importante para ter em mente é a maturidade do projeto, para garantir que ele possa ser mantido a longo prazo. Para o projeto, disponibilizar um código com licença de código aberto pode gerar benefícios como contribuição de desenvolvedores de fora da organização, identificação e correção de erros com agilidade e maior transparência e confiança por parte dos usuários, além da criação de uma comunidade em volta dos produtos da empresa.
Para ter acesso às referências desse texto clique aqui |
Este conteúdo foi produzido por:
Renato Augusto do Carmo de Lacerda
Renato Augusto do Carmo de Lacerda é desenvolvedor de software e entusiasta da comunidade Open Source. Desde 2022 contribui com documentação e códigos em diversos projetos. Atua na Skylar na área de desenvolvimento front-end web e possui experiência com criação de landing pages e páginas interativas.