Open Source: O que é e qual a importância?
O termo código-fonte aberto (open source), refere-se a algo que as pessoas podem modificar e compartilhar porque seu design é acessível ao público.
O termo teve origem no contexto do desenvolvimento de software para designar uma abordagem específica para a criação de programas de computador. Hoje, no entanto, “código-fonte aberto” designa um conjunto mais amplo de valores – o que chamamos de “o caminho do código-fonte aberto”. Projetos, produtos ou iniciativas de código-fonte aberto adotam e celebram princípios de troca aberta, participação colaborativa, prototipagem rápida, transparência, meritocracia e desenvolvimento orientado à comunidade.
O que é software de código-fonte 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 a maioria dos usuários de computador nunca vê; é o código que os programadores de computador podem manipular para alterar a forma como um software – um “programa” ou “aplicativo” – funciona. Os programadores que têm acesso ao código-fonte de um programa de computador podem aprimorar esse programa adicionando recursos ou corrigindo partes que nem sempre funcionam corretamente.
Qual é a diferença entre o software de código aberto e outros tipos de software?
Alguns softwares têm um código-fonte que somente a pessoa, a equipe ou a organização que o criou – e que mantém controle exclusivo sobre ele – pode modificar. Esse tipo de software é chamado de software “proprietário” ou de “código fechado”.
Somente os autores originais do software proprietário podem legalmente copiar, inspecionar e alterar esse software. E, para usar o software proprietário, os usuários de computador devem concordar (geralmente assinando uma licença exibida na primeira vez em que executam esse software) que não farão nada com o software que os autores do software não tenham permitido expressamente. O Microsoft Office e o Adobe Photoshop são exemplos de software proprietário.
O software de código aberto é diferente. Seus autores disponibilizam seu código-fonte para outras pessoas que queiram visualizar esse código, copiá-lo, aprender com ele, alterá-lo ou compartilhá-lo. O LibreOffice e o GNU Image Manipulation Program são exemplos de software de código aberto.
Assim como fazem com o software proprietário, os usuários devem aceitar os termos de uma licença quando usam o software de código aberto, mas os termos legais das licenças de código aberto diferem muito dos das licenças proprietárias.
As licenças de código-fonte aberto afetam a maneira como as pessoas podem usar, estudar, modificar e distribuir software. Em geral, as licenças de código-fonte aberto concedem aos usuários de computador permissão para usar o software de código-fonte aberto para qualquer finalidade que desejarem. Algumas licenças de código-fonte aberto – que algumas pessoas chamam de licenças “copyleft” – estipulam que qualquer pessoa que libere um programa de código-fonte aberto modificado também deve liberar o código-fonte desse programa junto com ele. Além disso, algumas licenças de código-fonte aberto estipulam que qualquer pessoa que altere e compartilhe um programa com outras pessoas também deve compartilhar o código-fonte desse programa sem cobrar uma taxa de licenciamento por isso.
Por definição, as licenças de software de código aberto promovem a colaboração e o compartilhamento porque permitem que outras pessoas façam modificações no código-fonte e incorporem essas alterações em seus próprios projetos. Elas incentivam os programadores de computador a acessar, visualizar e modificar o software de código aberto sempre que desejarem, desde que permitam que outras pessoas façam o mesmo quando compartilharem seu trabalho.
O software de código aberto é importante apenas para os programadores de computador?
Não. A tecnologia de código-fonte aberto e o pensamento de código-fonte aberto beneficiam tanto os programadores quanto os não programadores.
Como os primeiros inventores criaram grande parte da própria Internet com base em tecnologias de código-fonte aberto – como o sistema operacional Linux e o aplicativo de servidor da Web Apache – qualquer pessoa que use a Internet hoje se beneficia do software de código-fonte aberto.
Toda vez que os usuários de computador visualizam páginas da Web, verificam e-mails, conversam com amigos, fazem streaming de música on-line ou jogam videogames para vários jogadores, seus computadores, telefones celulares ou consoles de jogos se conectam a uma rede global de computadores que usam software de código aberto para rotear e transmitir seus dados para os dispositivos “locais” que têm à sua frente. Os computadores que fazem todo esse importante trabalho geralmente estão localizados em lugares distantes que os usuários não veem ou não podem acessar fisicamente – por isso algumas pessoas chamam esses computadores de “computadores remotos”.
Cada vez mais, as pessoas dependem de computadores remotos para realizar tarefas que, de outra forma, poderiam realizar em seus dispositivos locais. Por exemplo, elas podem usar softwares on-line de processamento de texto, gerenciamento de e-mail e edição de imagens que não são instalados e executados em seus computadores pessoais. Em vez disso, eles simplesmente acessam esses programas em computadores remotos usando um navegador da Web ou um aplicativo de telefone celular. Quando fazem isso, estão envolvidos em “computação remota”.
Algumas pessoas chamam a computação remota de “computação em nuvem”, porque ela envolve atividades (como armazenar arquivos, compartilhar fotos ou assistir a vídeos) que incorporam não apenas dispositivos locais, mas também uma rede global de computadores remotos que formam uma “atmosfera” em torno deles.
A computação em nuvem é um aspecto cada vez mais importante da vida cotidiana com dispositivos conectados à Internet. Alguns aplicativos de computação em nuvem, como o Google Apps, são proprietários. Outros, como o ownCloud e o Nextcloud, são de código aberto.
Os aplicativos de computação em nuvem são executados “em cima” de software adicional que os ajuda a operar de forma suave e eficiente, de modo que as pessoas costumam dizer que o software executado “embaixo” dos aplicativos de computação em nuvem atua como uma “plataforma” para esses aplicativos. As plataformas de computação em nuvem podem ser de código aberto ou fechado. O OpenStack é um exemplo de plataforma de computação em nuvem de código aberto.
Por que as pessoas preferem usar software de código aberto?
As pessoas preferem o software de código aberto ao software proprietário por vários motivos, entre eles:
- Controle: Muitas pessoas preferem software de código aberto porque têm mais controle sobre esse tipo de software. Elas podem examinar o código para se certificar de que ele não está fazendo nada que não queiram e podem alterar as partes que não lhes agradam. Os usuários que não são programadores também se beneficiam do software de código aberto, pois podem usar esse software para qualquer finalidade que desejarem, não apenas da maneira que outra pessoa acha que deve ser usada.
- Treinamento: Outras pessoas gostam do software de código-fonte aberto porque ele as ajuda a se tornarem melhores programadores. Como o código-fonte aberto é acessível ao público, os alunos podem estudá-lo facilmente à medida que aprendem a criar um software melhor. Os alunos também podem compartilhar seu trabalho com outras pessoas, convidando-as a comentar e criticar, à medida que desenvolvem suas habilidades. Quando as pessoas descobrem erros no código-fonte dos programas, elas podem compartilhar esses erros com outras pessoas para ajudá-las a evitar que cometam os mesmos erros.
- Segurança: Algumas pessoas preferem software de código-fonte aberto porque o consideram mais seguro e estável do que o software proprietário. Como qualquer pessoa pode visualizar e modificar o software de código aberto, é possível que alguém detecte e corrija erros ou omissões que os autores originais de um programa poderiam ter deixado passar. E como muitos programadores podem trabalhar em um software de código aberto sem pedir permissão aos autores originais, eles podem consertar, atualizar e fazer o upgrade do software de código aberto mais rapidamente do que no software proprietário.
- Estabilidade: Muitos usuários preferem o software de código aberto ao software proprietário para projetos importantes e de longo prazo. Como os programadores distribuem publicamente o código-fonte do software de código aberto, os usuários que dependem desse software para tarefas críticas podem ter certeza de que suas ferramentas não desaparecerão ou ficarão em mau estado se seus criadores originais pararem de trabalhar nelas. Além disso, o software de código aberto tende a incorporar e operar de acordo com padrões abertos.
- Comunidade: O software de código-fonte aberto geralmente inspira a formação de uma comunidade de usuários e desenvolvedores em torno dele. Isso não é exclusivo do código-fonte aberto; muitos aplicativos populares são objeto de encontros e grupos de usuários. Mas, no caso do software de código aberto, a comunidade não é apenas uma base de fãs que se associa (emocional ou financeiramente) a um grupo de usuários de elite; são as pessoas que produzem, testam, usam, promovem e, em última análise, afetam o software que amam.
"Código aberto" não significa apenas que algo é gratuito?
Não. Esse é um equívoco comum sobre o que “código-fonte aberto” implica, e as implicações do conceito não são apenas econômicas.
Os programadores de software de código aberto podem cobrar dinheiro pelo software de código aberto que criam ou para o qual contribuem. Mas, em alguns casos, como uma licença de código-fonte aberto pode exigir que eles liberem seu código-fonte quando vendem software para outras pessoas, alguns programadores acham que cobrar dos usuários por serviços e suporte de software (em vez de pelo próprio software) é mais lucrativo. Dessa forma, seu software permanece gratuito e eles ganham dinheiro ajudando outras pessoas a instalá-lo, usá-lo e solucionar problemas.
Embora alguns softwares de código aberto possam ser gratuitos, a habilidade em programação e solução de problemas de softwares de código aberto pode ser bastante valiosa. Muitos empregadores procuram contratar especificamente programadores com experiência em software de código aberto.
Fonte

Douglas Bernardini
Cybersecurity Specialist & Cloud Computing Expert with +10 years experience in IT infrastructure.
Specialist delivering assets for development teams in Google Cloud Platform (GCP) and Amazon web services (AWS)
Hands-on cloud security enterprise architect, with experience in SIEM/SOC, IAM, cryptography, pentest, network topologies, operating systems, databases, and applications.
Experience in DevSecOps analysis to discover vulnerabilities in software, identifying CI/CD risks gaps and recommending secure-coding process (S-SDLC).