O que é código aberto?
Código aberto é um modelo de produção descentralizado que permite a qualquer pessoa modificar e compartilhar tecnologias porque seu projeto é acessível ao público. O termo se originou no contexto de desenvolvimento de software para indicar que o software está em conformidade com determinados critérios de distribuição gratuita. Hoje em dia, o termo código aberto designa um conjunto de valores mais amplo que se baseia nos princípios de troca gratuita de informações, prototipagem rápida e desenvolvimento colaborativo. Qualquer pessoa pode contribuir com novas ideias e melhorar ainda mais a tecnologia para que ela evolua organicamente.
Por que o código aberto é importante?
A ideia de código aberto surgiu da comunidade tecnológica. Inovações técnicas precisam de colaboração global para evoluírem. Por exemplo, digamos que uma equipe de programação nos EUA desenvolva uma nova tecnologia de código aberto para uma aplicação financeira. Outra equipe de programação na Austrália modifica essa tecnologia com novas funcionalidades mais adequadas ao setor de saúde. Uma terceira equipe na Ásia desenvolve novos produtos de código aberto que usam a tecnologia original como componente principal.
Esse compartilhamento de conhecimento e a inovação coletiva beneficiam toda a comunidade. Bloquear a tecnologia atrás de patentes, direitos autorais e licenças caras limita o progresso. Muitos projetos populares de código aberto levaram a um rápido avanço tecnológico em todo o mundo nas últimas décadas.
Quais são os princípios do código aberto?
Os princípios básicos por detrás de qualquer projeto de código aberto são os seguintes:
Comunidade
Uma comunidade de código aberto é um grupo de pessoas que se reúnem para alcançar um propósito comum. Seus valores e objetivos compartilhados orientam a tomada de decisões e impulsionam o projeto de código aberto.
Transparência
Projetos de código aberto garantem que todos na comunidade tenham acesso às informações e materiais necessários para fazer seu melhor trabalho. Com a conscientização sobre o panorama geral, os membros da equipe tomam decisões mais eficazes e ampliam as ideias e descobertas uns dos outros.
Colaboração aberta
Projetos comunitários incentivam o trabalho em equipe, para que um grupo resolva problemas que seus membros sozinhos não conseguem solucionar. Por exemplo, os membros de qualquer iniciativa de código aberto contribuem com mudanças para melhorar o que outra pessoa construiu. Você também pode estabelecer regras para que outras pessoas possam modificar a solução conforme necessário no futuro.
Prototipagem rápida
Um projeto de código aberto segue uma abordagem iterativa, na qual os membros da equipe criam e compartilham protótipos em intervalos frequentes. A prototipagem rápida incentiva uma cultura de experimentação. Você pode melhorar e levar adiante as mudanças que funcionam e descartar aquelas que não funcionam.
Meritocracia inclusiva
O movimento de código aberto incentiva diversas perspectivas e conversas. A comunidade toma decisões por consenso, mas também prioriza o sucesso. As melhores ideias recebem mais apoio e esforço da comunidade de código aberto.
O que é software de código aberto?
Software de código aberto é um software com código-fonte que qualquer pessoa pode inspecionar, modificar e aprimorar. O código-fonte é a parte do software que os programadores de computador manipulam para alterar o funcionamento de uma aplicação ou para adicionar novos recursos. Qualquer pessoa com acesso ao código-fonte de um software pode melhorar ou personalizar a aplicação, adicionando recursos ou solucionando problemas de erros existentes. Softwares de código aberto aparecem na maioria das aplicações e dispositivos da Web que você utiliza atualmente. Alguns exemplos de software de código aberto são o Linux, um sistema operacional de código aberto, e o Mozilla Firefox, um navegador de Internet de código aberto.
Quais são os recursos de softwares de código aberto?
Os recursos de qualquer software de código aberto se alinham estreitamente aos valores do movimento de código aberto.
Código aberto
O software de código aberto deve ser lançado sob uma licença de código aberto que atenda a determinados critérios de distribuição, como os seguintes:
- Nenhuma restrição à venda ou distribuição do software como um componente da distribuição agregada de softwares
- Deve incluir e permitir a distribuição do código-fonte
- Deve permitir modificações e trabalhos derivados
- Os direitos associados ao programa devem ser aplicáveis a todos, sem discriminação
Projeto aberto
O projeto aberto garante um processo transparente e aberto para conceber e planejar o software. Trata-se de permitir que a comunidade impulsione o roteiro de recursos e o projeto do software. Isso pode ser desafiador, pois o processo de obter o consenso da comunidade pode ser demorado. No entanto, o design combinado pela comunidade resulta em um produto melhor que atende de forma mais eficaz às necessidades dos usuários.
Desenvolvimento aberto
O desenvolvimento aberto é a adoção de processos de desenvolvimento inclusivos e transparentes que permitem que todos participem como iguais. Serviços acessíveis ao público trazem visibilidade às atividades de desenvolvimento. Por exemplo, projetos de código aberto geralmente adotam um conjunto de padrões que estabelecem claramente as métricas com as quais uma contribuição será avaliada. Isso permite que todas as atualizações de software recebam a mesma consideração, seja ela de um colaborador iniciante ou de um desenvolvedor sênior.
Comunidade aberta
A comunidade aberta garante que a comunidade de desenvolvimento de software seja um ambiente inclusivo, onde todas as vozes são ouvidas e qualquer pessoa pode subir para posições de liderança. Ela equilibra as necessidades de desenvolvedores e usuários, estabelecendo objetivos comuns e construindo conexões fortes.
Qual é a diferença entre softwares de código aberto e outros tipos de software?
Às vezes, organizações ou pessoas que criam um software preferem controlá-lo por motivos comerciais. Elas mantêm direitos de propriedade exclusivos sobre o código-fonte, o que significa que são as únicas que podem modificar o código para corrigir erros ou adicionar novos recursos. Esse software é chamado de software proprietário ou software de código fechado. Os produtos Adobe Photoshop e Norton AntiVirus são exemplos de software proprietário.
Softwares de código aberto vs. Softwares de código fechado
As três principais diferenças entre softwares de código aberto e softwares de código fechado, ou proprietários, são as seguintes:
Confiabilidade
Segurança
Qualquer código-fonte pode ter falhas de segurança que o tornam vulnerável a ataques cibernéticos. No entanto, softwares de código aberto têm a vantagem de correções mais rápidas. Depois que você ou outros membros da comunidade denunciam vulnerabilidades de segurança, os projetos de código aberto lançam uma atualização de código em um ou dois dias. Se empresas comerciais desenvolvem softwares de código aberto, a alta visibilidade gera uma urgência para corrigir problemas e pode até mesmo resultar em softwares originais de melhor qualidade.
Por outro lado, softwares proprietários têm ciclos de atualização mais longos pelos seguintes motivos:
- O fornecedor pode ter menos pessoal trabalhando em um determinado projeto.
- O fornecedor pode dar prioridade a considerações financeiras em vez de a falhas de segurança.
- O fornecedor pode atrasar o lançamento da atualização de segurança porque prefere agrupar várias alterações e lançá-las de uma só vez.
Licenciamento
- Modifiquem o código-fonte para projetos pessoais.
- Redistribuem o código modificado se os usuários continuarem a permitir que outras pessoas visualizem suas alterações.
Quais são os tipos de licenças de software de código aberto?
Embora uma licença de código aberto seja menos restritiva do que uma licença de propriedade exclusiva, o nível e a gama de permissões variam de acordo com o tipo. Veja a seguir alguns tipos comuns de licenças de código aberto.
Licença de domínio público
A licença de domínio público indica que qualquer pessoa pode modificar, usar ou comercializar o software, sem restrições. Na maioria dos casos, os criadores de software de código aberto de domínio público tomaram uma decisão intencional ou voluntária de não proteger os direitos autorais do software.
Licença permissiva
Licenças permissivas de código aberto contêm requisitos mínimos para como você pode modificar ou distribuir o software. Alguns exemplos desse tipo de licença são a Licença Apache e a licença Berkeley Source Distribution (BSD). Embora o software original seja de código aberto e protegido por direitos autorais, os usuários podem comercializar e redistribuir versões modificadas.
Lesser General Public License
A Lesser General Public License (LGPL - Licença pública geral menor) permite que você use componentes de código aberto sem restrições. Esses componentes geralmente são acessíveis como módulos de código, chamados de bibliotecas, que você pode conectar a qualquer código e utilizar. Se você usar o código-fonte LGPL na sua aplicação, poderá comercializar essa aplicação. No entanto, se você modificar o código LGPL existente, deverá redistribuí-lo sob a mesma licença novamente.
Licenças Copyleft
- Se você modificar componentes de código aberto Copyleft, deverá lançar o novo código-fonte inteiro junto com a aplicação. No entanto, você não precisará fazer isso se usar a aplicação apenas internamente e nunca lançá-la para o público.
- Você pode vender suas modificações GPL, mas o comprador poderá redistribuí-las, se assim o desejar.
- Você deve dar crédito a todos os autores anteriores do código na declaração de direitos autorais do seu novo código.
Quem regula os softwares de código aberto?
A Open Source Initiative (OSI) é uma organização global sem fins lucrativos que defende todos os tipos de software de código aberto e divulga informações sobre eles. Como um órgão de padrões, ela mantém a Open Source Definition (Definição de código aberto), um documento que define legalmente as condições que fazem com que qualquer software seja de código aberto.
Seguindo essa definição da organização, você pode obter a marca registrada da licença aprovada pela OSI. A marca registrada gera confiança e incentiva outras pessoas a contribuir e colaborar com você. A OSI mantém uma lista de licenças aprovadas e aprova novas licenças na comunidade de código aberto. Ela também regula os requisitos de padrões abertos para softwares.
O que são padrões abertos?
Padrões abertos são regras de desenvolvimento de software que colaboram para a uniformidade e a interoperabilidade nas tecnologias. Eles estão disponíveis gratuitamente para implementação, adoção e atualizações. Como resultado, acabam tornando muitos aspectos da nossa vida cotidiana mais confortáveis e convenientes.
Por exemplo, padrões permitem que todos os tipos de máquinas se conectem a todos os tipos de roteadores sem fio. Você pode usar seu laptop para se conectar à Internet em casa e na sua lanchonete favorita, independentemente do roteador que elas utilizam. Sem padrões, você teria que encontrar uma lanchonete com um roteador compatível com o seu laptop.
Código aberto versus padrões abertos
Padrões são as regras, as diretrizes e as especificações para escrever certos tipos de código-fonte, e não o código propriamente dito. Os padrões de software devem seguir certas regras para serem classificados como código aberto. Por exemplo, se você precisa de tecnologias proprietárias para implementar certos padrões, então esses padrões não são de código aberto.
Por que existem versões comerciais de softwares de código aberto?
Criadores e outras empresas monetizaram muitos projetos de código aberto com a venda de complementos, como análises ou segurança, que atraem empresas maiores. Empresas privadas podem comercializar todo o software no domínio público, incluindo esses programas de código aberto no código de suas aplicações. Elas também podem lançar versões diferentes do mesmo software sob licenças diferentes.
Por exemplo, digamos que uma empresa lance um sistema de gerenciamento de banco de dados sob a GPL e uma licença de propriedade exclusiva. Qualquer pessoa pode usar a versão GPL para desenvolvimento de software, desde que torne o novo código seja aberto. Por outro lado, a versão proprietária oferece serviços de software adicionais, como os seguintes:
- Um serviço de banco de dados totalmente gerenciado
- Um serviço de backup de dados de nível corporativo
- Criptografia de segurança adicional
Softwares de código aberto e softwares livres são a mesma coisa?
O termo software livre refere-se a um movimento social, também chamado de movimento do software livre, cujo objetivo é obter e garantir certas liberdades para os usuários de softwares. Esse movimento funciona para garantir que os usuários tenham a liberdade de fazer o seguinte:
- Executar o software.
- Estudar o software.
- Modificar o software.
- Compartilhar cópias do software.
Softwares de código aberto vs. softwares livres
Hoje em dia, software livre refere-se a licenças de código aberto no domínio público. Softwares de código aberto agora incluem mais tipos de licenças e podem impor algumas restrições aos usuários, ao contrário do movimento de software livre. Como os termos “freeware” e “software livre” são usados de maneira intercambiável, é melhor referir-se a softwares livres como softwares de domínio público.
Softwares de código aberto vs. freeware
O termo freeware refere-se simplesmente a um produto comercial que está disponível gratuitamente por tempo limitado. Um freeware também pode ser uma versão de avaliação gratuita ou uma versão com recursos limitados de um produto que, de outra forma, exige taxas de assinatura. Mesmo que você tenha acesso ao freeware, não terá o direito de revendê-lo, compartilhá-lo ou modificá-lo de forma alguma.
Como a AWS contribui para softwares de código aberto?
Na AWS, acreditamos que o código aberto é bom para todos. Estamos comprometidos em trazer o valor do código aberto para os nossos clientes e a excelência operacional da AWS para as comunidades de código aberto. Os engenheiros da AWS desenvolvem softwares de código aberto regularmente e contribuem com milhares de comunidades de código aberto no GitHub, no Apache, na Linux Foundation e muito mais. Aqui estão algumas outras das nossas maneiras de apoiar o código aberto:
- Trabalhamos muito para garantir que os clientes possam implantar e operacionalizar seus softwares de código aberto preferidos na nuvem. A AWS oferece suporte a uma variedade maior de tecnologias de código aberto em comparação a outros provedores de nuvem.
- Temos vários projetos de longo prazo na comunidade de código aberto. Contribuímos continuamente com correções de bugs, segurança, escalabilidade, performance e aprimoramentos de recursos para esses projetos.
- Estabelecemos parcerias estreitas com as principais empresas de código aberto (desde a HashiCorp até a MongoDB, Confluent e Red Hat) e as ajudamos a superar as expectativas dos clientes.
Saiba mais sobre nossos projetos de código aberto em Código aberto na AWS ou explore mais de 1200 projetos de código aberto liderados pela Amazon no GitHub.
Comece a usar código aberto na AWS criando uma conta gratuita hoje mesmo.
Próximas etapas na AWS
Veja os serviços da AWS do nível gratuito