                                Explicando o BSD

  Greg Lehey

   <grog@FreeBSD.org>

   Revisao: 804d30f7fa

   FreeBSD is a registered trademark of the FreeBSD Foundation.

   AMD, AMD Athlon, AMD Opteron, AMD Phenom, AMD Sempron, AMD Turion, Athlon,
   Elan, Opteron, and PCnet are trademarks of Advanced Micro Devices, Inc.

   Apple, AirPort, FireWire, iMac, iPhone, iPad, Mac, Macintosh, Mac OS,
   Quicktime, and TrueType are trademarks of Apple Inc., registered in the
   U.S. and other countries.

   Intel, Celeron, Centrino, Core, EtherExpress, i386, i486, Itanium,
   Pentium, and Xeon are trademarks or registered trademarks of Intel
   Corporation or its subsidiaries in the United States and other countries.

   Linux is a registered trademark of Linus Torvalds.

   Motif, OSF/1, and UNIX are registered trademarks and IT DialTone and The
   Open Group are trademarks of The Open Group in the United States and other
   countries.

   SPARC, SPARC64, and UltraSPARC are trademarks of SPARC International, Inc
   in the United States and other countries. SPARC International, Inc owns
   all of the SPARC trademarks and under licensing agreements allows the
   proper use of these trademarks by its members.

   Sun, Sun Microsystems, Java, Java Virtual Machine, JDK, JRE, JSP, JVM,
   Netra, OpenJDK, Solaris, StarOffice, SunOS and VirtualBox are trademarks
   or registered trademarks of Sun Microsystems, Inc. in the United States
   and other countries.

   UNIX is a registered trademark of The Open Group in the United States and
   other countries.

   Many of the designations used by manufacturers and sellers to distinguish
   their products are claimed as trademarks. Where those designations appear
   in this document, and the FreeBSD Project was aware of the trademark
   claim, the designations have been followed by the "(TM)" or the "(R)"
   symbol.

   2018-08-30 11:06:48 +0000 por Edson Brandi.
   Resumo

   No mundo do codigo aberto, a palavra "Linux" e praticamente sinonimo de
   "Sistema Operacional", mas ele nao e o unico sistema operacional UNIX(R)
   de codigo aberto.

   Entao, qual e o segredo? Por que o BSD nao e mais conhecido? Este artigo
   aborda esta e outras questoes.

   Ao longo deste artigo as diferenc,as entre o BSD e o Linux serao
   destacadas desta forma.

   [ Documento HTML em partes / Documento HTML completo ]

     ----------------------------------------------------------------------

   Indice

   1. O que e o BSD?

   2. O que, um verdadeiro UNIX(R)?

   3. Por que o BSD nao e mais conhecido?

   4. Comparando BSD e Linux

1. O que e o BSD?

   BSD e a sigla para "Berkeley Software Distribution". E o nome do codigo
   fonte distribuido pela Universidade da California, Berkeley, que era
   originalmente uma extensao do UNIX(R) desenvolvido pela area de pesquisa
   da AT&T. Diversos projetos de sistemas operacionais de codigo aberto foram
   baseados em uma versao deste codigo, conhecido como 4.4BSD-Lite. Alem
   disso, eles incluem varios pacotes de outros projetos de codigo aberto,
   com destaque para os do projeto GNU. O sistema operacional geralmente
   abrange:

     * O kernel BSD, que lida com o agendamento de processos, gerenciamento
       de memoria, multi processamento simetrico (symmetric multi-processing
       ou SMP), drivers de dispositivos, etc.

     * A biblioteca C, a API base do sistema.

       A biblioteca C do BSD e baseada no codigo de Berkeley, nao no projeto
       GNU.

     * Utilitarios como shells, gerenciadores de arquivos, compiladores e
       linkers (conversores de arquivos compilados em executaveis).

       Alguns utilitarios sao derivados do projeto GNU, outros nao sao.

     * O sistema X Window, que gerencia a interface grafica.

       O sistema X Window usado na maioria das versoes do BSD e mantido pelo
       Projeto X.Org. O FreeBSD permite ao usuario escolher a partir de uma
       variedade de ambientes de desktop, tais como o Gnome, KDE, ou Xfce; e
       gerenciadores graficos (gerenciadores de janelas) mais leves, como
       Openbox, Fluxbox, ou Awesome.

     * Diversos outros programas e utilitarios.

