FreeBSD é um sistema operacional do tipo Unix e uma iteração das distribuições Unix mais antigas, mais conhecidas como Research Unix. Ele é de código aberto e disponível publicamente para livre, e na verdade apenas uma das muitas Distribuições de Software Berkeley (BSD abreviado, portanto, o SO é chamado de FreeBSD), sendo as outras iterações notáveis o OpenBSD, NetBSD e DragonFly BSD.
Linux, como uma derivação do Unix, naturalmente tem muito em comum com os BSDs. Como o BSD, as distribuições Linux são livres e open-source também. Apesar das semelhanças fundamentais, o Linux ofuscou amplamente os BSDs em popularidade, com mais de 74% dos smartphones modernos sendo baseados no Linux.
Então isso levanta a questão: Se BSD e Linux são apenas iterações de pesquisa Unix, o que exatamente os torna diferentes?
Bem, as diferenças entre os dois estão nos fundamentos, e as diferenças são muito grandes. Mas lê-los todos em um único post seria bastante entediante para os leitores. Portanto, este post vai focar apenas nos fundamentos e deixar os detalhes intrincados de fora por uma questão de brevidade e para não intimidar os novos leitores.
But what is Linux, really?
The first thing that many people get wrong is that Linux is a kernel, not an operating system. Então isso faz dele apenas uma parte do SO, não do próprio SO.
Vamos discutir os Kernels por um segundo. Os kernels servem como o pivô em qualquer sistema operacional, já que retém todo o código subjacente sobre o qual esse sistema operacional está. Ele permite e agiliza a interação entre os componentes de hardware e software de um sistema, gerencia suas solicitações de entrada/saída de e para as aplicações de software, e é responsável por lidar com os dispositivos de hardware também.
Em suma, um kernel é a característica mais integral de qualquer sistema operacional em que se baseia, sendo assim retraído para uma parte altamente protetora na memória do sistema onde toda e qualquer solicitação de acesso de aplicativos é negada, barrada a alguns poucos que são integrais ao funcionamento do sistema.
Agora compreendemos o que é um kernel, podemos avançar e ver o que o Linux, como um kernel, faz no sistema operacional.
Kernel Linux dentro de um sistema operacional
entre os sistemas operacionais mais populares baseados em Linux estão o Debian, Ubuntu, Fedora, e Deepin. Então, sempre que você ouvir alguém dizer que usa Linux, saiba que na verdade é uma dessas distribuições. Estas distribuições são “baseadas em Linux” porque elas são construídas sobre o kernel Linux. O ajuste ao kernel junto com as novas aplicações carregadas nele torna cada distribuição diferente de outra.
O que é BSD, e como ele é diferente do Linux?
Como mencionado anteriormente, as diferentes distribuições de BSD são todos sistemas operacionais. E isso faz do BSD, como do Linux, um kernel.
Mas para tornar as coisas complicadas, o BSD também é um sistema operacional autônomo, o que o Linux não é. Vamos explicar como exatamente.
Para as distribuições BSD, vários programas são adicionados ao kernel do BSD. Esta combinação é então lançada como um pacote autônomo, completo que precisa ser instalado, e a coisa está pronta para ir. Então, a diferença principal entre as distribuições BSD como FreeBSD, OpenBSD, etc., é por causa dos programas adicionados ao sistema operacional do kernel. Para baixar pacotes de software adicionais, os usuários do BSD usam o sistema de portes, que mantém esses pacotes na forma do código fonte. O código fonte é compilado pelo sistema cada vez que o software é lançado. Embora isso possa ser incômodo, especialmente quando executado por mais tempo e códigos mais intrincados, os sistemas BSD podem pular a etapa de compilação a cada lançamento inteiramente se o programa for instalado em um estado binário, aliviando assim o processo em grande parte.
Linux é diferente do BSD no que diz respeito a que cada uma de suas distribuições utiliza programas completamente diferentes, e as distribuições não possuem um repositório centralizado para pacotes de software, já que cada distribuição possui seu próprio repositório.
Diferenças no Licenciamento
Uma das diferenças fundamentais entre BSD e Linux é a do sistema de Licenciamento sob o qual suas distribuições são lançadas.
Quando você baixa software do repositório Ports no BSD ou instala uma distribuição como um todo, o software ou distribuição é alocado a você sob a licença do BSD, que é um sistema de licença personalizado empregado pelos desenvolvedores do BSD. Enquanto o BSD é completamente aberto e gratuito a partir de agora, o sistema de licenciamento BSD permite que os desenvolvedores declarem o BSD de código fechado em um momento de aviso prévio. Como um usuário do FreeBSD, você não tem direito legal a novas versões do BSD devs. No entanto, os desenvolvedores do BSD tornaram público que eles têm toda intenção de mantê-lo de código aberto no futuro.
Linux distribuições são lançadas sob a GNU General Public License (GPL). Sob este sistema de licenciamento, os desenvolvedores do Linux são legalmente obrigados a liberar toda e qualquer instância de alterações feitas no kernel do Linux. O sistema de licenciamento, em essência, assegura que o Linux permaneça de código aberto, não importa quais alterações sejam feitas ao próprio kernel.
Por que o Linux é mais popular? (Spoilers: Software Availability)
Se você esteve se perguntando este tempo todo porque você não ouviu falar tanto sobre BSDs quanto sobre distribuições Linux, aqui está o porquê: quando se trata de compatibilidade de software, o Linux o derruba do parque. Para cada software por aí há uma versão compatível com Linux. Este não é o caso do FreeBSD, que permanece largamente negligenciado por essa razão.
O kernel Linux torna a escrita e distribuição de programas de software mais simples em comparação com outros kernels, portanto os desenvolvedores estão naturalmente inclinados a trabalhar em prol de versões Linux. A distribuição, especialmente, é ainda facilitada pelo sistema de pacotes binários pré-instalados que facilita. Linux permite que pacotes de software sejam baixados e instalados através de gerenciadores de pacotes como apt, yum, Pacman, etc.
Como comparados à distribuição de software em Linux, os usuários do BSD têm isso muito difícil. Os pacotes de software são primeiro baixados como códigos fonte no BSD através do sistema de portes. Estes códigos-fonte são então compilados cada vez que são lançados, um processo que consome muito tempo e é frustrante na era moderna onde o software é instalado com um clique de um botão. Isso é igualmente frustrante para os desenvolvedores, pois eles têm que se esforçar muito para fazer a compilação o mais rápido possível.
Embora a introdução de pacotes binários pré-compilados tenha em grande parte mitigado o processo de obtenção de software no FreeBSD, a disponibilidade de software ainda permanece um enorme problema para os BSDs.
Escolha entre Linux e BSD
Aparte dos sistemas operacionais Windows e IOS mais comuns, as distribuições de Linux estão à frente de qualquer outro sistema operacional por aí. É livre, de código aberto, e tem tudo a oferecer que o FreeBSD tem, sem as limitações.
BSD e Linux são muito mais comuns do que são diferentes, sendo o licenciamento e a distribuição de software as únicas diferenças principais. Ainda assim, apesar das semelhanças, usar um é um trade-off de outro.
Por um lado, o FreeBSD mantém uma biblioteca de ferramentas e dependências em todas as distribuições, facilitando aos desenvolvedores a iteração dos conteúdos e a criação de aplicativos próprios. É aqui que o FreeBSD tem uma vantagem considerável sobre o Linux, pois a suíte GNU incluída no Linux não permite isso.
Mas, por outro lado, a falta de compatibilidade e disponibilidade de software dificulta seriamente a experiência com o FreeBSD. Este problema pode ser resolvido usando o pacote de compatibilidade Linux, que permite que o software Linux seja executado em distribuições BSD, mas este é um passo extra que ainda impede a experiência, no entanto.
No que diz respeito ao licenciamento, a licença Linux GPL é muito mais restritiva do que o licenciamento BSD. Desenvolvedores ou usuários não podem fazer variações no kernel ou código fonte do Linux sem torná-lo público. Os usuários do BSD não têm tais obrigações; portanto os desenvolvedores devem pelo menos tentar o BSD. Ser capaz de manter o código fonte privado é uma vantagem considerável que o Linux falha em fornecer.
O licenciamento para distribuições Linux é tendencioso em favor dos usuários, pois confirma que qualquer desenvolvimento feito para melhorar as aplicações para o sistema será disponibilizado aos usuários. O licenciamento do BSD, por outro lado, é mais parecido com o licenciamento padrão, permitindo que os usuários instalem os BSDs gratuitamente, mas não obrigando os desenvolvedores a tornar seu conteúdo público.
Nossa Recomendação
Recomendamos uma distribuição Linux se você for utilizá-la para fins gerais. A sua compatibilidade de software é razão suficiente para nós a recomendarmos. No entanto, se você é um fabricante, BSD é a opção certa para você. Ele tem um repositório centralizado de software e é bem calculado pela sua confiabilidade. E quanto ao licenciamento do BSD, você não terá que se preocupar em fazer seu trabalho de código aberto.
Se você optou pelo Kernel Linux, nós recomendaríamos o uso do Ubuntu. Ele é atualizado regularmente a cada seis meses, uma consistência que, na minha opinião, estabelece um grande equilíbrio entre acompanhar os problemas de segurança e não frustrar os usuários.
E se você optar pelo kernel do BSD, nós recomendaríamos o FreeBSD, que é, em geral, a distribuição mais usada do BSD por aí.