                       Construindo Produtos com o FreeBSD

  Joseph Koshy

   The FreeBSD Project

   <jkoshy@FreeBSD.org>

   Revisao: 5726f2b80a

   FreeBSD is a registered trademark of the FreeBSD Foundation.

   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.

   2020-08-05 21:42:47 +0000 por Danilo G. Baio.
   Sumario

   O projeto FreeBSD e um projeto voluntario e colaborativo de ambito
   mundial, o qual desenvolve um sistema operacional de alta qualidade, capaz
   de ser utilizado em diferentes arquiteturas computacionais. O projeto
   FreeBSD distribui o codigo fonte do seu produto sob uma licenc,a liberal,
   com a intenc,ao de incentivar o uso de seu codigo. Colaborar com o projeto
   FreeBSD pode ajudar sua empresa a reduzir o tempo necessario para colocar
   um produto no mercado, a reduzir seus custos de engenharia e a melhorar
   qualidade de seus produtos.

   Este artigo analisa as questoes envolvidas no uso do codigo do FreeBSD em
   appliances e softwares. Ele tambem destaca as caracteristicas do FreeBSD,
   que o tornam uma excelente base para o desenvolvimento de produtos. O
   artigo conclui sugerindo um conjunto das "melhores praticas" de
   organizac,oes que colaboram com o projeto FreeBSD.

   [ Documento HTML em partes / Documento HTML completo ]

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

   Indice

   1. Introduc,ao

   2. O FreeBSD como um conjunto de blocos de construc,ao

   3. Colaborando com o FreeBSD

   4. Conclusao

   Bibliografia