2. O que, um verdadeiro UNIX(R)?

   Os sistemas operacionais BSD nao sao copias ou clones, mas sim derivac,oes
   de codigo aberto do sistema operacional UNIX(R) da AT&T, que tambem e o
   ancestral do moderno UNIX(R) System V. Isto pode surpreende-lo. Como isto
   e possivel, uma vez que a AT&T nunca liberou seu codigo como codigo
   aberto?

   E verdade que o UNIX(R) da AT&T nao e um sistema de codigo aberto e no
   sentido de licenciamento o BSD definitivamente nao e UNIX(R), mas por
   outro lado a AT&T importou fontes de outros projetos, principalmente do
   Grupo de Pesquisa de Ciencias da Computac,ao (Computer Sciences Research
   Group ou CSRG) da Universidade da California em Berkeley, CA. A partir de
   1976, o CSRG comec,ou a liberar fitas de seu software, chamando ele de
   Berkeley Software Distribution ou BSD.

   As primeiras distribuic,oes do BSD consistiam principalmente em programas
   de usuarios mas isso mudou radicalmente quando o CSRG firmou um contrato
   com a Agencia de Pesquisa de Projetos de Defesa Avanc,ados (Defense
   Advanced Research Projects Agency ou DARPA) para atualizar os protocolos
   de comunicac,ao de sua rede, a ARPANET. Os novos protocolos ficaram
   conhecidos como Internet Protocols, posteriormente TCP/IP em virtude dos
   protocolos mais importantes. A primeira implementac,ao amplamente
   distribuida foi parte do 4.2BSD, em 1982.

   Durante a decada de 80 surgiram muitas empresas produtoras de estac,oes de
   trabalho. A maioria preferiu licenciar o UNIX(R) ao inves de desenvolver
   seus proprios sistemas operacionais. Em particular, a Sun Microsystems
   licenciou o UNIX(R) e implementou uma versao do 4.2BSD, a qual eles
   chamaram de SunOS(TM). Quando a propria AT&T comec,ou a comercializar o
   UNIX(R), eles comec,aram com uma implementac,ao de certa forma simples
   chamada de System III, que logo transformou-se no System V. O codigo base
   do System V nao incluia comunicac,ao em rede, entao todas as
   implementac,oes incluiram software adicional do BSD, inclusive o software
   TCP/IP, e tambem utilitarios como o shell csh e o editor vi. Estes
   aprimoramentos ficaram conhecidos como Berkeley Extensions.

   As fitas do BSD continham codigo fonte da AT&T e portanto necessitavam da
   licenc,a dos fontes do UNIX(R). Por volta de 1990, os recursos financeiros
   do CSRG's estavam acabando, e ele foi encerrado. Alguns membros do grupo
   decidiram liberar o codigo do BSD, que era codigo aberto, sem o codigo
   proprietario da AT&T. Isso finalmente aconteceu com a fita Networking Tape
   2, tambem conhecida como Net/2. O Net/2 nao era um sistema operacional
   completo: faltava cerca de 20% do codigo fonte do kernel. Um dos membros
   do CSRG, William F. Jolitz, escreveu o codigo que faltava e o liberou no
   inicio de 1992 sob o nome de 386BSD. Ao mesmo tempo, um outro grupo de ex
   integrantes do CSRG formaram uma empresa comercial chamada Berkeley
   Software Design Inc. e liberaram uma versao beta de um sistema operacional
   chamado BSD/386, o qual era baseado nos mesmos fontes. Mais tarde o nome
   deste sistema operacional foi alterado para BSD/OS.

   O 386BSD nunca chegou a ser um sistema operacional estavel. Ao inves
   disso, dois outros projetos surgiram a partir dele em 1993: NetBSD e
   FreeBSD. Este dois projetos divergiam originalmente na questao da espera
   pelas melhorias no 386BSD: o pessoal do NetBSD iniciou no comec,o daquele
   ano, e a primeira versao do FreeBSD nao ficou pronta antes do final do
   ano. Neste meio tempo o codigo base ficou diferente um do outro o
   suficiente para tornar dificil sua fusao. Alem disso, os projetos tinham
   objetivos diferentes, como veremos adiante. Em 1996, o OpenBSD surgiu a
   partir do NetBSD, e em 2003, o DragonFlyBSD surgiu a partir do FreeBSD.

