O que é Open Source, vantagens e exemplos?
Algumas pessoas gostam de saber o significado do que elas usam, do que elas lidam no seu dia a dia e em meio ao universo de termos comuns, um é cada vez mais frequente, mas pouca gente sabe exatamente o que é. Estamos falando de software open source.
Você consegue explicar o que é open source? Quais as vantagens desse tipo de software ou as diferenças para outros tipos? Ou ainda, dar exemplos dos softwares open source mais usados diariamente?
O que é open source?
Open source é o termo que define que o código-fonte do software / programa ao qual ele se refere, é aberto, ou se preferir pode ser visto / acessado por qualquer pessoa.
De fato, open source é o termo inglês usado para o código-fonte (programação) que é aberto, razão pela qual em português é comum também nomearmos tais programas, como sendo de código aberto.
Especialmente quem não é da área de programação, esse tipo de definição não é muito esclarecedora. Por isso, vamos recorrer a um pouquinho da história da indústria do software, mais especificamente por volta dos anos 1980.
Até então, o conceito que hoje chamamos de software de código aberto, era razoavelmente comum, ainda que na ocasião não fosse assim chamado. Isso porque o foco de empresas como a IBM, era a venda de computadores – o hardware. O software era apenas algo necessário para se poder tirar o proveito das máquinas.
Naquela época, era comum que os poucos programadores e pesquisadores que trabalhavam criando programas para necessidades bem específicas, compartilhassem o código-fonte para que outras pessoas pudessem corrigi-lo e/ou aprimorá-lo e distribuir o programa resultante, beneficiando todos os envolvidos.
Ou seja, lembra essencialmente o que é hoje o modelo open source!
No entanto, foi nesse contexto que surgiram empresas como a Microsoft, que enxergou na prática de desenvolver programação, ocultá-la e impedir o acesso por parte de terceiros e cobrar pelo licenciamento, um negócio promissor.
Nascia um novo paradigma, segundo o qual o software passou a ser um produto independente e passou a ser baseado em código proprietário ou closed source.
Desde então, surgiram vários “tipos” de software ou programas de computador, quanto aos aspectos de seu uso e distribuição e, sobretudo, do código ou programação utilizado neles, mas em termos mais gerais e para o nosso propósito, podemos dividi-los em dois grandes grupos quase opostos: código proprietário ou closed source e código aberto ou open source.
O primeiro grupo é representado por boa parte dos programas que utilizamos comercialmente e até poucos anos atrás, correspondiam a mais de 90% de tudo que se tinha instalado em um computador dentro de uma empresa e até mesmo em ambiente doméstico e que é representado pelos softwares proprietários e de código fechado.
Quando você utiliza um programa de qualquer natureza (sistema operacional, editor de texto, cliente de e-mail, etc), esse software é composto de um código fonte, que é a programação responsável pelo funcionamento, pelos recursos e características do programa usado.
Esse código é compilado, ou ‘traduzido’, para uma linguagem de programação compreensível pelo sistema em que ele é executado.
No caso do software proprietário, esse código não é fornecido e é de exclusivo conhecimento / acesso da equipe de programadores que o criou.
Softwares proprietários e de código fechado ou ainda closed source, proliferaram e foram responsáveis pela Microsoft e tantas outras empresas, serem o que são hoje.
Em linhas gerais, o software closed source pode ter as seguintes características:
-
Apenas o criador do software proprietário pode copiar, inspecionar e alterar seu código;
-
O uso do software proprietário por qualquer pessoa, exige ciência e concordância com os termos de uso, geralmente exibido em algum ponto do processo de instalação ou na primeira execução do programa;
-
Para utilização, é preciso pagar / adquirir uma licença;
-
Entre as muitas restrições impostas nesses termos, geralmente as mais importantes se referem aos aspectos de comercialização, cópia e redistribuição;
-
Não é permitido o uso do software fora do escopo expressamente descrito nos termos de uso.
Como é de se imaginar, até pela nossa explicação anterior, o software livre ou de código aberto, pode ser o oposto desse modelo em vários aspectos
Vamos entender melhor como isso funciona a seguir.
Principais características do software Open Source
Contar um pouco da história do mais popular exemplo de programa open source, ajuda entender bem o que é o conceito por trás disso.
No início dos anos 90, na Universidade de Helsinque, na Finlândia, Linux Torvald criou o sistema operacional Linux a partir do Unix, sob a licença “GNU General Public License”, a qual fornece uma das muitas designações e parâmetros para licenças de software e que foi criada por Richard Stallman da Free Software Foundation.
A partir daí, muitas pessoas ao redor do mundo baixaram o código-fonte do kernel Linux e começaram a trabalhar no projeto.
A maioria, eram programadores e pesquisadores na área e por terem acesso ao código-fonte, analisaram-no, aprenderam-no e fizeram modificações para melhorá-lo.
Durante aproximadamente três anos Torvalds recebeu todas as alterações e contribuições e incorporou várias delas na versão original, lançando então a versão 1.0 do Linux em 1994.
A GPL ou GNU General Public License, é o tipo de licença predominantemente usada em projetos de código aberto, embora existam outros licenciamentos diferentes.
Entre os diversos aspectos contidos na licença, os termos determinam que se ocorrer alguma modificação em um programa de código aberto, a distribuição do programa alterado também deve distribuir o código fonte que foi alterado. Ou seja, ninguém poderia usar código aberto para produzir código proprietário a partir dele.
Mas o aspecto mais interessante relativo ao Open Source, é a atuação colaborativa que normalmente está associada e que vimos acontecer no “nascimento” do Linux e que permanece até os dias de hoje como uma das suas maiores vantagens.
Normalmente há uma comunidade global de desenvolvedores que doa seu tempo e seu trabalho, em prol de produzir melhorias no código original, resolvendo e corrigindo problemas e implementando novas funcionalidades e melhorias.
Assim, contrariamente aos softwares proprietários em que as novas versões, updates e patches só são divulgados pela empresa que criou o software, no caso do software de código aberto, alterações de toda ordem podem vir literalmente a qualquer momento e de qualquer parte do mundo.
Esse caráter do software livre, aproxima-o enormemente de um conceito plural e orientado às reais necessidades dos usuários.
Em termos mais objetivos, um programa Open Source, apresenta os seguintes requisitos segundo a Open Source Iniciative:
-
Livre distribuição – a licença não pode impor nenhuma restrição quanto a venda ou distribuição gratuita do programa, seja como componente de outro programa ou não;
-
Código fonte – o programa fornecido deve conter seu código-fonte, mesmo que seja obtido compilado. Quando compilado, deve haver meios para obtenção do código fonte, o qual deve ser legível por parte de qualquer programador ou pessoa que dele faça uso;
-
Programas derivados – a licença associada, deve permitir modificações e trabalhos derivados, bem como garantir que eles sejam distribuídos sob os mesmos termos da licença vinculada ao código-fonte original;
-
Integridade do autor do código – a licença não pode restringir a distribuição do código-fonte modificado sob quaisquer condições ou restrições, sob a pena de alterar a característica de software de código aberto, em software proprietário. A licença de maneira inequívoca, deve garantir a distribuição do programa que foi originário do código-fonte modificado. Porém, pode-se requerer que programas derivados tenham um nome diferente ou diferente número de versão do programa do qual se originaram;
-
Discriminação a pessoas ou grupos – a licença não pode conter nenhum aspecto que caracterize ato ou condição de uso discriminatório a qualquer pessoa ou grupo de pessoas;
-
Discriminação a áreas de atuação – a licença de um Open Source, não pode estabelecer restrições de nenhuma natureza, quanto ao uso de programas Open Source, seja ela uma empresa, uma ONG, uma repartição pública qual for sua atuação e propósito social;
-
Distribuição da Licença – todas as pessoas ou organizações privadas, públicas ou governamentais para as quais o programa é distribuído, devem ter seus direitos de uso assegurados, sem que seja necessário qualquer licença adicional;
-
Licença não específica a um produto – direitos vinculados a um programa, não podem requerer que o programa em questão seja parte de uma distribuição de outros programas quaisquer. Se eventualmente o programa é extraído de outro de que faça parte, aqueles para quem o programa é redistribuído, têm direitos iguais aos que constam da distribuição do programa original;
-
Licença não restrinja outros programas – não podem haver restrições ou obrigações na licença quanto a outros programas que eventualmente sejam distribuídos conjuntamente ao programa ao qual a licença se aplique. Ou seja, não deve interferir no modelo de licenciamento de outros programas;
-
Neutralidade em relação a tecnologia – a licença não deve conter condições que imponham a utilização de alguma tecnologia específica, estilo ou interface que o programa deve seguir ou conter.
Software Livre e software open source, não são sinônimos!
Quem não está muito familiarizado com as terminologias Free Software (Software Livre) e Open Source (Código Aberto), normalmente quando as conhece, costuma entendê-las como significando a mesma coisa.
Mas não são!
Em termos práticos e em alguns casos, podem acabar por ter os mesmos efeitos, mas há sutilezas que as diferenciam.
O primeiro ponto que se confunde da definição de ambos, é aquele defendido por Richard Stallman, um dos defensores mais conhecidos de ambos, que tem relação com gratuidade.
A palavra “free” em inglês tem a ambígua tradução de “liberdade” e “grátis”, conforme o contexto em que é usada.
No caso, Free Software se refere a liberdade. Já um software gratuito é um programa gratuitamente copiado e distribuído em sua forma executável, mas que não obrigatoriamente é fornecido o acesso ao seu código-fonte e tampouco, pode haver permissão de alteração e estudo da programação envolvida.
Stallman vai além e ressalta que todo Software Livre, é Open Source, mas a recíproca não é necessariamente verdadeira.
A GPL (GNU General Public License) é uma licença de software livre que permite que qualquer pessoa use, modifique e distribua programas. Foi criada pela Free Software Foundation (FSF) para promover a colaboração e a liberdade no desenvolvimento de software e que se baseia em quatro princípios ou liberdades essenciais:
-
Liberdade 0 – é a liberdade primária ou essencial e que estabelece que o usuário tem liberdade para executar o programa para qualquer finalidade / propósito;
-
Liberdade 1 – é a que garante ao usuário poder estudar o funcionamento do software e se for do seu desejo, poder adaptá-lo às suas necessidades, o que pressupõe acesso ao código-fonte (open source, portanto);
-
Liberdade 2 – é a que permite a redistribuição de cópias do programa, a fim de ajudar outros usuários que necessitem do software;
-
Liberdade 3 – é a que libera um usuário para distribuir as cópias modificadas para outros usuários, de forma que a comunidade possa se beneficiar das mudanças feitas, o que também implica acesso ao código-fonte.
Possivelmente o exemplo mais popular de software sob essa GPL, é o kernel do Linux e que dá origem às inúmeras distribuições Linux conhecidas e que apesar de ser comum que muitas sejam grátis, o modelo adotado não obriga que sejam sempre assim.
Quais as vantagens do software Open Source?
Embora algumas das principais vantagens desse modelo sejam controvertidas e questionadas, particularmente por quem está no polo oposto, ou seja, quem produz código proprietário, há alguns benefícios e que acabam sendo quase fundamentos daqueles que desenvolvem e defendem o código aberto:
-
Transparência – na medida que a comunidade de utilizadores tem acesso à programação por trás de cada programa executado, é possível saber exatamente tudo o que ele faz, bem como há a garantia de que não está ocorrendo nada que não seja permitido ou indesejável, como por exemplo, coleta de dados pessoais, ação que viola o sigilo e a privacidade;
-
Conhecimento – as tecnologias e a forma como as coisas acontecem em termos de programação, não são exclusivas de quem programou e assim é possível compartilhar o conhecimento contido no código;
-
Segurança – devido ao fato de que o código é público, qualquer pessoa com os conhecimentos necessários pode contribuir para melhorar e mesmo corrigir problemas, bugs e vulnerabilidades de segurança, o que só pode ser feito pelos programadores originais quando se tem código proprietário;
-
Manutenção – manter o software atualizado, bem como fornecer melhorias, não são situações que dependem apenas do fornecedor do programa, mas possibilidades ao alcance da comunidade de desenvolvedores;
-
Custo – embora não seja garantida a gratuidade em 100% dos casos, é muito próximo disso o número de programas nessa condição, o que é um ponto favorável à democratização informática;
-
Flexibilidade – o software é mais flexível e personalizável, já que o código pode ser modificado para atender às necessidades e desejos de diferentes usuários, como é o caso das muitas distros Linux;
-
Inovação – a colaboração compartilhada de comunidades globais de desenvolvedores, geralmente acarreta um maior grau de inovação;
-
Melhorias – outra consequência direta do caráter aberto e colaborativo, são os ciclos menores e mais frequentes de melhorias contínuas.
Open Source democratizando o acesso à informação
Uma das características mais marcantes e que foi responsável pela democratização do acesso, foi a gratuidade que geralmente está associada, ainda que não seja condição obrigatória.
Durante os anos de maior expansão da Internet, muitas das tecnologias que serviram de sustentação e ao seu desenvolvimento, foram baseadas em modelos open source.
Assim, exceto pelo hardware, quase toda a infraestrutura necessária para hospedar um website, pode ser baseada em software de código aberto e em alguns casos, praticamente sem custo:
-
Sistema operacional – há diferentes distribuições Linux que podem ser usadas como sistema operacional do servidor de hospedagem;
-
Web server – um dos servidores web mais populares, é o Apache! Ele é desenvolvido pela Apache Software Foundation, uma organização sem fins lucrativos que mantém diversos projetos de código aberto, incluindo o famoso Apache HTTP Server, usado para hospedar sites e aplicações web. Uma alternativa, é o NGINX;
-
Banco de dados – outro exemplo de software de código aberto e muito usado, é o banco de dados MySQL. Mas além dele, há uma série de outros bancos de dados gratuitos e open source, como o MongoDB, MariaDB, PostgreSQL e SQLite, para citar apenas os mais conhecidos;
-
E-mail – o Postfix e o Exim, são dois dos MTAs (Mail Transfer Agent, ou agente de transferência de e-mail, em português) mais usados para receber, rotear e entregar mensagens de e-mail, baseiam-se em licenças gratuitas e de código aberto;
-
Programação – o PHP consagrou-se como uma das linguagens de programação mais usadas para criação de sites, inclusive para desenvolvimento de muitos CMSs. Outra linguagem bastante usada na Web e também open source, é o Phyton;
-
Plataforma de desenvolvimento – alguns dos CMSs mais usados do mundo, incluindo o WordPress, o mais popular há anos, além do Joomla, Drupal, Moodle e Magento;
Na outra ponta, encontramos o usuário que acessa os sites hospedados nesse ambiente.
O sistema operacional mais usado no mundo, que equipa muitos smartphones, é também o mais popular representante do software de código aberto. Se você não sabe, estamos falando o Android!
Mas ainda que se use um desktop Windows, é possível surfar na Web com um navegador Firefox, Vivaldi, ou outras boas opções não proprietárias.
Portanto, os programas criados sob o conceito de código-fonte aberto, são bem mais do que uma filosofia interessante. Constituem uma realidade prática e presente no quotidiano de muitos.
Conclusão
O desenvolvimento e uso de software open source, é essencial para a transparência, a segurança, a privacidade, a inovação e acesso à transformação digital.