4. Comparando BSD e Linux

Então, qual é realmente a diferença entre, digamos, o Debian Linux e o FreeBSD? Para a maioria dos usuários, a diferença é surpreendentemente pequena: Ambos são sistemas operacionais estilo UNIX®. Ambos são desenvolvidos por projetos não comerciais (isto não se aplica a diversas outras distribuições Linux, é claro). Nas próximas sessões vamos olhar para o BSD e compará-lo ao Linux. As descrições se aplicam principalmente ao FreeBSD, que representa aproximadamente 80% das instalações de BSD, mas as diferenças do NetBSD, OpenBSD e Dragon FlyBSD são pequenas.

4.1. Quem é o dono do BSD?

Nenhuma pessoa ou empresa é proprietária do BSD. Ele é criado e distribuído por uma comunidade de colaboradores altamente técnica e comprometida espalhada ao redor do mundo. Alguns dos componentes do BSD são projetos de código aberto com seus próprios licenciamentos e gerenciados por diferentes mantenedores.

4.2. Como o BSD é desenvolvido e atualizado?

Os kernels dos BSDs são desenvolvidos e atualizados seguindo o modelo de desenvolvimento Open Source. Cada projeto mantém uma árvore com código fonte publicamente acessível, que contém todo o código fonte do projeto, incluindo documentação e outros arquivos incidentais. Os usuários podem obter uma cópia completa de qualquer versão.

Um grande número de desenvolvedores por todo o mundo contribuem com melhorias ao BSD. Eles estão divididos em três categorias:

  • Contributors escrevem código ou documentação. Eles não têm permissão para adicionar código diretamente ao repositório principal de código fonte. Para que seu código seja incluído no sistema, ele deve ser revisado e verificado por um desenvolvedor registrado, conhecido como committer.

  • Committers são desenvolvedores com acesso de gravação no repositório principal de código fonte. Para se tornar um committer, um indivíduo deve mostrar habilidade na área em que está ativo.

    Fica a critério do bom senso individual de cada committer a decisão se eles devem obter ou não um consenso antes de enviar alterações para o repositório de código fonte. Em geral, um committer experiente pode fazer alterações que sejam inquestionavelmente corretas sem obter consenso. Por exemplo, um committer do projeto de documentação pode corrigir erros tipográficos ou gramaticais sem revisão. Por outro lado, espera-se que os desenvolvedores que realizam mudanças complexas ou muito extensas enviem suas alterações para revisão antes de enviá-las para o repositório de código fonte. Em casos extremos, um membro do Core Team com uma função tal como a de arquiteto principal, pode ordenar que as alterações sejam removidas do repositório, num processo conhecido como backing out. Todos os committers recebem emails que descrevem cada commit individual, portanto não é possível enviar alterações para o repositório de código fonte em segredo.

  • O Core Team. O FreeBSD e o NetBSD possuem uma equipe principal (Core team) que gerenciam o projeto. As equipes principais evoluíram ao longo dos projeto e a sua função nem sempre está bem definida. Não é necessário ser um desenvolvedor para ser um membro da equipe principal, embora isto seja normal. As regras para a equipe principal variam de um projeto para o outro, mas no geral elas têm mais voz ativa sobre a direção do projeto do que os demais membros tem.

Esse arranjo difere do Linux de várias maneiras:

  1. Ninguém controla o conteúdo do sistema. Na prática, essa diferença é superestimada, uma vez que o arquiteto principal pode exigir que o código seja removido ou substituído, e mesmo no projeto Linux, várias pessoas podem fazer alterações.

  2. Por outro lado, existe um repositório central, um lugar único no qual você pode encontrar todo o código fonte do sistema operacional, incluindo todas as versões mais antigas.

  3. Os projetos BSDs mantêm todo o Sistema Operacional, e não apenas o kernel. Essa distinção é apenas marginalmente útil: nem o BSD e nem o Linux são úteis sem aplicativos. Os aplicativos usados no BSD são frequentemente os mesmos aplicativos usados no Linux.

  4. Como resultado da manutenção formal de um único repositório SVN com o código fonte, o desenvolvimento do BSD é claro e é possível acessar qualquer versão do sistema por número de release ou por data. O SVN também permite atualizações incrementais no sistema: por exemplo, o repositório do FreeBSD é atualizado cerca de 100 vezes por dia. A maioria dessas mudanças é pequena.

4.3. Releases do BSD

