doc/en_US.ISO8859-1/books/developers-handbook/introduction/chapter.sgml
Gabor Pali d10e06baff - Document directory "cddl" for utilities covered by the Common
Development and Distribution License

PR:		doc/128563
Submitted by:	Steven Kreuzer <skreuzer (at) exit2shell (dot) com>
2008-11-18 07:23:45 +00:00

231 lines
6.8 KiB
Text

<!--
The FreeBSD Documentation Project
$FreeBSD$
-->
<chapter id="introduction">
<chapterinfo>
<authorgroup>
<author>
<firstname>Murray</firstname>
<surname>Stokely</surname>
<contrib>Contributed by </contrib>
</author>
<author>
<firstname>Jeroen</firstname>
<surname>Ruigrok van der Werven</surname>
</author>
</authorgroup>
</chapterinfo>
<title>Introduction</title>
<sect1 id="introduction-devel">
<title>Developing on FreeBSD</title>
<para>So here we are. System all installed and you are ready to
start programming. But where to start? What does FreeBSD
provide? What can it do for me, as a programmer?</para>
<para>These are some questions which this chapter tries to answer.
Of course, programming has different levels of proficiency like
any other trade. For some it is a hobby, for others it is their
profession. The information in this chapter might be aimed
toward the beginning programmer; indeed, it could serve useful
for the programmer unfamiliar with the &os; platform.</para>
</sect1>
<sect1 id="introduction-bsdvision">
<title>The BSD Vision</title>
<para>To produce the best &unix; like operating system package
possible, with due respect to the original software tools
ideology as well as usability, performance and
stability.</para>
</sect1>
<sect1 id="introduction-archguide">
<title>Architectural Guidelines</title>
<para>Our ideology can be described by the following
guidelines</para>
<itemizedlist>
<listitem><para>Do not add new functionality unless an
implementor cannot complete a real application without
it.</para></listitem>
<listitem><para>It is as important to decide what a system is
not as to decide what it is. Do not serve all the world's
needs; rather, make the system extensible so that additional
needs can be met in an upwardly compatible
fashion.</para></listitem>
<listitem><para>The only thing worse than generalizing from one
example is generalizing from no examples at
all. </para></listitem>
<listitem><para>If a problem is not completely understood, it is
probably best to provide no solution at all.</para></listitem>
<listitem><para>If you can get 90 percent of the desired effect
for 10 percent of the work, use the simpler
solution.</para></listitem>
<listitem><para>Isolate complexity as much as
possible.</para></listitem>
<listitem><para>Provide mechanism, rather than policy. In
particular, place user interface policy in the client's
hands.</para></listitem>
</itemizedlist>
<para>From Scheifler & Gettys: "X Window System"</para>
</sect1>
<sect1 id="introduction-layout">
<title>The Layout of
<filename class="directory">/usr/src</filename></title>
<para>The complete source code to FreeBSD is available from our
public CVS repository. The source code is normally installed in
<filename class="directory">/usr/src</filename> which contains the
following subdirectories:</para>
<para>
<informaltable frame="none" pgwide="1">
<tgroup cols="2">
<thead>
<row>
<entry>Directory</entry>
<entry>Description</entry>
</row>
</thead>
<tbody>
<row>
<entry><filename class="directory">bin/</filename></entry>
<entry>Source for files in
<filename>/bin</filename></entry>
</row>
<row>
<entry><filename class="directory">cddl/</filename></entry>
<entry>Utilities covered by the Common Development and
Distribution License</entry>
</row>
<row>
<entry><filename class="directory">contrib/</filename></entry>
<entry>Source for files from contributed software.</entry>
</row>
<row>
<entry><filename class="directory">crypto/</filename></entry>
<entry>Cryptographical sources</entry>
</row>
<row>
<entry><filename class="directory">etc/</filename></entry>
<entry>Source for files in <filename
class="directory">/etc</filename></entry>
</row>
<row>
<entry><filename class="directory">games/</filename></entry>
<entry>Source for files in <filename
class="directory">/usr/games</filename></entry>
</row>
<row>
<entry><filename class="directory">gnu/</filename></entry>
<entry>Utilities covered by the GNU Public License</entry>
</row>
<row>
<entry><filename class="directory">include/</filename></entry>
<entry>Source for files in <filename
class="directory">/usr/include</filename></entry>
</row>
<row>
<entry><filename
class="directory">kerberos5/</filename></entry>
<entry>Source for Kerberos version 5</entry>
</row>
<row>
<entry><filename class="directory">lib/</filename></entry>
<entry>Source for files in <filename
class="directory">/usr/lib</filename></entry>
</row>
<row>
<entry><filename class="directory">libexec/</filename></entry>
<entry>Source for files in <filename
class="directory">/usr/libexec</filename></entry>
</row>
<row>
<entry><filename
class="directory">release/</filename></entry>
<entry>Files required to produce a FreeBSD release</entry>
</row>
<row>
<entry><filename class="directory">rescue/</filename></entry>
<entry>Build system for the
<filename class="directory">/rescue</filename> utilities</entry>
</row>
<row>
<entry><filename class="directory">sbin/</filename></entry>
<entry>Source for files in <filename
class="directory">/sbin</filename></entry>
</row>
<row>
<entry><filename class="directory">secure/</filename></entry>
<entry>FreeSec sources</entry>
</row>
<row>
<entry><filename class="directory">share/</filename></entry>
<entry>Source for files in <filename
class="directory">/usr/share</filename></entry>
</row>
<row>
<entry><filename class="directory">sys/</filename></entry>
<entry>Kernel source files</entry>
</row>
<row>
<entry><filename class="directory">tools/</filename></entry>
<entry>Tools used for maintenance and testing of
FreeBSD</entry>
</row>
<row>
<entry><filename
class="directory">usr.bin/</filename></entry>
<entry>Source for files in <filename
class="directory">/usr/bin</filename></entry>
</row>
<row>
<entry><filename
class="directory">usr.sbin/</filename></entry>
<entry>Source for files in <filename
class="directory">/usr/sbin</filename></entry>
</row>
</tbody>
</tgroup>
</informaltable>
</para>
</sect1>
</chapter>