3. Por que o BSD nao e mais conhecido?

   Por uma serie de razoes, o BSD e relativamente desconhecido:

    1. Os desenvolvedores do BSD estao mais interessados em aprimorar o seu
       codigo do que em divulga-lo.

    2. Grande parte da popularidade do Linux se deve a fatores externos ao
       projeto Linux, como a midia e empresas que foram criadas para prover
       servic,os Linux. Ate pouco tempo atras os BSD de codigo aberto nao
       tinham este tipo de proposta.

    3. Em 1992 a AT&T processou a BSDI, que comercializava o BSD/386,
       alegando que o produto continha codigo protegido por direitos autorais
       da AT&T. O caso foi encerrado fora dos tribunais em 1994, mas o
       fantasma do litigio continua assombrando. Em marc,o de 2000 um artigo
       publicado na web afirma que o caso foi "recentemente encerrado".

       Um detalhe que o processo civil nao deixa claro refere-se ao nome: nos
       anos 80 o BSD era conhecido como "BSDUNIX(R)". Com a eliminac,ao dos
       ultimos vestigios do codigo da AT&T do BSD, ele tambem perdeu o
       direito ao nome UNIX(R). Desta forma voce vera referencias em livros
       para o "sistema operacional 4.3BSD UNIX(R)" e o "sistema operacional
       4.4BSD".