1. Introduc,ao

   Atualmente o FreeBSD e bem conhecido como um sistema operacional de alto
   desempenho para servidores. Ele esta instalado em milhoes de servidores
   web e em outros hosts conectados diretamente a internet em todo o mundo. O
   codigo do FreeBSD tambem e parte integrante de muitos produtos, que vao
   desde aparelhos como roteadores de rede, firewalls e dispositivos de
   armazenamento, ate computadores pessoais. Partes do FreeBSD tambem tem
   sido utilizadas em softwares comerciais (consulte Sec,ao 2, "O FreeBSD
   como um conjunto de blocos de construc,ao").

   Neste artigo, vamos olhar para o projeto FreeBSD como um recurso de
   engenharia de software -como um conjunto de blocos de construc,ao e de
   processos os quais voce pode utilizar para construir produtos.

   Embora o codigo fonte do FreeBSD seja distribuido gratuitamente ao
   publico, para desfrutar plenamente dos beneficios do trabalho do projeto,
   as organizac,oes precisam colaborar com o mesmo. Nas sec,oes subsequentes
   do presente artigo discutiremos formas eficazes de colaborar com o
   projeto, bem como os perigos que precisam ser evitados ao faze-lo.

   Aviso ao Leitor. O autor considera que as caracteristicas do projeto
   FreeBSD mencionadas neste artigo eram substancialmente verdadeiras no
   momento em que o artigo foi concebido e escrito (2005). No entanto, o
   leitor deve ter em mente que as praticas e processos utilizados por
   comunidades de codigo aberto podem mudar ao longo do tempo, e que portanto
   as informac,oes deste artigo devem ser consideradas apenas como
   indicativas e nao como verdades absolutas.

  1.1. Publico Alvo

   Este documento tem como publico alvo os seguintes grupos de pessoas:

     * Tomadores de decisao em empresas que estejam em busca de meios para
       melhorar a qualidade de seus produtos, de reduzir o tempo necessario
       para lanc,a-los no mercado e de reduzir seus custos de engenharia no
       longo prazo.
     * Consultores de tecnologia procurando as melhores praticas para
       alavancar projetos de "codigo aberto".
     * Observadores da industria interessados em compreender a dinamica dos
       projetos de codigo aberto.
     * Desenvolvedores de software que utilizam o FreeBSD e que buscam formas
       de contribuir com o projeto.

  1.2. Objetivos do artigo

   Apos a leitura deste artigo, voce deve ter:

     * Uma melhor compreensao dos objetivos do Projeto FreeBSD e de sua
       estrutura organizacional.
     * Uma visao geral das tecnologias disponiveis no projeto.
     * Uma melhor compreensao do modelo de desenvolvimento adotado pelo
       Projeto FreeBSD e dos processos de engenharia envolvidos no
       lanc,amento de uma nova versao do sistema.
     * Consciencia dos canais de comunicac,ao utilizados pelo projeto e do
       nivel de transparencia que voce pode esperar.
     * Consciencia das melhores formas de se trabalhar com o projeto-a melhor
       forma de reduzir os custos de engenharia, de reduzir o tempo
       necessario para levar seu produto ao mercado, de gerir
       vulnerabilidades de seguranc,a, e de preservar a compatibilidade
       futura com o seu produto a medida que o Projeto FreeBSD evolui.

  1.3. Estrutura do Artigo

   O restante deste artigo esta estruturado da seguinte forma:

     * A Sec,ao 2, "O FreeBSD como um conjunto de blocos de construc,ao"
       apresenta o projeto FreeBSD, explora sua estrutura organizacional, as
       principais tecnologias e processos de engenharia envolvidos no
       lanc,amento de uma nova versao do sistema.
     * A Sec,ao 3, "Colaborando com o FreeBSD" descreve formas de colaborar
       com o Projeto FreeBSD. Esta sec,ao tambem aborda as armadilhas que sao
       geralmente encontradas por empresas que trabalham com projetos
       voluntarios como o FreeBSD.
     * A Sec,ao 4, "Conclusao" conclui o artigo.

2. O FreeBSD como um conjunto de blocos de construc,ao

   O FreeBSD fornece uma excelente base sobre a qual podemos construir
   produtos:

     * O codigo fonte do FreeBSD e distribuido sob uma licenc,a BSD liberal,
       o que facilita sua adoc,ao em produtos comerciais [Mon2005] com um
       minimo de preocupac,oes.
     * O Projeto FreeBSD possui excelentes praticas de engenharia as quais
       podem ser aproveitadas.
     * O projeto oferece uma transparencia excepcional em seu funcionamento,
       permitindo que as empresas que utilizam o seu codigo se planejem de
       forma eficaz para o futuro.
     * A cultura do projeto FreeBSD, herdada do Grupo de Pesquisa de Ciencias
       da Computac,ao da Universidade da California em Berkeley [McKu1999-1],
       fomenta trabalhos de alta qualidade. Algumas funcionalidades do
       FreeBSD definem o estado da arte.

   O [GoldGab2005] analisa em maior profundidade os motivos comerciais para
   se utilizar codigo fonte aberto. Para as organizac,oes, os beneficios do
   uso de componentes do FreeBSD em seus produtos incluem a reduc,ao do tempo
   necessario para lanc,ar novos produtos no mercado, menores custos e
   menores riscos de desenvolvimento.

  2.1. Construindo com o FreeBSD

   Aqui estao alguns exemplos de como as empresas estao utilizando o FreeBSD:

     * Como um provedor (upstream source) de codigos testados para
       bibliotecas e utilitarios.

       Sendo o "downstream" do projeto, as organizac,oes se aproveitam das
       novas funcionalidades, das correc,oes de bugs e dos testes que o
       codigo fonte do projeto FreeBSD recebe.

     * Como sistema operacional integrado (por exemplo, em um roteador OEM e
       ou em um dispositivo de firewall). Neste modelo, as empresas utilizam
       uma versao customizada do kernel e do conjunto de aplicativos do
       FreeBSD, juntamente com uma camada proprietaria de gestao para os seus
       dispositivos. Os fabricantes de equipamentos originais (OEMs) se
       beneficiam da adic,ao por parte do FreeBSD de suporte a novos
       componentes de hardware, bem como se beneficia dos testes que o
       sistema base recebe.

       O FreeBSD e distribuido com um ambiente de desenvolvimento
       auto-hospedado o qual permite a facil criac,ao de tais configurac,oes.

     * Como um ambiente Unix compativel para as func,oes de gerenciamento em
       dispositivos de armazenamento high-end e em dispositivos de rede,
       executando em uma lamina separada "blade".

       O FreeBSD fornece ferramentas para a criac,ao de imagens do sistema
       operacional dedicadas a executar uma func,ao especifica. Sua
       implementac,ao da API unix BSD e madura e testada. O FreeBSD tambem
       pode proporcionar um ambiente de desenvolvimento cruzado estavel para
       os outros componentes de dispositivos topo de linha.

     * Como um veiculo para obter suporte e testes amplos de uma equipe
       mundial de desenvolvedores para a sua "propriedade intelectual"
       nao-critica.

       Neste modelo, as organizac,oes contribuem com frameworks de
       infra-estrutura uteis ao projeto FreeBSD (por exemplo, veja o
       netgraph(3)). A ampla exposic,ao que o codigo obtem ajuda na rapida
       identificac,ao de bugs e de problemas de desempenho. O envolvimento de
       desenvolvedores de alta qualidade tambem resulta no desenvolvimento de
       extensoes uteis para a infra-estrutura do sistema, e das quais a
       empresa que esta contribuindo com o projeto tambem se beneficia.

     * Como um ambiente de desenvolvimento apoiando desenvolvimento cruzado
       para sistemas operacionais embarcados como RTEMS e o eCOS.

       Existem muitos ambientes de desenvolvimento completos na forte
       colec,ao de mais de 24,000 aplicativos portados e empacotados para o
       FreeBSD.

     * Como forma de suportar uma API estilo Unix em um sistema operacional
       que de outro modo seria proprietario, aumentando a sua palatabilidade
       para os desenvolvedores de aplicativos.

       Aqui as partes do kernel do FreeBSD e as aplicac,oes sao "portadas"
       para serem executadas juntamente com outras tarefas no sistema
       operacional proprietario. A disponibilidade de uma implementac,ao
       estavel e bem testada da API Unix(TM) pode reduzir o esforc,o
       necessario para portar aplicac,oes populares para um sistema
       operacional proprietario. Como o FreeBSD e distribuido acompanhado de
       uma documentac,ao de alta qualidade sobre a sua estrutura interna, e
       possui processos eficazes de engenharia para gerenciamento de
       vulnerabilidades e para lanc,amento de novas versoes, os custos para
       mante-lo atualizado sao baixos.

  2.2. Tecnologias

   Existe um grande numero de tecnologias suportadas pelo projeto FreeBSD.
   Abaixo voce encontra uma lista com alguma delas:

     * Um sistema completo que pode compilar a si mesmo para muitas
       arquiteturas:

     * Um kernel modular capaz de multiprocessamento simetrico, com modulos
       de kernel carregaveis e um sistema de configurac,ao flexivel e facil
       de usar.
     * Suporta a emulac,ao de binarios do Linux(TM) e do SVR4 com velocidades
       proximas as que voce obtem executando os aplicativos de forma nativa.
       Suporte para os binarios dos drivers de rede do Windows(TM) (NDIS).
     * Bibliotecas para muitas tarefas de programac,ao: arquivos, suporte a
       FTP e HTTP, suporte a threads, alem de um ambiente completo de
       programac,ao POSIX(TM).
     * Funcionalidades avanc,adas de seguranc,a: Controle de Acesso
       Obrigatorio (mac(9)), jails (jail(2)), ACLs, e suporte no kernel a
       dispositivos de criptografia.
     * Funcionalidades avanc,adas de rede: firewalls, gerenciamento de QoS,
       rede TCP/IP de alta performance com suporte a muitos recursos
       avanc,ados.

       O framework Netgraph (netgraph(4)) presente no kernel do FreeBSD,
       permite que os modulos de rede possam ser conectados entre si de
       formas flexiveis.

     * Suporte para tecnologias avanc,adas de armazenamento Fibre Channel,
       SCSI, RAID por software e hardware, ATA e SATA.

       O FreeBSD suporta um grande numero de sistemas de arquivos, e o seu
       sistema de arquivos nativo UFS2 suporta soft updates, snapshots e
       sistemas de arquivos de tamanho muito grandes (ate 16 TB por sistema
       de arquivos) [McKu1999].

       O framework GEOM GEOM (geom(4)) presente no kernel do FreeBSD permite
       que modulos de armazenamento sejam compostos de forma flexivel.

     * Mais de 24,000 aplicativos portados, tanto comerciais quanto de codigo
       aberto, gerenciados atraves da colec,ao de ports do FreeBSD.

  2.3. Estrutura Organizacional

   A estrutura organizacional do FreeBSD nao e hierarquica.

   Existem basicamente dois tipos de colaboradores no projeto FreeBSD, os
   usuarios em geral e os desenvolvedores com acesso de escrita (conhecidos
   como committers no jargao) ao repositorio de codigo fonte.

   Existem muitos milhares de colaboradores no primeiro grupo, a grande
   maioria das contribuic,oes para o FreeBSD vem de individuos desse grupo; A
   permissao de commit (acesso de escrita) no repositorio e concedida a
   pessoas que contribuem de forma consistente para o projeto. O direito de
   commit vem acompanhado de responsabilidades adicionais, e para facilitar o
   aprendizado das mesmas, um mentor e atribuido a todos os novos committers.

   Figura 1. Organizac,ao do FreeBSD
   Organizac,ao do FreeBSD

   A resoluc,ao de conflitos e realizada por um "Core Team" de 9 pessoas, o
   qual e eleito a partir do grupo de committers.

   O FreeBSD nao tem committers "corporativo". Os committers sao obrigados a
   assumir de forma individual a responsabilidade pelas mudanc,as que
   introduzem no codigo. O FreeBSD Committer's guide [ComGuide] documenta as
   regras e responsabilidades que se aplicam aos committers.

   O modelo do projeto FreeBSD e examinado em detalhes no [Nik2005].

  2.4. Processos de Engenharia para liberac,ao de novas versoes do FreeBSD

   O processo de engenharia para a liberac,ao de uma nova versao do FreeBSD
   desempenha um papel importante para assegurar que as suas novas versoes
   sejam de alta qualidade. Em qualquer ponto do tempo, os voluntarios do
   FreeBSD suportam multiplas versoes do codigo sistema (Figura 2, "Release
   Branches do FreeBSD"):

     * As novas funcionalidades e os codigos disruptivos entram na branch de
       desenvolvimento, tambem conhecido como branch -CURRENT.
     * A branch -STABLE contem linhas de codigo que sao ramificadas a partir
       do HEAD em intervalos regulares. Apenas codigo devidamente testado e
       permitido na branch -STABLE. Novas funcionalidades sao permitidas apos
       terem sido testadas e estabilizadas na branch -CURRENT.
     * A branch -RELEASE e mantido pela equipe de seguranc,a do FreeBSD.
       Somente correc,oes de bugs criticos sao permitidos na branch -RELEASE.
   Figura 2. Release Branches do FreeBSD
   Release Branches do FreeBSD

   As linhas de codigo sao mantidas vivas enquanto houver interesse dos
   usuarios e dos desenvolvedores nelas.

   As arquiteturas de maquina estao agrupadas em "tiers"; As arquiteturas
   Tier 1 sao totalmente suportadas pelas equipes de engenharia de
   lanc,amento e de seguranc,a, as arquiteturas Tier 2 sao suportadas em
   regime de melhores esforc,os, e as arquiteturas experimentais compreendem
   o Tier 3. A lista das arquiteturas suportadas e parte da colec,ao de
   documentos do FreeBSD.

   A equipe de engenharia de lanc,amentos publica um road map para as versoes
   futuras do FreeBSD no web site do projeto. As datas indicadas no road map
   nao sao prazos; As novas versoes do FreeBSD sao liberadas apenas quando o
   seu codigo e documentac,ao estao prontos.

   O processo de engenharia para a liberac,ao de novas versoes do FreeBSD e
   descrito em detalhes no [RelEngDoc].

3. Colaborando com o FreeBSD

   Projetos open-source como o FreeBSD oferecem codigo final de alta
   qualidade.

   Embora o acesso a um codigo fonte de qualidade possa reduzir o custo
   inicial de desenvolvimento, a longo prazo, os custos com o gerenciamento
   de mudanc,as comec,am a dominar. A medida que os ambientes computacionais
   mudam ao longo dos anos e novas vulnerabilidades de seguranc,a sao
   descobertas, o seu produto tambem precisara mudar e se adaptar. O uso de
   codigo open-source nao deve ser encarado como uma atividade pontual, mas
   sim como um processo continuo. Os melhores projetos para se colaborar sao
   os que estao vivos, ou seja, aqueles com uma comunidade ativa, que tenha
   objetivos claros e que possua um estilo de trabalho transparente.

     * O FreeBSD tem uma comunidade de desenvolvimento ativa em torno dele.
       No momento em que este artigo foi escrito, existiam milhares de
       colaboradores com representantes de praticamente todos os continentes
       povoados do mundo, e mais de 300 individuos com acesso de escrita aos
       repositorios do projeto.
     * Os objetivos do projeto FreeBSD sao [Hub1994]:

          * Desenvolver um sistema operacional de alta qualidade para o
            hardware de computadores populares, e,
          * Tornar o nosso trabalho disponivel para todos sob uma licenc,a
            liberal.
     * O FreeBSD desfruta de uma cultura aberta e transparente de trabalho.
       Quase todas as discussoes no projeto ocorrem por e-mail, em listas
       publicas de discussao que tambem sao arquivadas para a posteridade. As
       politicas do projeto sao documentadas e mantidas sob controle de
       revisao. A participac,ao no projeto e aberta a todos.

  3.1. Compreendendo a cultura do FreeBSD

   Para ser capaz de trabalhar de forma eficaz com o projeto FreeBSD, voce
   precisa entender a cultura do projeto.

   As regras que regem a operac,ao de um projeto voluntario sao diferentes
   das que regem a operac,ao de uma empresa com fins lucrativos. Um erro
   comum que as empresas cometem ao se aventurar no mundo open-source e o de
   desvalorizar essas diferenc,as.

   Motivac,ao. A maioria das contribuic,oes feitas para o FreeBSD sao feitas
   voluntariamente, sem que nenhuma recompensa financeira esteja envolvida.
   Os fatores que motivam as pessoas sao complexos, e vao desde o puro
   altruismo ate o interesse comum em resolver algum tipo de problema que o
   FreeBSD esteja tentando resolver. Neste tipo de ambiente, a "elegancia
   jamais e opcional" [Nor1993].

   Visao de Longo Prazo. O FreeBSD tem raizes de quase 20 anos para com o
   trabalho do Grupo de Pesquisa de Ciencias da Computac,ao da Universidade
   da California, Berkeley.[1] Alguns dos desenvolvedores originais do CSRG
   permanecem associados com o projeto.

   O projeto valoriza perspectivas de longo prazo [Nor2001]. Uma sigla
   encontrada com frequencia no projeto DTRT, a qual significa "Fac,a a Coisa
   Certa".

   Processo de Desenvolvimento. Programas de computador sao ferramentas de
   comunicacao: em um nivel os programadores comunicam as suas intenc,oes
   usando uma notac,ao precisa para uma ferramenta (um compilador) que traduz
   as suas instruc,oes para um codigo executavel. Em outro nivel, a mesma
   notac,ao e usada para a comunicac,ao das intenc,oes entre dois
   programadores.

   Especificac,oes formais e documentos de design raramente sao utilizados no
   projeto. Codigo claro e bem escrito, acompanhado de logs bem escritos para
   as alterac,oes das (Figura 3, "Um exemplo de entrada no log de
   alterac,ao") sao usados em seu lugar. O desenvolvimento do FreeBSD
   acontece por "consenso aspero e por codigo sendo executado" [Carp1996].

   Figura 3. Um exemplo de entrada no log de alterac,ao

 r151864 | bde | 2005-10-29 09:34:50 -0700 (Sat, 29 Oct 2005) | 13 lines
 Changed paths:
    M /head/lib/msun/src/e_rem_pio2f.c

 Use double precision to simplify and optimize arg reduction for small
 and medium size args too: instead of conditionally subtracting a float
 17+24, 17+17+24 or 17+17+17+24 bit approximation to pi/2, always
 subtract a double 33+53 bit one.  The float version is now closer to
 the double version than to old versions of itself -- it uses the same
 33+53 bit approximation as the simplest cases in the double version,
 and where the float version had to switch to the slow general case at
 |x| == 2^7*pi/2, it now switches at |x| == 2^19*pi/2 the same as the
 double version.

 This speeds up arg reduction by a factor of 2 for |x| between 3*pi/4 and
 2^7*pi/4, and by a factor of 7 for |x| between 2^7*pi/4 and 2^19*pi/4.
        

   A comunicac,ao entre os programadores e reforc,ada pelo uso de um style(9)
   padrao de codificac,ao, comum entre eles.

   Canais de Comunicac,ao. Os colaboradores do FreeBSD estao espalhados por
   todo o mundo. O email (e em menor extensao, o IRC) e o meio de
   comunicac,ao preferido no projeto.

  3.2. Melhores praticas para colaborar com o projeto FreeBSD

   Agora iremos examinar algumas das melhores praticas para se fazer um
   melhor uso do FreeBSD no desenvolvimento de produtos.

   Se planeje para o longo prazo

           Implante processos que o ajudem a monitorar o desenvolvimento do
           FreeBSD. Por exemplo:

           Acompanhe o codigo fonte do FreeBSD. O projeto facilita o
           espelhamento do seu repositorio SVN usando svnsync. Ter o
           historico completo do codigo fonte e util quando se esta debugando
           problemas complexos e oferece informac,oes valiosas sobre as
           intenc,oes dos desenvolvedores originais. Utilize um sistema de
           controle de codigo que lhe permita mesclar facilmente as
           alterac,oes entre o codigo original do FreeBSD e o seu proprio
           codigo.

           A Figura 4, "Codigo fonte exibindo a listagem de anotac,oes gerada
           utilizando o svn blame" mostra as anotac,oes em uma parte do
           arquivo referenciado pelo log de alterac,oes da Figura 3, "Um
           exemplo de entrada no log de alterac,ao". A ascendencia de cada
           linha de codigo e claramente visivel. Listagens com as anotac,oes
           mostrando a historia de cada arquivo que faz parte do FreeBSD
           estao disponiveis na web.

           Figura 4. Codigo fonte exibindo a listagem de anotac,oes gerada
           utilizando o svn blame


 #REV         #WHO #DATE                                        #TEXT

 176410        bde 2008-02-19 07:42:46 -0800 (Tue, 19 Feb 2008) #include <sys/cdefs.h>
 176410        bde 2008-02-19 07:42:46 -0800 (Tue, 19 Feb 2008) __FBSDID("$FreeBSD$");
   2116        jkh 1994-08-19 02:40:01 -0700 (Fri, 19 Aug 1994)
   2116        jkh 1994-08-19 02:40:01 -0700 (Fri, 19 Aug 1994) /* __ieee754_rem_pio2f(x,y)
   8870    rgrimes 1995-05-29 22:51:47 -0700 (Mon, 29 May 1995)  *
 176552        bde 2008-02-25 05:33:20 -0800 (Mon, 25 Feb 2008)  * return the remainder of x rem pi/2 in *y
 176552        bde 2008-02-25 05:33:20 -0800 (Mon, 25 Feb 2008)  * use double precision for everything except passing x
 152535        bde 2005-11-16 18:20:04 -0800 (Wed, 16 Nov 2005)  * use __kernel_rem_pio2() for large x
   2116        jkh 1994-08-19 02:40:01 -0700 (Fri, 19 Aug 1994)  */
   2116        jkh 1994-08-19 02:40:01 -0700 (Fri, 19 Aug 1994)
 176465        bde 2008-02-22 07:55:14 -0800 (Fri, 22 Feb 2008) #include <float.h>
 176465        bde 2008-02-22 07:55:14 -0800 (Fri, 22 Feb 2008)
   2116        jkh 1994-08-19 02:40:01 -0700 (Fri, 19 Aug 1994) #include "math.h"

              

           Nomeie um guardiao. Nomeie um guardiao para monitorar o
           desenvolvimento do FreeBSD, para manter-se atento a mudanc,as que
           poderiam potencialmente afetar os seus produtos.

           Comunique os erros que encontrar de volta para o projeto. Se voce
           encontrar um bug no codigo do FreeBSD que voce esta utilizando,
           envie um bug report. Este procedimento simples ira ajudar a
           garantir que voce nao precisara corrigir o erro novamente da
           proxima vez que precisar importar novamente do codigo base do
           FreeBSD.

   Se alavanque nos esforc,os de engenharia do FreeBSD para lanc,amento de
   novas versoes
           Utilize codigo da branch de desenvolvimento -STABLE do FreeBSD.
           Este branch de desenvolvimento e formalmente suportado pelas
           equipes de engenharia de lanc,amento e de seguranc,a, e e formada
           apenas por codigo testado.

   Doe codigo para reduzir seus custos
           Uma parte significativa dos custos relacionados ao desenvolvimento
           de um produto e o de realizar a sua manutenc,ao. Ao doar partes
           nao criticas do seu codigo para o projeto, voce se beneficia por
           ter o seu codigo exposto de uma forma ampla, exposic,ao que ele
           nao teria de outra forma. Esta exposic,ao por sua vez leva
           eliminac,ao de um maior numero de bugs e de vulnerabilidades de
           seguranc,a, e permite que anomalias de desempenho sejam
           identificadas e corrigidas.

   Obtenha suporte efetivo

           Para produtos com prazos apertados, e recomendado que voce
           contrate o suporte ou consultoria de um desenvolvedor ou empresa
           com experiencia em FreeBSD. A lista de discussao sobre empregos
           relacionados ao FreeBSD e um canal de comunicac,ao muito util para
           se encontrar talentos. O projeto FreeBSD mantem uma galeria de
           consultores e empresas de consultoria que trabalham com FreeBSD. O
           Grupo de Certificac,ao BSD oferece certificac,ao para todos os
           principais sistemas operacionais derivados do BSD.

           Para as necessidades menos importantes, voce pode pedir ajuda nas
           listas de discussao do projeto. Um guia util para seguir quando
           precisar pedir esta listado em [Ray2004].

   Divulgue o seu envolvimento

           Voce nao e obrigado a divulgar que faz uso do FreeBSD, mas ao
           faze-lo voce estara ajudando ambos os esforc,os, o seu e o do
           projeto.

           Dar visibilidade para a comunidade FreeBSD de que a sua empresa
           utiliza o sistema ajuda a melhorar as suas chances de atrair
           talentos de alta qualidade. Quanto maior for a lista de
           organizac,oes que apoiam o FreeBSD maior sera a presenc,a do
           sistema na cabec,a (mind share) dos desenvolvedores. Ao contribuir
           para aumentar o numero de desenvolvedores interessados no FreeBSD,
           voce estara gerando uma base saudavel para o seu futuro.

   Suporte os desenvolvedores do FreeBSD

           As vezes, o caminho mais direto para ver uma funcionalidade que
           voce deseja implementada no FreeBSD e suportar um desenvolvedor
           que ja esteja olhando um problema relacionado. A ajuda pode variar
           de uma doac,ao de hardware ate uma assistencia financeira direta.
           Em alguns paises, as doac,oes para o projeto FreeBSD usufruem de
           beneficios fiscais. O projeto possui um canal de comunicac,ao
           dedicado para assuntos relacionados a doac,oes e para ajudar os
           doadores. O projeto tambem mantem uma pagina web na qual os
           desenvolvedores podem listar suas necessidades.

           Por uma politica do projeto, o FreeBSD reconhece todas as
           contribuic,oes recebidas em seu site web.

4. Conclusao

   O Objetivo do projeto FreeBSD e criar e distribuir o codigo fonte de um
   sistema operacional de alta qualidade. Ao trabalhar com o projeto FreeBSD
   voce pode reduzir os seus custos de desenvolvimento e melhorar o tempo
   necessario para lanc,ar seus novos produtos no mercado em varios cenarios
   de desenvolvimento de produtos.

   Foram examinadas as caracteristicas do FreeBSD que o tornam uma excelente
   opc,ao na estrategia de produto de uma organizac,ao. Em seguida, abordamos
   os aspectos predominantes da cultura do projeto e examinamos formas
   eficazes de interagir com os seus desenvolvedores. O artigo finaliza com
   uma lista das melhores praticas que podem ajudar na colaborac,ao da
   iniciativa privada com o projeto FreeBSD.

Bibliografia

   [Carp1996] The Architectural Principles of the Internet. B. Carpenter.
   Copyright (c) 1996.

   [ComGuide] Committer's Guide. . Copyright (c) 2005.

   [GoldGab2005] Innovation Happens Elsewhere: Open Source as Business
   Strategy. Ron Goldman e Richard Gabriel. Copyright (c) 2005. ISBN
   1558608893. Morgan-Kaufmann.

   [Hub1994] Contributing to the FreeBSD Project. Jordan Hubbard. Copyright
   (c) 1994-2005. The FreeBSD Project.

   [McKu1999] Soft Updates: A Technique for Eliminating Most Synchronous
   Writes in the Fast Filesystem. Kirk McKusick e Gregory Ganger. USENIX
   Annual Technical Conference. . Copyright (c) 1999.

   [McKu1999-1] Twenty Years of Berkeley Unix: From AT&T-Owned to Freely
   Redistributable. Marshall Kirk McKusick. Open Sources: Voices from the
   Open Source Revolution. ISBN 1-56592-582-3. O'Reilly Inc.. Copyright (c)
   1993.

   [Mon2005] Why you should use a BSD style license for your Open Source
   Project. Bruce Montague. The FreeBSD Project. Copyright (c) 2005.

   [Nik2005] A project model for the FreeBSD Project. Niklas Saers. Copyright
   (c) 2005. The FreeBSD Project.

   [Nor1993] Tutorial on Good Lisp Programming Style. Peter Norvig e Kent
   Pitman. Copyright (c) 1993.

   [Nor2001] Teach Yourself Programming in Ten Years. Peter Norvig. Copyright
   (c) 2001.

   [Ray2004] How to ask questions the smart way. Eric Steven Raymond.
   Copyright (c) 2004.

   [RelEngDoc] FreeBSD Release Engineering. Murray Stokely. Copyright (c)
   2001. The FreeBSD Project.

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

   [1] O repositorio de codigos do FreeBSD contem a historia do projeto desde
   a sua concepc,ao, e existem CDROMs disponiveis que contem codigo fonte
   anterior ao CSRG.