O FreeBSD, o NetBSD e o OpenBSD fornecem o sistema em três diferentes releases. Como no Linux, os releases recebem um número como 1.4.1 ou 3.5. Além disso, o número da versão tem um sufixo indicando sua finalidade:

  1. A versão de desenvolvimento do sistema é chamada de CURRENT. O FreeBSD atribui um número a CURRENT, por exemplo, FreeBSD 5.0-CURRENT. O NetBSD usa um esquema de nomenclatura ligeiramente diferente e acrescenta um sufixo de uma única letra que indica mudanças nas interfaces internas, por exemplo, o NetBSD 1.4.3G. O OpenBSD não atribui um número (OpenBSD-current). Todo novo desenvolvimento no sistema entra neste branch.

  2. Em intervalos regulares, entre duas e quatro vezes por ano, os projetos lançam uma versão RELEASE do sistema, a qual é disponibilizada por meio de CD-ROMs e por meio de download gratuito em sites FTP, por exemplo, OpenBSD 2.6-RELEASE ou NetBSD 1.4-RELEASE. A versão RELEASE destina-se a usuários finais e é a versão normal do sistema. O NetBSD também fornece versões de correção (Patch Releases) com um terceiro dígito, por exemplo, o NetBSD 1.4.2.

  3. A medida que os erros são encontrados em uma versão RELEASE, eles são corrigidos e as correções são adicionadas ao repositório SVN. No FreeBSD, a versão resultante é chamada de STABLE, enquanto no NetBSD e OpenBSD continua sendo chamada de versão RELEASE. Novos recursos menores também podem ser adicionados a essa branch após um período de teste na branch CURRENT. Patches de segurança e outras correções de bugs importantes também são aplicadas a todas as versões RELEASE suportadas.

Por outro lado, o Linux mantém duas árvores de código separadas: a versão estável e a versão de desenvolvimento. Versões estáveis têm um número de versão menor par, como por exemplo 2.0, 2.2 ou 2.4. Versões de desenvolvimento têm um número de versão menor ímpar, como por exemplo 2.1, 2.3 ou 2.5. Em cada caso, o número é seguido por um outro número que designa a release exata. Além disso, cada fornecedor adiciona seus próprios programas e utilitários de área de usuário, portanto, o nome da distribuição também é importante. Cada fornecedor de distribuição também atribui números de versão à distribuição, portanto, uma descrição completa seria algo como TurboLinux 6.0 com kernel 2.2.14 .

4.4. Quais versões do BSD estão disponíveis?

Em contraste com as numerosas distribuições do Linux, existem apenas quatro grandes distribuições BSD de código aberto. Cada projeto BSD mantém seu próprio repositório de código fonte e o seu próprio kernel. Porém na prática, parece haver menos divergências do código entre os projetos BSD do que no Linux.

É difícil categorizar os objetivos de cada projeto: as diferenças são muito subjetivas. Basicamente,

  • O FreeBSD visa o alto desempenho e a facilidade de uso pelos usuários finais, e é um dos favoritos dos provedores de conteúdo da web. Ele pode ser executado em diversas plataformas e tem significativamente mais usuários do que os outros projetos.

  • O NetBSD visa a máxima portabilidade: é claro que roda o NetBSD. Ele pode ser executado em diversas plataformas de hardware, de palmtops até grandes servidores, e até mesmo já foi usado em missões espaciais da NASA. É uma escolha particularmente boa para rodar em hardware antigo que não seja Intel®.

  • O OpenBSD visa a segurança e a pureza de código: ele usa uma combinação do conceito de código aberto ao de revisões rigorosas de código para criar um sistema que seja comprovadamente correto, tornando-o a escolha preferida de organizações preocupadas com segurança, tais como bancos, bolsas de valores e departamentos do governo dos EUA. Tal como o NetBSD, ele pode ser executado em várias plataformas.

  • O DragonFlyBSD tem como objetivo o alto desempenho e a escalabilidade sob todos os aspectos, desde um sistema de um único nó até um sistema altamente clusterizado. O DragonFlyBSD tem várias metas técnicas de longo prazo, mas o foco está em fornecer uma infraestrutura compatível com SMP que seja fácil de entender, manter e desenvolver.