4. Comparando BSD e Linux

   Entao, qual e realmente a diferenc,a entre, digamos, o Debian Linux e o
   FreeBSD? Para a maioria dos usuarios, a diferenc,a e surpreendentemente
   pequena: Ambos sao sistemas operacionais estilo UNIX(R). Ambos sao
   desenvolvidos por projetos nao comerciais (isto nao se aplica a diversas
   outras distribuic,oes Linux, e claro). Nas proximas sessoes vamos olhar
   para o BSD e compara-lo ao Linux. As descric,oes se aplicam principalmente
   ao FreeBSD, que representa aproximadamente 80% das instalac,oes de BSD,
   mas as diferenc,as do NetBSD, OpenBSD e Dragon FlyBSD sao pequenas.

  4.1. Quem e o dono do BSD?

   Nenhuma pessoa ou empresa e proprietaria do BSD. Ele e criado e
   distribuido por uma comunidade de colaboradores altamente tecnica e
   comprometida espalhada ao redor do mundo. Alguns dos componentes do BSD
   sao projetos de codigo aberto com seus proprios licenciamentos e
   gerenciados por diferentes mantenedores.

  4.2. Como o BSD e desenvolvido e atualizado?

   Os kernels dos BSDs sao desenvolvidos e atualizados seguindo o modelo de
   desenvolvimento Open Source. Cada projeto mantem uma arvore com codigo
   fonte publicamente acessivel, que contem todo o codigo fonte do projeto,
   incluindo documentac,ao e outros arquivos incidentais. Os usuarios podem
   obter uma copia completa de qualquer versao.

   Um grande numero de desenvolvedores por todo o mundo contribuem com
   melhorias ao BSD. Eles estao divididos em tres categorias:

     * Contributors escrevem codigo ou documentac,ao. Eles nao tem permissao
       para adicionar codigo diretamente ao repositorio principal de codigo
       fonte. Para que seu codigo seja incluido no sistema, ele deve ser
       revisado e verificado por um desenvolvedor registrado, conhecido como
       committer.

     * Committers sao desenvolvedores com acesso de gravac,ao no repositorio
       principal de codigo fonte. Para se tornar um committer, um individuo
       deve mostrar habilidade na area em que esta ativo.

       Fica a criterio do bom senso individual de cada committer a decisao se
       eles devem obter ou nao um consenso antes de enviar alterac,oes para o
       repositorio de codigo fonte. Em geral, um committer experiente pode
       fazer alterac,oes que sejam inquestionavelmente corretas sem obter
       consenso. Por exemplo, um committer do projeto de documentac,ao pode
       corrigir erros tipograficos ou gramaticais sem revisao. Por outro
       lado, espera-se que os desenvolvedores que realizam mudanc,as
       complexas ou muito extensas enviem suas alterac,oes para revisao antes
       de envia-las para o repositorio de codigo fonte. Em casos extremos, um
       membro do Core Team com uma func,ao tal como a de arquiteto principal,
       pode ordenar que as alterac,oes sejam removidas do repositorio, num
       processo conhecido como backing out. Todos os committers recebem
       emails que descrevem cada commit individual, portanto nao e possivel
       enviar alterac,oes para o repositorio de codigo fonte em segredo.

     * O Core Team. O FreeBSD e o NetBSD possuem uma equipe principal (Core
       team) que gerenciam o projeto. As equipes principais evoluiram ao
       longo dos projeto e a sua func,ao nem sempre esta bem definida. Nao e
       necessario 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 tem mais voz
       ativa sobre a direc,ao do projeto do que os demais membros tem.

   Esse arranjo difere do Linux de varias maneiras:

    1. Ninguem controla o conteudo do sistema. Na pratica, essa diferenc,a e
       superestimada, uma vez que o arquiteto principal pode exigir que o
       codigo seja removido ou substituido, e mesmo no projeto Linux, varias
       pessoas podem fazer alterac,oes.

    2. Por outro lado, existe um repositorio central, um lugar unico no qual
       voce pode encontrar todo o codigo fonte do sistema operacional,
       incluindo todas as versoes mais antigas.

    3. Os projetos BSDs mantem todo o "Sistema Operacional", e nao apenas o
       kernel. Essa distinc,ao e apenas marginalmente util: nem o BSD e nem o
       Linux sao uteis sem aplicativos. Os aplicativos usados no BSD sao
       frequentemente os mesmos aplicativos usados no Linux.

    4. Como resultado da manutenc,ao formal de um unico repositorio SVN com o
       codigo fonte, o desenvolvimento do BSD e claro e e possivel acessar
       qualquer versao do sistema por numero de release ou por data. O SVN
       tambem permite atualizac,oes incrementais no sistema: por exemplo, o
       repositorio do FreeBSD e atualizado cerca de 100 vezes por dia. A
       maioria dessas mudanc,as e pequena.

  4.3. Releases do BSD

   O FreeBSD, o NetBSD e o OpenBSD fornecem o sistema em tres diferentes
   "releases". Como no Linux, os releases recebem um numero como 1.4.1 ou
   3.5. Alem disso, o numero da versao tem um sufixo indicando sua
   finalidade:

    1. A versao de desenvolvimento do sistema e chamada de CURRENT. O FreeBSD
       atribui um numero a CURRENT, por exemplo, FreeBSD 5.0-CURRENT. O
       NetBSD usa um esquema de nomenclatura ligeiramente diferente e
       acrescenta um sufixo de uma unica letra que indica mudanc,as nas
       interfaces internas, por exemplo, o NetBSD 1.4.3G. O OpenBSD nao
       atribui um numero ("OpenBSD-current"). Todo novo desenvolvimento no
       sistema entra neste branch.

    2. Em intervalos regulares, entre duas e quatro vezes por ano, os
       projetos lanc,am uma versao RELEASE do sistema, a qual e
       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
       versao RELEASE destina-se a usuarios finais e e a versao normal do
       sistema. O NetBSD tambem fornece versoes de correc,ao (Patch Releases)
       com um terceiro digito, por exemplo, o NetBSD 1.4.2.

    3. A medida que os erros sao encontrados em uma versao RELEASE, eles sao
       corrigidos e as correc,oes sao adicionadas ao repositorio SVN. No
       FreeBSD, a versao resultante e chamada de STABLE, enquanto no NetBSD e
       OpenBSD continua sendo chamada de versao RELEASE. Novos recursos
       menores tambem podem ser adicionados a essa branch apos um periodo de
       teste na branch CURRENT. Patches de seguranc,a e outras correc,oes de
       bugs importantes tambem sao aplicadas a todas as versoes RELEASE
       suportadas.

   Por outro lado, o Linux mantem duas arvores de codigo separadas: a versao
   estavel e a versao de desenvolvimento. Versoes estaveis tem um numero de
   versao menor par, como por exemplo 2.0, 2.2 ou 2.4. Versoes de
   desenvolvimento tem um numero de versao menor impar, como por exemplo 2.1,
   2.3 ou 2.5. Em cada caso, o numero e seguido por um outro numero que
   designa a release exata. Alem disso, cada fornecedor adiciona seus
   proprios programas e utilitarios de area de usuario, portanto, o nome da
   distribuic,ao tambem e importante. Cada fornecedor de distribuic,ao tambem
   atribui numeros de versao `a distribuic,ao, portanto, uma descric,ao
   completa seria algo como "TurboLinux 6.0 com kernel 2.2.14 ".

  4.4. Quais versoes do BSD estao disponiveis?

   Em contraste com as numerosas distribuic,oes do Linux, existem apenas
   quatro grandes distribuic,oes BSD de codigo aberto. Cada projeto BSD
   mantem seu proprio repositorio de codigo fonte e o seu proprio kernel.
   Porem na pratica, parece haver menos divergencias do codigo entre os
   projetos BSD do que no Linux.

   E dificil categorizar os objetivos de cada projeto: as diferenc,as sao
   muito subjetivas. Basicamente,

     * O FreeBSD visa o alto desempenho e a facilidade de uso pelos usuarios
       finais, e e um dos favoritos dos provedores de conteudo da web. Ele
       pode ser executado em diversas plataformas e tem significativamente
       mais usuarios do que os outros projetos.

     * O NetBSD visa a maxima portabilidade: "e claro que roda o NetBSD". Ele
       pode ser executado em diversas plataformas de hardware, de palmtops
       ate grandes servidores, e ate mesmo ja foi usado em missoes espaciais
       da NASA. E uma escolha particularmente boa para rodar em hardware
       antigo que nao seja Intel(R).

     * O OpenBSD visa a seguranc,a e a pureza de codigo: ele usa uma
       combinac,ao do conceito de codigo aberto ao de revisoes rigorosas de
       codigo para criar um sistema que seja comprovadamente correto,
       tornando-o a escolha preferida de organizac,oes preocupadas com
       seguranc,a, tais como bancos, bolsas de valores e departamentos do
       governo dos EUA. Tal como o NetBSD, ele pode ser executado em varias
       plataformas.

     * O DragonFlyBSD tem como objetivo o alto desempenho e a escalabilidade
       sob todos os aspectos, desde um sistema de um unico no ate um sistema
       altamente clusterizado. O DragonFlyBSD tem varias metas tecnicas de
       longo prazo, mas o foco esta em fornecer uma infraestrutura compativel
       com SMP que seja facil de entender, manter e desenvolver.

   Tambem existem dois sistemas operacionais BSD UNIX(R) que nao sao de
   codigo aberto, o BSD/OS e Mac OS(R) X da Apple:

     * O BSD/OS foi o mais antigo dos sistemas derivados do 4.4BSD. Nao era
       um sistema de codigo aberto, embora as licenc,as do codigo-fonte
       estivessem disponiveis a um custo relativamente baixo. Assemelhava-se
       ao FreeBSD de varias maneiras. Dois anos apos a aquisic,ao da BSDi
       pela Wind River Systems, o BSD/OS nao conseguiu sobreviver como um
       produto independente. O suporte e o codigo-fonte ainda podem estar
       disponiveis por parte da Wind River, mas todo desenvolvimento novo
       esta focado no sistema operacional embarcado VxWorks.

     * O Mac OS(R) X e a versao mais recente do sistema operacional para os
       equipamentos Mac(R) da Apple(R). O nucleo BSD deste sistema
       operacional, Darwin, esta disponivel como um sistema operacional de
       codigo aberto totalmente funcional para computadores x86 e PPC. No
       entanto, o sistema grafico Aqua/Quartz e muitos outros aspectos
       proprietarios do Mac OS(R) X continuam fechados. Varios
       desenvolvedores do Darwin tambem sao committers do FreeBSD, e
       vice-versa.

  4.5. Como a licenc,a BSD difere da licenc,a GNU Publica?

   O Linux esta disponivel sob a Licenc,a Publica Geral GNU (GPL), que e
   projetada para eliminar o software de codigo fechado. Em particular,
   qualquer trabalho derivado de um produto lanc,ado sob a GPL tambem deve
   ser fornecido com o codigo fonte, se solicitado. Por outro lado, a
   licenc,a BSD e menos restritiva: e permitida a distribuic,ao somente dos
   binarios. O que e particularmente atraente para aplicativos embarcados.

  4.6. O que mais eu deveria saber?

   Como menos aplicativos estao disponiveis 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 modificac,oes do kernel, necessarias para executar
   corretamente as chamadas do sistema Linux e quanto os arquivos de
   compatibilidade do Linux, como a biblioteca C. Nao ha diferenc,a
   perceptivel na velocidade de execuc,ao entre um aplicativo Linux em
   execuc,ao em uma maquina Linux nativa e um aplicativo Linux em execuc,ao
   em uma maquina BSD, contanto que ambas tenham o mesmo hardware.

   A natureza do BSD de ser um sistema em que tudo e provido por "um unico
   fornecedor" significa que as atualizac,oes sao muito mais faceis de se
   lidar do que frequentemente ocorre no caso no Linux. O BSD lida com as
   atualizac,oes das versoes das bibliotecas fornecendo modulos de
   compatibilidade para as versoes anteriores, portanto, e possivel executar
   binarios bastante antigos sem problemas.

  4.7. Qual devo usar, BSD ou Linux?

   O que tudo isso significa na pratica? Quem deve usar o BSD, quem deve usar
   o Linux?

   Esta e uma pergunta muito dificil de responder. Aqui estao algumas
   diretrizes:

     * "Se nao esta quebrado, nao conserte": Se voce ja usa um sistema
       operacional de codigo aberto e esta feliz com ele, provavelmente nao
       existe nenhuma razao para mudar.

     * Os sistemas BSD, em particular o FreeBSD, podem ter um desempenho
       notavelmente superior ao Linux. Mas isto nao e uma verdade absoluta.
       Em muitos casos, ha pouca ou nenhuma diferenc,a no desempenho. E em
       alguns casos, o Linux pode ter um desempenho melhor que o FreeBSD.

     * Em geral, os sistemas BSD tem a reputac,ao de oferecer uma melhor
       confiabilidade, principalmente como resultado de ter uma base de
       codigo mais madura.

     * Os projetos BSD tem uma reputac,ao melhor pela qualidade e completude
       da sua documentac,ao. Os varios projetos de documentac,ao visam
       fornecer uma documentac,ao que e atualizada constantemente,
       disponibilizada em muitos idiomas, e que cobre todos os aspectos do
       sistema.

     * A licenc,a BSD pode ser mais atraente que a GPL.

     * O BSD pode executar a maioria dos binarios do Linux, ja o Linux por
       sua vez nao pode executar binarios do BSD. Muitas implementac,oes do
       BSD tambem podem executar binarios de outros sistemas semelhantes ao
       UNIX(R). Como resultado, pode ser mais facil migrar de outros sistemas
       para o BSD do que seria migrar para o Linux.

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

   A BSDi / FreeBSD Mall, Inc. fornece contratos de suporte para o FreeBSD ja
   ha quase uma decada.

   Alem disso, o website de cada um dos projetos possui uma lista de
   consultores disponiveis para contratac,ao: FreeBSD, NetBSD, and OpenBSD.
