O que é software de software livre?
Software de software livre é um software cujo código-fonte é disponibilizado publicamente para qualquer pessoa inspecionar, modificar e distribuir. A Iniciativa de Software Livre fornece a definição amplamente aceita:
"O software de software livre é um software com código-fonte que qualquer pessoa pode inspecionar, modificar e aprimorar. O titular dos direitos autorais concede aos usuários os direitos de estudar, alterar e distribuir o software para qualquer pessoa e para qualquer finalidade, sujeito aos termos de uma licença de software livre.".
Essa definição enfatiza vários princípios principais:
- Disponibilidade do código-fonte: O código-fonte completo deve ser acessível publicamente, não apenas binários executáveis.
- Liberdade para modificar: Os usuários podem alterar o software para atender às suas necessidades, corrigir bugs ou adicionar recursos.
- Direitos de redistribuição: Os usuários podem compartilhar o software com outras pessoas, de forma original ou modificada.
- Termos de licença: Os direitos de uso são definidos por uma licença de software livre que especifica permissões, restrições e obrigações.
O software de software livre difere fundamentalmente do software proprietário, onde o código-fonte permanece secreto, e os direitos de uso são fortemente controlados pelo titular dos direitos autorais.
O modelo de software livre colaborativo
O desenvolvimento de software livre envolve a criação de software colaborativo com vários colaboradores:
Desenvolvimento controlado pela comunidade
- Colaboradores distribuídos: Desenvolvedores de todo o mundo contribuem com código, documentação, teste e suporte.
- Participação voluntária: Muitos colaboradores participam voluntariamente, motivados pela solução de problemas, aprendizado, criação de reputação ou ferramentas de suporte que usam.
- Meritocracia: A influência em projetos normalmente se correlaciona com a qualidade e a quantidade de contribuições em vez da hierarquia organizacional.
- Processos transparentes: O desenvolvimento ocorre em repositórios públicos em que qualquer pessoa pode observar discussões, decisões e alterações.
Fluxos de trabalho colaborativos
- Repositórios públicos: O código é hospedado em plataformas como GitHub, GitLab ou Bitbucket, em que qualquer pessoa pode exibi-lo.
- Acompanhamento de problemas: Bugs e solicitações de recursos são acompanhados publicamente, permitindo que os membros da comunidade identifiquem problemas e proponham soluções.
- Análises de solicitação de pull: Os colaboradores enviam alterações por meio de solicitações de pull que são revisadas por mantenedores e outros membros da comunidade antes da mesclagem.
- Gerenciamento de versão: Os mantenedores coordenam as versões, garantindo estabilidade e compatibilidade ao incorporar contribuições da comunidade.
Modelos de governança de projeto
Diferentes projetos de software livre adotam várias abordagens de governança:
- Ditador benevolente: Um único indivíduo (muitas vezes o fundador) toma decisões finais sobre a direção do projeto (por exemplo, Python com Guido van Rossum historicamente).
- Equipe principal: Um pequeno grupo de mantenedores toma decisões coletivamente através de consenso ou votação.
- Governança de base: Projetos grandes geralmente criam fundações (como Apache Foundation, Linux Foundation) que fornecem estrutura legal, recursos e estruturas de governança.
- Patrocínio corporativo: Muitos projetos de software livre são mantidos principalmente por funcionários de empresas que dependem do software.
Adoção generalizada de software de código aberto
O software de software livre tornou-se onipresente em todos os setores de tecnologia:
Estatísticas de adoção do setor
- Uso da empresa: Mais de 90% de empresas usam software de software livre em ambientes de produção.
- Infraestrutura de Internet: A maioria dos servidores Web são executados no Linux (software livre), servem conteúdo por meio do Apache ou Nginx (software livre) e usam bancos de dados como PostgreSQL ou MySQL (software livre).
- Computação em nuvem: As principais plataformas de nuvem usam e dão suporte extensivamente a tecnologias de software livre — Kubernetes, Docker, Terraform e várias outras ferramentas de software livre formam a base da infraestrutura de nuvem moderna.
- Dispositivos móveis: O Android, o sistema operacional móvel mais popular do mundo, é criado no kernel do Linux e inclui componentes de software livre extensivos.
Composição do stack tecnológico
As pilhas de tecnologia modernas são predominantemente de código aberto:
- Sistemas operacionais: O Linux alimenta a infraestrutura de nuvem, os contêineres e muitos sistemas inseridos.
- Linguagens de programação: Python, JavaScript, Java, Go, Rust, Ruby, PHP— as linguagens mais populares são de software livre.
- Bancos de Dados: PostgreSQL, MySQL, MongoDB, Redis, Elasticsearch dominam as implantações de banco de dados.
- Tecnologias da Web: React, Angular, Vue.js, Express, Django, Rails habilitam o desenvolvimento de aplicativos Web.
- Ferramentas de desenvolvimento: Git, Docker, Kubernetes, Jenkins, VS Code são ferramentas essenciais de desenvolvimento de software livre.
O abraço da Microsoft ao software livre
A Microsoft exemplifica a transformação nas atitudes empresariais em relação ao software livre.
Mudança histórica
A Microsoft historicamente via o software livre como uma ameaça ao seu modelo de negócios de software proprietário. Isso mudou drasticamente na última década, à medida que a empresa reconheceu a importância estratégica do software livre.
Software livre no Azure
O Azure integra extensivamente tecnologias de software livre:
Idiomas e runtimes: O Azure dá suporte a Python, Node.js, Java, PHP, Ruby, Go e outros idiomas de software livre como opções de plataforma de primeira classe.
Bancos de dados: O Azure oferece serviços gerenciados para PostgreSQL, MySQL, MariaDB e Redis, juntamente com ofertas proprietárias.
Orquestração de contêiner: O AKS (Serviço de Kubernetes do Azure) fornece Kubernetes gerenciado, a plataforma de orquestração de contêiner de software livre.
Ferramentas de desenvolvimento: O Azure DevOps integra-se ao Git, ao Jenkins e a outras ferramentas de software livre, enquanto o GitHub (adquirido pela Microsoft) é a maior plataforma do mundo para desenvolvimento de software livre.
Dados e análise: O Azure dá suporte ao Apache Spark, Hadoop, Kafka e outras tecnologias de Big Data de software livre.
Transformação .NET
A plataforma .NET demonstra o compromisso abrangente da Microsoft com o software livre:
.NET de fornecimento aberto: A Microsoft lançou o .NET Core (agora .NET 5+) como software livre sob a licença do MIT, tornando toda a plataforma disponível livremente com o código-fonte. O runtime do .NET, as bibliotecas, os compiladores e as ferramentas são todos de software livre.
Desenvolvimento multiplataforma: Ao tornar o .NET de código aberto, a Microsoft habilitou o desenvolvimento multiplataforma no Windows, Linux e macOS, expandindo drasticamente o alcance do .NET.
Contribuições da comunidade: Os repositórios do .NET no GitHub recebem milhares de contribuições de desenvolvedores fora da Microsoft, com a empresa revisando e aceitando ativamente melhorias da comunidade.
Dependências de software livre: os aplicativos ASP.NET Core normalmente incorporam muitos componentes de software livre:
- Bibliotecas de front-end: jQuery, React, Angular, Vue.js habilitam interfaces ricas de usuário.
- Bibliotecas de utilitários: Newtonsoft.Json, Serilog, AutoMapper e inúmeros outros fornecem funcionalidade comum.
- Estruturas de teste: xUnit, NUnit, Moq dão suporte ao desenvolvimento controlado por teste.
Contribuindo para projetos de software livre
A Microsoft contribui ativamente para projetos de software livre além dos seus próprios:
Kernel do Linux: A Microsoft contribui para o kernel do Linux, melhorando a integração Hyper-V e dando suporte à infraestrutura do Azure.
Kubernetes: A Microsoft é um dos principais colaboradores do Kubernetes, ajudando a moldar a plataforma que alimenta o AKS.
Iniciativas de software livre: A Microsoft patrocina eventos de software livre, financia infraestrutura de software livre crítica e emprega desenvolvedores para trabalhar em tempo integral em projetos de software livre.
Projetos de software livre criados pela Microsoft
Além de contribuir com projetos existentes, a Microsoft cria e libera software significativo como código aberto.
Visual Studio Code: O editor de código mais popular é de software livre, com extensões, temas e melhorias contribuidas por uma comunidade global.
TypeScript: A linguagem da Microsoft para desenvolvimento JavaScript com tipos seguros é de código aberto e amplamente adotada.
PowerShell Core: A estrutura de automação da Microsoft é de software livre e multiplataforma.
.NET Foundation: A Microsoft estabeleceu o .NET Foundation para dar suporte a projetos de software livre no ecossistema do .NET, fornecendo recursos, governança e suporte à comunidade.
Para obter mais informações, consulte o site do .NET Foundation.
Lógica estratégica
O abraço da Microsoft ao software livre reflete decisões estratégicas de negócios:
Adoção do desenvolvedor: Os desenvolvedores preferem ferramentas de software livre e idiomas. Ao dar suporte ao software livre, a Microsoft atrai desenvolvedores para suas plataformas.
Negócios de nuvem: Cargas de trabalho de software livre impulsionam a adoção da nuvem. O excelente suporte de software livre no Azure torna a plataforma mais atraente.
Velocidade de inovação: O software livre permite uma inovação mais rápida por meio de contribuições da comunidade, reduzindo a carga de desenvolvimento da Microsoft.
Crescimento do ecossistema: As comunidades de software livre criam extensões, ferramentas e conhecimentos valiosos que aprimoram o valor da plataforma.
Posicionamento competitivo: Como os concorrentes (AWS, Google Cloud) dão suporte extensivo a software livre, a Microsoft deve corresponder ou exceder seus recursos de software livre.
Por que as organizações escolhem software livre
As organizações selecionam software de software de software livre por vários motivos:
Considerações de custo: A eliminação de taxas de licenciamento reduz os custos diretos, particularmente importantes ao implantar software em escala ou na criação de produtos em que os custos de licenciamento seriam passados aos clientes.
Flexibilidade e controle: O acesso ao código-fonte significa que as organizações podem modificar o software para atender a necessidades específicas, corrigir bugs críticos de forma independente e não estão bloqueadas em linhas do tempo do fornecedor para recursos ou correções.
Transparência e segurança: O código-fonte público permite auditorias de segurança, a revisão da comunidade identifica vulnerabilidades mais rapidamente e a ausência de backdoors ocultos ou coleta de dados fornece confiança.
Evitando o bloqueio do fornecedor: O software de software livre normalmente pode ser implantado em qualquer lugar, reduzindo a dependência de fornecedores específicos e melhorando as posições de negociação.
Suporte da comunidade: Comunidades de software livre ativas fornecem fóruns, documentação, tutoriais e assistência a pares, muitas vezes rivalizando ou excedendo a qualidade do suporte comercial.
Inovação e recursos: As tecnologias de ponta geralmente surgem em software livre primeiro, e as organizações podem contribuir com recursos necessários em vez de esperar por roteiros de fornecedores.
Entender o que é software de software livre e por que ele se tornou tão amplamente adotado fornece contexto essencial para explorar as preocupações que as organizações devem abordar ao implementar componentes de software livre, que a próxima unidade aborda.