Também existem dois sistemas operacionais BSD UNIX® que não são de código aberto, o BSD/OS e Mac OS® X da Apple:

  • O BSD/OS foi o mais antigo dos sistemas derivados do 4.4BSD. Não era um sistema de código aberto, embora as licenças do código-fonte estivessem disponíveis a um custo relativamente baixo. Assemelhava-se ao FreeBSD de várias maneiras. Dois anos após a aquisição da BSDi pela Wind River Systems, o BSD/OS não conseguiu sobreviver como um produto independente. O suporte e o código-fonte ainda podem estar disponíveis por parte da Wind River, mas todo desenvolvimento novo está focado no sistema operacional embarcado VxWorks.

  • O Mac OS® X é a versão mais recente do sistema operacional para os equipamentos Mac® da Apple®. O núcleo BSD deste sistema operacional, Darwin, está disponível como um sistema operacional de código aberto totalmente funcional para computadores x86 e PPC. No entanto, o sistema gráfico Aqua/Quartz e muitos outros aspectos proprietários do Mac OS® X continuam fechados. Vários desenvolvedores do Darwin também são committers do FreeBSD, e vice-versa.

4.5. Como a licença BSD difere da licença GNU Publica?

O Linux está disponível sob a Licença Pública Geral GNU (GPL), que é projetada para eliminar o software de código fechado. Em particular, qualquer trabalho derivado de um produto lançado sob a GPL também deve ser fornecido com o código fonte, se solicitado. Por outro lado, a licença BSD é menos restritiva: é permitida a distribuição somente dos binários. O que é particularmente atraente para aplicativos embarcados.

4.6. O que mais eu deveria saber?

Como menos aplicativos estão disponíveis para o BSD do que para o Linux, os desenvolvedores do BSD criaram um pacote de compatibilidade com o Linux, o qual permite que os programas Linux sejam executados sob o BSD. O pacote inclui tanto as modificações do kernel, necessárias para executar corretamente as chamadas do sistema Linux e quanto os arquivos de compatibilidade do Linux, como a biblioteca C. Não há diferença perceptível na velocidade de execução entre um aplicativo Linux em execução em uma máquina Linux nativa e um aplicativo Linux em execução em uma máquina BSD, contanto que ambas tenham o mesmo hardware.

A natureza do BSD de ser um sistema em que tudo é provido por um único fornecedor significa que as atualizações são muito mais fáceis de se lidar do que frequentemente ocorre no caso no Linux. O BSD lida com as atualizações das versões das bibliotecas fornecendo módulos de compatibilidade para as versões anteriores, portanto, é possível executar binários bastante antigos sem problemas.

4.7. Qual devo usar, BSD ou Linux?

O que tudo isso significa na prática? Quem deve usar o BSD, quem deve usar o Linux?

Esta é uma pergunta muito difícil de responder. Aqui estão algumas diretrizes:

  • Se não está quebrado, não conserte: Se você já usa um sistema operacional de código aberto e está feliz com ele, provavelmente não existe nenhuma razão para mudar.

  • Os sistemas BSD, em particular o FreeBSD, podem ter um desempenho notavelmente superior ao Linux. Mas isto não é uma verdade absoluta. Em muitos casos, há pouca ou nenhuma diferença no desempenho. E em alguns casos, o Linux pode ter um desempenho melhor que o FreeBSD.

  • Em geral, os sistemas BSD têm a reputação de oferecer uma melhor confiabilidade, principalmente como resultado de ter uma base de código mais madura.

  • Os projetos BSD têm uma reputação melhor pela qualidade e completude da sua documentação. Os vários projetos de documentação visam fornecer uma documentação que é atualizada constantemente, disponibilizada em muitos idiomas, e que cobre todos os aspectos do sistema.

  • A licença BSD pode ser mais atraente que a GPL.

  • O BSD pode executar a maioria dos binários do Linux, já o Linux por sua vez não pode executar binários do BSD. Muitas implementações do BSD também podem executar binários de outros sistemas semelhantes ao UNIX®. Como resultado, pode ser mais fácil migrar de outros sistemas para o BSD do que seria migrar para o Linux.

4.8. Quem fornece suporte, serviços e treinamento para o BSD?

A BSDi / FreeBSD Mall, Inc. fornece contratos de suporte para o FreeBSD já há quase uma década.

Além disso, o website de cada um dos projetos possui uma lista de consultores disponíveis para contratação: FreeBSD, NetBSD, and OpenBSD.

Este, e outros documentos, podem ser obtidos em ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/

Para perguntas sobre FreeBSD, leia a documentação antes de contatar <questions@FreeBSD.org>.

Para perguntas sobre esta documentação, envie e-mail para <doc@FreeBSD.org>.