aboutsummaryrefslogtreecommitdiff
path: root/pt_BR.ISO8859-1/articles/building-products/article.xml
blob: 7e73b34811f8235bc0a538f2748a650e7a204f68 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE article PUBLIC "-//FreeBSD//DTD DocBook XML V5.0-Based Extension//EN" "http://www.FreeBSD.org/XML/share/xml/freebsd50.dtd">
<article xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:its="http://www.w3.org/2005/11/its" version="5.0" xml:lang="pt_BR">
  <info><title>Construindo Produtos com o FreeBSD</title>
    
    <authorgroup>
      <author><personname><firstname>Joseph</firstname><surname>Koshy</surname></personname><affiliation> <orgname>The FreeBSD Project</orgname> <address><email>jkoshy@FreeBSD.org</email></address> </affiliation></author>
    </authorgroup>

    <legalnotice xml:id="trademarks" role="trademarks">
      <para>FreeBSD is a registered trademark of the FreeBSD Foundation.</para>
      <para>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 <quote></quote> or the <quote>®</quote> symbol.</para>
    </legalnotice>

    <pubdate>$FreeBSD$</pubdate>

    <releaseinfo>$FreeBSD$</releaseinfo>

    <abstract>
      <title>Sumário</title>

      <para>O projeto FreeBSD é um projeto voluntário e colaborativo de âmbito mundial, o qual desenvolve um sistema operacional de alta qualidade, capaz de ser utilizado em diferentes arquiteturas computacionais. O projeto FreeBSD distribui o código fonte do seu produto sob uma licença liberal, com a intenção de incentivar o uso de seu código. Colaborar com o projeto FreeBSD pode ajudar sua empresa a reduzir o tempo necessário para colocar um produto no mercado, a reduzir seus custos de engenharia e a melhorar qualidade de seus produtos.</para>

      <para>Este artigo analisa as questões envolvidas no uso do código do FreeBSD em appliances e softwares. Ele também destaca as características do FreeBSD, que o tornam uma excelente base para o desenvolvimento de produtos. O artigo conclui sugerindo um conjunto das <quote>melhores práticas</quote> de organizações que colaboram com o projeto FreeBSD.</para>
    </abstract>
  </info>

  <sect1 xml:id="introduction">
    <title>Introdução</title>

    <para>Atualmente o FreeBSD é bem conhecido como um sistema operacional de alto desempenho para servidores. Ele está instalado em milhões de servidores web e em outros hosts conectados diretamente a internet em todo o mundo. O código do FreeBSD também é parte integrante de muitos produtos, que vão desde aparelhos como roteadores de rede, firewalls e dispositivos de armazenamento, até computadores pessoais. Partes do FreeBSD também têm sido utilizadas em softwares comerciais (consulte <xref linkend="freebsd-intro"/>).</para>

    <para>Neste artigo, vamos olhar para o <link xlink:href="@@URL_RELPREFIX@@/">projeto FreeBSD</link> como um recurso de engenharia de software —como um conjunto de blocos de construção e de processos os quais você pode utilizar para construir produtos.</para>

    <para>Embora o código fonte do FreeBSD seja distribuído gratuitamente ao público, para desfrutar plenamente dos benefícios do trabalho do projeto, as organizações precisam <emphasis>colaborar</emphasis> com o mesmo. Nas seções subsequentes do presente artigo discutiremos formas eficazes de colaborar com o projeto, bem como os perigos que precisam ser evitados ao fazê-lo.</para>

    <formalpara>
      <title>Aviso ao Leitor</title>
      <para>O autor considera que as características 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 práticas e processos utilizados por comunidades de código aberto podem mudar ao longo do tempo, e que portanto as informações deste artigo devem ser consideradas apenas como indicativas e não como verdades absolutas.</para>
    </formalpara>

    <sect2>
      <title>Público Alvo</title>
      <para>Este documento tem como público alvo os seguintes grupos de pessoas:</para>
      <itemizedlist>
        <listitem>
          <simpara>Tomadores de decisão em empresas que estejam em busca de meios para melhorar a qualidade de seus produtos, de reduzir o tempo necessário para lançá-los no mercado e de reduzir seus custos de engenharia no longo prazo.</simpara>
        </listitem>
        <listitem>
          <simpara>Consultores de tecnologia procurando as melhores práticas para alavancar projetos de <quote>código aberto</quote>.</simpara>
        </listitem>
        <listitem>
          <simpara>Observadores da indústria interessados em compreender a dinâmica dos projetos de código aberto.</simpara>
        </listitem>
        <listitem>
          <simpara>Desenvolvedores de software que utilizam o FreeBSD e que buscam formas de contribuir com o projeto.</simpara>
        </listitem>
      </itemizedlist>
    </sect2>

    <sect2>
      <title>Objetivos do artigo</title>
      <para>Após a leitura deste artigo, você deve ter:</para>
      <itemizedlist>
        <listitem>
          <simpara>Uma melhor compreensão dos objetivos do Projeto FreeBSD e de sua estrutura organizacional.</simpara>
        </listitem>
        <listitem>
          <simpara>Uma visão geral das tecnologias disponíveis no projeto.</simpara>
        </listitem>
        <listitem>
          <simpara>Uma melhor compreensão do modelo de desenvolvimento adotado pelo Projeto FreeBSD e dos processos de engenharia envolvidos no lançamento de uma nova versão do sistema.</simpara>
        </listitem>
        <listitem>
          <simpara>Consciência dos canais de comunicação utilizados pelo projeto e do nível de transparência que você pode esperar.</simpara>
        </listitem>
        <listitem>
          <simpara>Consciência das melhores formas de se trabalhar com o projeto—a melhor forma de reduzir os custos de engenharia, de reduzir o tempo necessário para levar seu produto ao mercado, de gerir vulnerabilidades de segurança, e de preservar a compatibilidade futura com o seu produto a medida que o Projeto FreeBSD evolui.</simpara>
        </listitem>
      </itemizedlist>
    </sect2>

    <sect2>
      <title>Estrutura do Artigo</title>
      <para>O restante deste artigo está estruturado da seguinte forma:</para>
      <itemizedlist>
        <listitem>
          <simpara>A <xref linkend="freebsd-intro"/> apresenta o projeto FreeBSD, explora sua estrutura organizacional, as principais tecnologias e processos de engenharia envolvidos no lançamento de uma nova versão do sistema.</simpara>
        </listitem>
        <listitem>
          <simpara>A <xref linkend="freebsd-collaboration"/> descreve formas de colaborar com o Projeto FreeBSD. Esta seção também aborda as armadilhas que são geralmente encontradas por empresas que trabalham com projetos voluntários como o FreeBSD.</simpara>
        </listitem>
        <listitem>
          <simpara>A <xref linkend="conclusion"/> conclui o artigo.</simpara>
        </listitem>
      </itemizedlist>
    </sect2>
  </sect1>

  <sect1 xml:id="freebsd-intro">
    <title>O FreeBSD como um conjunto de blocos de construção</title>

    <para>O FreeBSD fornece uma excelente base sobre a qual podemos construir produtos:</para>

    <itemizedlist>
      <listitem>
        <simpara>O código fonte do FreeBSD é distribuído sob uma licença BSD liberal, o que facilita sua adoção em produtos comerciais <citation>Mon2005</citation> com um mínimo de preocupações.</simpara>
      </listitem>
      <listitem>
        <simpara>O Projeto FreeBSD possui excelentes práticas de engenharia as quais podem ser aproveitadas.</simpara>
      </listitem>
      <listitem>
        <simpara>O projeto oferece uma transparência excepcional em seu funcionamento, permitindo que as empresas que utilizam o seu código se planejem de forma eficaz para o futuro.</simpara>
      </listitem>
      <listitem>
        <simpara>A cultura do projeto FreeBSD, herdada do Grupo de Pesquisa de Ciências da Computação da Universidade da Califórnia em Berkeley <citation>McKu1999-1</citation>, fomenta trabalhos de alta qualidade. Algumas funcionalidades do FreeBSD definem o estado da arte.</simpara>
      </listitem>
    </itemizedlist>

    <simpara>O <citation>GoldGab2005</citation> analisa em maior profundidade os motivos comerciais para se utilizar código fonte aberto. Para as organizações, os benefícios do uso de componentes do FreeBSD em seus produtos incluem a redução do tempo necessário para lançar novos produtos no mercado, menores custos e menores riscos de desenvolvimento.</simpara>

    <sect2>
      <title>Construindo com o FreeBSD</title>

      <simpara>Aqui estão alguns exemplos de como as empresas estão utilizando o FreeBSD:</simpara>

      <itemizedlist>
        <listitem>
          <simpara>Como um provedor (upstream source) de códigos testados para bibliotecas e utilitários.</simpara>
          <simpara>Sendo o <quote>downstream</quote> do projeto, as organizações se aproveitam das novas funcionalidades, das correções de bugs e dos testes que o código fonte do projeto FreeBSD recebe.</simpara>
        </listitem>
        <listitem>
          <simpara>Como sistema operacional integrado (por exemplo, em um roteador OEM e ou em um dispositivo de firewall). Neste modelo, as empresas utilizam uma versão customizada do kernel e do conjunto de aplicativos do FreeBSD, juntamente com uma camada proprietária de gestão para os seus dispositivos. Os fabricantes de equipamentos originais (OEMs) se beneficiam da adição por parte do FreeBSD de suporte a novos componentes de hardware, bem como se beneficia dos testes que o sistema base recebe.</simpara>
          <simpara>O FreeBSD é distribuído com um ambiente de desenvolvimento auto-hospedado o qual permite a fácil criação de tais configurações.</simpara>
        </listitem>
        <listitem>
          <simpara>Como um ambiente Unix compatível para as funções de gerenciamento em dispositivos de armazenamento high-end e em dispositivos de rede, executando em uma lâmina separada <quote>blade</quote>.</simpara>
          <simpara>O FreeBSD fornece ferramentas para a criação de imagens do sistema operacional dedicadas a executar uma função específica. Sua implementação da API unix BSD é madura e testada. O FreeBSD também pode proporcionar um ambiente de desenvolvimento cruzado estável para os outros componentes de dispositivos topo de linha.</simpara>
        </listitem>
        <listitem>
          <simpara>Como um veículo para obter suporte e testes amplos de uma equipe mundial de desenvolvedores para a sua <quote>propriedade intelectual</quote> não-crítica.</simpara>
          <simpara>Neste modelo, as organizações contribuem com frameworks de infra-estrutura úteis ao projeto FreeBSD (por exemplo, veja o <citerefentry><refentrytitle>netgraph</refentrytitle><manvolnum>3</manvolnum></citerefentry>). A ampla exposição que o código obtém ajuda na rápida identificação de bugs e de problemas de desempenho. O envolvimento de desenvolvedores de alta qualidade também resulta no desenvolvimento de extensões úteis para a infra-estrutura do sistema, e das quais a empresa que está contribuindo com o projeto também se beneficia.</simpara>
        </listitem>

        <listitem>
          <simpara>Como um ambiente de desenvolvimento apoiando desenvolvimento cruzado para sistemas operacionais embarcados como <link xlink:href="http://www.rtems.com/">RTEMS</link> e o <link xlink:href="http://ecos.sourceware.org/">eCOS</link>.</simpara>
          <simpara>Existem muitos ambientes de desenvolvimento completos na forte coleção de mais de 24,000 aplicativos portados e empacotados para o FreeBSD.</simpara>
        </listitem>

        <listitem>
          <simpara>Como forma de suportar uma API estilo Unix em um sistema operacional que de outro modo seria proprietário, aumentando a sua palatabilidade para os desenvolvedores de aplicativos.</simpara>
          <simpara>Aqui as partes do kernel do FreeBSD e as aplicações são <quote>portadas</quote> para serem executadas juntamente com outras tarefas no sistema operacional proprietário. A disponibilidade de uma implementação estável e bem testada da API <trademark>Unix</trademark> pode reduzir o esforço necessário para portar aplicações populares para um sistema operacional proprietário. Como o FreeBSD é distribuído acompanhado de uma documentação de alta qualidade sobre a sua estrutura interna, e possui processos eficazes de engenharia para gerenciamento de vulnerabilidades e para lançamento de novas versões, os custos para mantê-lo atualizado são baixos.</simpara>
        </listitem>
      </itemizedlist>
    </sect2>

    <sect2 xml:id="freebsd-technologies">
      <title>Tecnologias</title>

      <para>Existe um grande número de tecnologias suportadas pelo projeto FreeBSD. Abaixo você encontra uma lista com alguma delas:</para>

      <itemizedlist>
        <listitem>
          <para>Um sistema completo que pode compilar a si mesmo para <link xlink:href="@@URL_RELPREFIX@@/platforms/">muitas arquiteturas:</link></para>
        </listitem>
        <listitem>
          <simpara>Um kernel modular capaz de multiprocessamento simétrico, com módulos de kernel carregáveis e um sistema de configuração flexível e fácil de usar.</simpara>
        </listitem>
        <listitem>
          <simpara>Suporta a emulação de binários do <trademark>Linux</trademark>  e do SVR4 com velocidades próximas as que você obtém executando os aplicativos de forma nativa. Suporte para os binários dos drivers de rede do <trademark>Windows</trademark> (<acronym>NDIS</acronym>).</simpara>
        </listitem>
        <listitem>
          <simpara>Bibliotecas para muitas tarefas de programação: arquivos, suporte a FTP e HTTP, suporte a threads, além de um ambiente completo de programação <trademark>POSIX</trademark>.</simpara>
        </listitem>
        <listitem>
          <simpara>Funcionalidades avançadas de segurança: Controle de Acesso Obrigatório (<citerefentry><refentrytitle>mac</refentrytitle><manvolnum>9</manvolnum></citerefentry>), jails (<citerefentry><refentrytitle>jail</refentrytitle><manvolnum>2</manvolnum></citerefentry>), <acronym>ACL</acronym>s, e suporte no kernel a dispositivos de criptografia.</simpara>
        </listitem>
        <listitem>
          <simpara>Funcionalidades avançadas de rede: firewalls, gerenciamento de QoS, rede TCP/IP de alta performance com suporte a muitos recursos avançados.</simpara>
          <simpara>O framework Netgraph (<citerefentry><refentrytitle>netgraph</refentrytitle><manvolnum>4</manvolnum></citerefentry>) presente no kernel do FreeBSD, permite que os módulos de rede possam ser conectados entre si de formas flexíveis.</simpara>
        </listitem>
        <listitem>
          <simpara>Suporte para tecnologias avançadas de armazenamento Fibre Channel, <acronym>SCSI</acronym>, RAID por software e hardware, <acronym>ATA</acronym> e <acronym>SATA</acronym>.</simpara>
          <simpara>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 (até 16 TB por sistema de arquivos) <citation>McKu1999</citation>.</simpara>
          <simpara>O framework GEOM <acronym>GEOM</acronym> (<citerefentry><refentrytitle>geom</refentrytitle><manvolnum>4</manvolnum></citerefentry>) presente no kernel do FreeBSD permite que módulos de armazenamento sejam compostos de forma flexível.</simpara>
        </listitem>
        <listitem>
          <simpara>Mais de 24,000 aplicativos portados, tanto comerciais quanto de código aberto, gerenciados através da coleção de ports do FreeBSD.</simpara>
        </listitem>
      </itemizedlist>
    </sect2>

    <sect2>
      <title>Estrutura Organizacional</title>
      <para>A estrutura organizacional do FreeBSD não é hierárquica.</para>

      <para>Existem basicamente dois tipos de colaboradores no projeto FreeBSD, os usuários em geral e os desenvolvedores com acesso de escrita (conhecidos como <firstterm>committers</firstterm> no jargão) ao repositório de código fonte.</para>

      <para>Existem muitos milhares de colaboradores no primeiro grupo, a grande maioria das contribuições para o FreeBSD vêm de indivíduos desse grupo; A permissão de commit (acesso de escrita) no repositório é 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 é atribuído a todos os novos committers.</para>

      <figure>
        <title>Organização do FreeBSD</title>
        <mediaobject>
          <imageobject>
            <imagedata fileref="freebsd-organization"/>
          </imageobject>
        </mediaobject>
      </figure>

      <para>A resolução de conflitos é realizada por um <quote>Core Team</quote> de 9 pessoas, o qual é eleito a partir do grupo de committers.</para>

      <para>O FreeBSD não tem committers <quote>corporativo</quote>. Os committers são obrigados a assumir de forma individual a responsabilidade pelas mudanças que introduzem no código. O <link xlink:href="@@URL_RELPREFIX@@/doc/en_US.ISO8859-1/articles/committers-guide">FreeBSD Committer's guide</link> <citation>ComGuide</citation> documenta as regras e responsabilidades que se aplicam aos committers.</para>

      <para>O modelo do projeto FreeBSD é examinado em detalhes no <citation>Nik2005</citation>.</para>
    </sect2>

    <sect2>
      <title>Processos de Engenharia para liberação de novas versões do FreeBSD</title>

      <para>O processo de engenharia para a liberação de uma nova versão do FreeBSD desempenha um papel importante para assegurar que as suas novas versões sejam de alta qualidade. Em qualquer ponto do tempo, os voluntários do FreeBSD suportam múltiplas versões do código sistema (<xref linkend="fig-freebsd-branches"/>):</para>

      <itemizedlist>
        <listitem>
          <simpara>As novas funcionalidades e os códigos disruptivos entram na branch de desenvolvimento, também conhecido como branch <firstterm>-CURRENT</firstterm>.</simpara>
        </listitem>
        <listitem>
          <simpara>A branch <firstterm>-STABLE</firstterm> contém linhas de código que são ramificadas a partir do HEAD em intervalos regulares. Apenas código devidamente testado é permitido na branch -STABLE. Novas funcionalidades são permitidas após terem sido testadas e estabilizadas na branch -CURRENT.</simpara>
        </listitem>
        <listitem>
          <simpara>A branch <firstterm>-RELEASE</firstterm> é mantido pela equipe de segurança do FreeBSD. Somente correções de bugs críticos são permitidos na branch -RELEASE.</simpara>
        </listitem>
      </itemizedlist>

      <figure xml:id="fig-freebsd-branches">
        <title>Release Branches do FreeBSD</title>
        <mediaobject>
          <imageobject>
            <imagedata fileref="freebsd-branches"/>
          </imageobject>
        </mediaobject>
      </figure>

      <para>As linhas de código são mantidas vivas enquanto houver interesse dos usuários e dos desenvolvedores nelas.</para>

      <para>As arquiteturas de máquina estão agrupadas em <quote>tiers</quote>; As arquiteturas <firstterm>Tier 1</firstterm> são totalmente suportadas pelas equipes de engenharia de lançamento e de segurança, as arquiteturas <firstterm>Tier 2</firstterm> são suportadas em regime de melhores esforços, e as arquiteturas experimentais compreendem o <firstterm>Tier 3</firstterm>. A lista das <link xlink:href="@@URL_RELPREFIX@@/doc/en_US.ISO8859-1/articles/committers-guide/archs.html">arquiteturas suportadas</link> é parte da coleção de documentos do FreeBSD.</para>

      <para>A equipe de engenharia de lançamentos publica um <link xlink:href="@@URL_RELPREFIX@@/releng/">road map</link> para as versões futuras do FreeBSD no web site do projeto. As datas indicadas no road map não são prazos; As novas versões do FreeBSD são liberadas apenas quando o seu código e documentação estão prontos.</para>

      <para>O processo de engenharia para a liberação de novas versões do FreeBSD é descrito em detalhes no <citation>RelEngDoc</citation>.</para>

    </sect2>
  </sect1>

  <sect1 xml:id="freebsd-collaboration">
    <title>Colaborando com o FreeBSD</title>

    <para>Projetos open-source como o FreeBSD oferecem código final de alta qualidade.</para>

    <para>Embora o acesso a um código fonte de qualidade possa reduzir o custo inicial de desenvolvimento, a longo prazo, os custos com o gerenciamento de mudanças começam a dominar. A medida que os ambientes computacionais mudam ao longo dos anos e novas vulnerabilidades de segurança são descobertas, o seu produto também precisará mudar e se adaptar. O uso de código open-source não deve ser encarado como uma atividade pontual, mas sim como um <emphasis>processo contínuo</emphasis>. Os melhores projetos para se colaborar são os que estão <emphasis>vivos</emphasis>, ou seja, aqueles com uma comunidade ativa, que tenha objetivos claros e que possua um estilo de trabalho transparente.</para>

    <itemizedlist>
      <listitem>
        <simpara>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 indivíduos com acesso de escrita aos repositórios do projeto.</simpara>
      </listitem>
      <listitem>
        <simpara>Os objetivos do projeto FreeBSD são <citation>Hub1994</citation>:</simpara>
        <itemizedlist spacing="compact">
          <listitem>
            <simpara>Desenvolver um sistema operacional de alta qualidade para o hardware de computadores populares, e,</simpara>
          </listitem>
          <listitem>
            <simpara>Tornar o nosso trabalho disponível para todos sob uma licença liberal.</simpara>
          </listitem>
        </itemizedlist>
      </listitem>
      <listitem>
        <simpara>O FreeBSD desfruta de uma cultura aberta e transparente de trabalho. Quase todas as discussões no projeto ocorrem por e-mail, em <link xlink:href="http://lists.FreeBSD.org/mailman/listinfo">listas publicas de discussão</link>  que também são arquivadas para a posteridade. As políticas do projeto são <link xlink:href="@@URL_RELPREFIX@@/internal/policies.html">documentadas</link> e mantidas sob controle de revisão. A participação no projeto é aberta a todos.</simpara>
      </listitem>
    </itemizedlist>

    <sect2 xml:id="freebsd-org">
      <title>Compreendendo a cultura do FreeBSD</title>

      <para>Para ser capaz de trabalhar de forma eficaz com o projeto FreeBSD, você precisa entender a cultura do projeto.</para>

      <para>As regras que regem a operação de um projeto voluntário são diferentes das que regem a operação de uma empresa com fins lucrativos. Um erro comum que as empresas cometem ao se aventurar no mundo open-source é o de desvalorizar essas diferenças.</para>

      <!-- XXX using <formalpara> constructs is clunky, but I like using
           <variablelist> even less -->
      <formalpara>
        <title>Motivação</title>

        <para>A maioria das contribuições feitas para o FreeBSD são feitas voluntariamente, sem que nenhuma recompensa financeira esteja envolvida. Os fatores que motivam as pessoas são complexos, e vão desde o puro altruísmo até o interesse comum em resolver algum tipo de problema que o FreeBSD esteja tentando resolver. Neste tipo de ambiente, a <quote>elegância jamais é opcional</quote> <citation>Nor1993</citation>.</para>
      </formalpara>

      <formalpara>
        <title>Visão de Longo Prazo</title>
        <para>O FreeBSD tem raízes de quase 20 anos para com o trabalho do Grupo de Pesquisa de Ciências da Computação da Universidade da Califórnia, Berkeley.<footnote>
            <simpara>O <link xlink:href="https://svnweb.freebsd.org/">repositório de códigos</link> do FreeBSD contem a história do projeto desde a sua concepção, e existem <link xlink:href="http://www.mckusick.com/csrg/">CDROMs disponíveis</link> que contém código fonte anterior ao CSRG.</simpara>
          </footnote> Alguns dos desenvolvedores originais do CSRG permanecem associados com o projeto.</para>
      </formalpara>

      <para>O projeto valoriza perspectivas de longo prazo <citation>Nor2001</citation>. Uma sigla encontrada com frequência no projeto <acronym>DTRT</acronym>, a qual significa <quote>Faça a Coisa Certa</quote>.</para>

      <formalpara>
        <title>Processo de Desenvolvimento</title>
        <para>Programas de computador são ferramentas de comunicacão: em um nível os programadores comunicam as suas intenções usando uma notação precisa para uma ferramenta (um compilador) que traduz as suas instruções para um código executável. Em outro nível, a mesma notação é usada para a comunicação das intenções entre dois programadores.</para>
      </formalpara>

      <para>Especificações formais e documentos de design raramente são utilizados no projeto. Código claro e bem escrito, acompanhado de logs bem escritos para as alterações das (<xref linkend="fig-change-log"/>) são usados em seu lugar. O desenvolvimento do FreeBSD acontece por <quote>consenso áspero e por código sendo executado</quote> <citation>Carp1996</citation>.</para>

      <figure xml:id="fig-change-log">
        <title>Um exemplo de entrada no log de alteração</title>
        <programlisting>
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.
        </programlisting>
      </figure>

      <simpara>A comunicação entre os programadores é reforçada pelo uso de um <citerefentry><refentrytitle>style</refentrytitle><manvolnum>9</manvolnum></citerefentry> padrão de codificação, comum entre eles.</simpara>

      <formalpara>
        <title>Canais de Comunicação</title>
        <para>Os colaboradores do FreeBSD estão espalhados por todo o mundo. O email (e em menor extensão, o IRC) é o meio de comunicação preferido no projeto.</para>
      </formalpara>
    </sect2>

    <sect2>
      <title>Melhores práticas para colaborar com o projeto FreeBSD</title>

      <para>Agora iremos examinar algumas das melhores práticas para se fazer um melhor uso do FreeBSD no desenvolvimento de produtos.</para>

      <variablelist>
        <varlistentry>
          <term>Se planeje para o longo prazo</term>
          <listitem>
            <para>Implante processos que o ajudem a monitorar o desenvolvimento do FreeBSD. Por exemplo:</para>
            <formalpara>
              <title>Acompanhe o código fonte do FreeBSD</title>
              <para>O projeto facilita o espelhamento do seu repositório SVN usando <link xlink:href="@@URL_RELPREFIX@@/doc/en_US.ISO8859-1/articles/committers-guide/article.html#svn-advanced-use-setting-up-svnsync"><application>svnsync</application></link>. Ter o histórico completo do código fonte é útil quando se está debugando problemas complexos e oferece informações valiosas sobre as intenções dos desenvolvedores originais. Utilize um sistema de controle de código que lhe permita mesclar facilmente as alterações entre o código original do FreeBSD e o seu próprio código.</para>
            </formalpara>
            <para>A <xref linkend="fig-svn-blame"/> mostra as anotações em uma parte do arquivo referenciado pelo log de alterações da <xref linkend="fig-change-log"/>. A ascendência de cada linha de código é claramente visível. Listagens com as anotações mostrando a história de cada arquivo que faz parte do FreeBSD estão <link xlink:href="https://svnweb.freebsd.org/">disponíveis na web</link>.</para>
            <figure xml:id="fig-svn-blame">
              <title>Código fonte exibindo a listagem de anotações gerada utilizando o <command>svn blame</command></title>
              <programlisting>

#REV         #WHO #DATE                                        #TEXT

176410        bde 2008-02-19 07:42:46 -0800 (Tue, 19 Feb 2008) #include &lt;sys/cdefs.h&gt;
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 &lt;float.h&gt;
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"

              </programlisting>
            </figure>

            <formalpara>
              <title>Nomeie um guardião</title>
              <para>Nomeie um <firstterm>guardião</firstterm> para monitorar o desenvolvimento do FreeBSD, para manter-se atento a mudanças que poderiam potencialmente afetar os seus produtos.</para>
            </formalpara>
            <formalpara>
              <title>Comunique os erros que encontrar de volta para o projeto</title>
              <para>Se você encontrar um bug no código do FreeBSD que você está utilizando, envie um <link xlink:href="https://www.FreeBSD.org/support/bugreports.html">bug report</link>. Este procedimento simples irá ajudar a garantir que você não precisará corrigir o erro novamente da próxima vez que precisar importar novamente do código base do FreeBSD.</para>
            </formalpara>
          </listitem>
        </varlistentry>

        <varlistentry>
          <term>Se alavanque nos esforços de engenharia do FreeBSD para lançamento de novas versões</term>
          <listitem>
            <simpara>Utilize código da branch de desenvolvimento -STABLE do FreeBSD. Este branch de desenvolvimento é formalmente suportado pelas equipes de engenharia de lançamento e de segurança, e é formada apenas por código testado.</simpara>
          </listitem>
        </varlistentry>

        <varlistentry>
          <term>Doe código para reduzir seus custos</term>
          <listitem>
            <simpara>Uma parte significativa dos custos relacionados ao desenvolvimento de um produto é o de realizar a sua manutenção. Ao doar partes não criticas do seu código para o projeto, você se beneficia por ter o seu código exposto de uma forma ampla, exposição que ele não teria de outra forma. Esta exposição por sua vez leva eliminação de um maior numero de bugs e de vulnerabilidades de segurança, e permite que anomalias de desempenho sejam identificadas e corrigidas.</simpara>
          </listitem>
        </varlistentry>

        <varlistentry>
          <term>Obtenha suporte efetivo</term>
          <listitem>
            <simpara>Para produtos com prazos apertados, é recomendado que você contrate o suporte ou consultoria de um desenvolvedor ou empresa com experiência em FreeBSD. A <link xlink:href="http://lists.FreeBSD.org/mailman/listinfo/freebsd-jobs">lista de discussão sobre empregos relacionados ao FreeBSD</link>  é um canal de comunicação muito útil para se encontrar talentos. O projeto FreeBSD mantém uma <link xlink:href="@@URL_RELPREFIX@@/commercial/consult_bycat.html">galeria de consultores e empresas de consultoria</link> que trabalham com FreeBSD. O <link xlink:href="http://www.bsdcertification.org/">Grupo de Certificação BSD</link> oferece certificação para todos os principais sistemas operacionais derivados do BSD.</simpara>

            <simpara>Para as necessidades menos importantes, você pode pedir ajuda nas <link xlink:href="http://lists.FreeBSD.org/mailman/listinfo">listas de discussão do projeto</link>. Um guia útil para seguir quando precisar pedir está listado em <citation>Ray2004</citation>.</simpara>
          </listitem>
        </varlistentry>

        <varlistentry>
          <term>Divulgue o seu envolvimento</term>
          <listitem>
            <simpara>Você não é obrigado a divulgar que faz uso do FreeBSD, mas ao fazê-lo você estará ajudando ambos os esforços, o seu e o do projeto.</simpara>
            <simpara>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 organizações que apoiam o FreeBSD maior será a presença do sistema na cabeça (mind share) dos desenvolvedores. Ao contribuir para aumentar o numero de desenvolvedores interessados no FreeBSD, você estará gerando uma base saudável para o seu futuro.</simpara>
          </listitem>
        </varlistentry>

        <varlistentry>
          <term>Suporte os desenvolvedores do FreeBSD</term>
          <listitem>
            <simpara>Às vezes, o caminho mais direto para ver uma funcionalidade que você deseja implementada no FreeBSD é suportar um desenvolvedor que já esteja olhando um problema relacionado. A ajuda pode variar de uma doação de hardware até uma assistência financeira direta. Em alguns países, as doações para o projeto FreeBSD usufruem de benefícios fiscais. O projeto possui um <link xlink:href="@@URL_RELPREFIX@@/donations/">canal de comunicação dedicado</link> para assuntos relacionados a doações e para ajudar os doadores. O projeto também mantém uma página web na qual os desenvolvedores podem <link xlink:href="@@URL_RELPREFIX@@/donations/wantlist.html">listar suas necessidades</link>.</simpara>
            <simpara>Por uma política do projeto, o FreeBSD <link xlink:href="@@URL_RELPREFIX@@/doc/en_US.ISO8859-1/articles/contributors">reconhece</link> todas as contribuições recebidas em seu site web.</simpara>
          </listitem>
        </varlistentry>
      </variablelist>
    </sect2>
  </sect1>

  <sect1 xml:id="conclusion">
    <title>Conclusão</title>
    <para>O Objetivo do projeto FreeBSD é criar e distribuir o código fonte de um sistema operacional de alta qualidade. Ao trabalhar com o projeto FreeBSD você pode reduzir os seus custos de desenvolvimento e melhorar o tempo necessário para lançar seus novos produtos no mercado em vários cenários de desenvolvimento de produtos.</para>
    <para>Foram examinadas as características do FreeBSD que o tornam uma excelente opção na estratégia de produto de uma organização. 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 práticas que podem ajudar na colaboração da iniciativa privada com o projeto FreeBSD.</para>
  </sect1>

  <bibliography>
    <biblioentry>
      <abbrev>Carp1996</abbrev>
      <citetitle><link xlink:href="http://www.ietf.org/rfc/rfc1958.txt">The Architectural Principles of the Internet</link></citetitle>
      <author><personname><firstname>B.</firstname><surname>Carpenter</surname></personname><affiliation> <orgname>The Internet Architecture Board</orgname> </affiliation></author>
      <copyright><year>1996</year></copyright>
    </biblioentry>
    <biblioentry>
      <abbrev>ComGuide</abbrev>
      <citetitle><link xlink:href="@@URL_RELPREFIX@@/doc/en_US.ISO8859-1/articles/committers-guide">Committer's Guide</link></citetitle>
      <authorgroup>
        <author><orgname>The FreeBSD Project</orgname></author>
      </authorgroup>
      <copyright><year>2005</year></copyright>
    </biblioentry>
    <biblioentry>
      <abbrev>GoldGab2005</abbrev> <citetitle><link xlink:href="http://dreamsongs.com/IHE/IHE.html">Innovation Happens Elsewhere: Open Source as Business Strategy</link></citetitle>
      <authorgroup>
        <author><personname><firstname>Ron</firstname><surname>Goldman</surname></personname></author>
        <author><personname><firstname>Richard</firstname><surname>Gabriel</surname></personname></author>
      </authorgroup>
      <copyright><year>2005</year></copyright>
      <biblioid class="isbn">ISBN 1558608893</biblioid>
      <publisher>
        <publishername>Morgan-Kaufmann</publishername>
      </publisher>
    </biblioentry>
    <biblioentry xreflabel="Hub1994">
      <!-- XXX Get the date of this article right -->
      <abbrev>Hub1994</abbrev>
      <citetitle><link xlink:href="@@URL_RELPREFIX@@/doc/en_US.ISO8859-1/articles/contributing">Contributing to the FreeBSD Project</link></citetitle>
      <author><personname><firstname>Jordan</firstname><surname>Hubbard</surname></personname></author>
      <copyright><year>19942005</year></copyright>
      <publisher>
        <publishername>The FreeBSD Project</publishername>
      </publisher>
    </biblioentry>
    <biblioentry>
      <abbrev>McKu1999</abbrev>
      <citetitle><link xlink:href="http://www.usenix.org/publications/library/proceedings/usenix99/mckusick.html">Soft Updates: A Technique for Eliminating Most Synchronous Writes in the Fast Filesystem</link></citetitle>
      <authorgroup>
        <author><personname><firstname>Kirk</firstname><surname>McKusick</surname></personname></author>
        <author><personname><firstname>Gregory</firstname><surname>Ganger</surname></personname></author>
      </authorgroup>
      <confgroup>
        <conftitle>USENIX Annual Technical Conference</conftitle>
      </confgroup>
      <copyright><year>1999</year></copyright>
    </biblioentry>
    <biblioentry>
      <abbrev>McKu1999-1</abbrev>
      <citetitle><link xlink:href="http://www.oreilly.com/catalog/opensources/book/kirkmck.html">Twenty Years of Berkeley Unix: From AT&amp;T-Owned to Freely Redistributable</link></citetitle>
      <authorgroup>
        <author><personname><firstname>Marshall Kirk</firstname><surname>McKusick</surname></personname></author>
      </authorgroup>
      <citetitle><link xlink:href="http://www.oreilly.com/catalog/opensources/book/toc.html">Open Sources: Voices from the Open Source Revolution</link></citetitle>
      <biblioid class="isbn">ISBN 1-56592-582-3</biblioid>
      <publisher>
        <publishername>O'Reilly Inc.</publishername>
      </publisher>
      <copyright><year>1993</year></copyright>
    </biblioentry>
    <biblioentry>
      <abbrev>Mon2005</abbrev>
      <citetitle><link xlink:href="@@URL_RELPREFIX@@/doc/en_US.ISO8859-1/articles/bsdl-gpl/article.html">Why you should use a BSD style license for your Open Source Project</link></citetitle>
      <author><personname><firstname>Bruce</firstname><surname>Montague</surname></personname></author>
      <publisher>
        <publishername>The FreeBSD Project</publishername>
      </publisher>
      <copyright><year>2005</year></copyright>
    </biblioentry>
    <biblioentry xreflabel="Nik2005">
      <abbrev>Nik2005</abbrev>
      <citetitle><link xlink:href="@@URL_RELPREFIX@@/doc/en_US.ISO8859-1/books/dev-model/book.html">A project model for the FreeBSD Project</link></citetitle>
      <author><personname><firstname>Niklas</firstname><surname>Saers</surname></personname></author>
      <copyright><year>2005</year></copyright>
      <publisher>
        <publishername>The FreeBSD Project</publishername>
      </publisher>
    </biblioentry>
    <biblioentry xreflabel="Nor1993">
      <abbrev>Nor1993</abbrev>
      <citetitle><link xlink:href="http://www.norvig.com/luv-slides.ps">Tutorial on Good Lisp Programming Style</link></citetitle>
      <authorgroup>
        <author><personname><firstname>Peter</firstname><surname>Norvig</surname></personname></author>
        <author><personname><firstname>Kent</firstname><surname>Pitman</surname></personname></author>
      </authorgroup>
      <copyright><year>1993</year></copyright>
    </biblioentry>
    <biblioentry>
      <abbrev>Nor2001</abbrev>
      <citetitle><link xlink:href="http://www.norvig.com/21-days.html">Teach Yourself Programming in Ten Years</link></citetitle>
      <author><personname><firstname>Peter</firstname><surname>Norvig</surname></personname></author>
      <copyright><year>2001</year></copyright>
    </biblioentry>
    <biblioentry>
      <abbrev>Ray2004</abbrev>
      <citetitle><link xlink:href="http://www.catb.org/~esr/faqs/smart-questions.html">How to ask questions the smart way</link></citetitle>
      <authorgroup>
        <author><personname><firstname>Eric Steven</firstname><surname>Raymond</surname></personname></author>
      </authorgroup>
      <copyright><year>2004</year></copyright>
    </biblioentry>
    <biblioentry>
      <abbrev>RelEngDoc</abbrev>
      <citetitle><link xlink:href="@@URL_RELPREFIX@@/doc/en_US.ISO8859-1/articles/releng">FreeBSD Release Engineering</link></citetitle>
      <author><personname><firstname>Murray</firstname><surname>Stokely</surname></personname></author>
      <copyright><year>2001</year></copyright>
      <publisher>
        <publishername>The FreeBSD Project</publishername>
      </publisher>
    </biblioentry>
  </bibliography>

</article>