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
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
|
<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE article PUBLIC "-//FreeBSD//DTD DocBook XML V5.0-Based Extension//EN"
"http://www.FreeBSD.org/XML/share/xml/freebsd50.dtd">
<!-- $FreeBSD$ -->
<!-- The FreeBSD Documentation Project -->
<article xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" version="5.0" xml:lang="en">
<info><title>Explaining BSD</title>
<author><personname><firstname>Greg</firstname><surname>Lehey</surname></personname><affiliation>
<address><email>grog@FreeBSD.org</email></address>
</affiliation></author>
<legalnotice xml:id="trademarks" role="trademarks">
&tm-attrib.freebsd;
&tm-attrib.amd;
&tm-attrib.apple;
&tm-attrib.intel;
&tm-attrib.linux;
&tm-attrib.opengroup;
&tm-attrib.sparc;
&tm-attrib.sun;
&tm-attrib.unix;
&tm-attrib.general;
</legalnotice>
<pubdate>$FreeBSD$</pubdate>
<releaseinfo>$FreeBSD$</releaseinfo>
<abstract>
<para>In the open source world, the word <quote>Linux</quote> is almost
synonymous with <quote>Operating System</quote>, but it is not the only
open source &unix; operating system. According
to the <link xlink:href="http://www.leb.net/hzo/ioscount/data/r.9904.txt">Internet
Operating System Counter</link>, as of April 1999 31.3% of the
world's network connected machines run Linux. 14.6% run BSD &unix;.
Some of the world's largest web operations, such as <link xlink:href="http://www.yahoo.com/">Yahoo!</link>, run BSD. The world's
busiest FTP server of 1999 (now defunct), <link xlink:href="ftp://ftp.cdrom.com/">ftp.cdrom.com</link>, used BSD to
transfer 1.4 TB of data a day. Clearly this is not a niche
market: BSD is a well-kept secret.</para>
<para>So what is the secret? Why is BSD not better known? This white
paper addresses these and other questions.</para>
<para>Throughout this paper, differences between BSD and Linux will be
noted <emphasis>like this</emphasis>.</para>
</abstract>
</info>
<sect1 xml:id="what-is-bsd">
<title>What is BSD?</title>
<para>BSD stands for <quote>Berkeley Software Distribution</quote>. It is
the name of distributions of source code from the University of
California, Berkeley, which were originally extensions to AT&T's
Research &unix; operating system. Several open source operating system
projects are based on a release of this source code known as
4.4BSD-Lite. In addition, they comprise a number of packages from other
Open Source projects, including notably the GNU project. The overall
operating system comprises:</para>
<itemizedlist>
<listitem>
<para>The BSD kernel, which handles process scheduling, memory
management, symmetric multi-processing (SMP), device drivers,
etc.</para>
<para><emphasis>Unlike the Linux kernel, there are several different
BSD kernels with differing capabilities.</emphasis></para>
</listitem>
<listitem>
<para>The C library, the base API for the system.</para>
<para><emphasis>The BSD C library is based on code from Berkeley, not
the GNU project.</emphasis></para>
</listitem>
<listitem>
<para>Utilities such as shells, file utilities, compilers and
linkers.</para>
<para><emphasis>Some of the utilities are derived from the GNU
project, others are not.</emphasis></para>
</listitem>
<listitem>
<para>The X Window system, which handles graphical display.</para>
<para>The X Window system used in most versions of BSD is maintained
by the
<link xlink:href="http://www.X.org/">X.Org project</link>.
&os; allows the user to choose from a variety of desktop
environments, such as <application>Gnome</application>,
<application>KDE</application>, or <application>Xfce</application>;
and lightweight window managers like
<application>Openbox</application>,
<application>Fluxbox</application>, or
<application>Awesome</application>.</para>
</listitem>
<listitem>
<para>Many other programs and utilities.</para>
</listitem>
</itemizedlist>
</sect1>
<sect1 xml:id="what-a-real-unix">
<title>What, a real &unix;?</title>
<para>The BSD operating systems are not clones, but open source
derivatives of AT&T's Research &unix; operating system, which is also
the ancestor of the modern &unix; System V. This may surprise you. How
could that happen when AT&T has never released its code as open
source?</para>
<para>It is true that AT&T &unix; is not open source, and in a copyright
sense BSD is very definitely <emphasis>not</emphasis> &unix;, but on the
other hand, AT&T has imported sources from other projects,
noticeably the Computer Sciences Research Group (CSRG) of the University of
California in Berkeley, CA. Starting in 1976, the CSRG started
releasing tapes of their software, calling them <emphasis>Berkeley
Software Distribution</emphasis> or <emphasis>BSD</emphasis>.</para>
<para>Initial BSD releases consisted mainly of user programs, but that
changed dramatically when the CSRG landed a contract with the Defense
Advanced Research Projects Agency (DARPA) to upgrade the communications
protocols on their network, ARPANET. The new protocols were known as
the <emphasis>Internet Protocols</emphasis>, later
<emphasis>TCP/IP</emphasis> after the most important protocols. The
first widely distributed implementation was part of 4.2BSD, in
1982.</para>
<para>In the course of the 1980s, a number of new workstation companies
sprang up. Many preferred to license &unix; rather than developing
operating systems for themselves. In particular, Sun Microsystems
licensed &unix; and implemented a version of 4.2BSD, which they called
&sunos;. When AT&T themselves were allowed to sell &unix; commercially,
they started with a somewhat bare-bones implementation called System
III, to be quickly followed by System V. The System V code base did not
include networking, so all implementations included additional software
from the BSD, including the TCP/IP software, but also utilities such as
the <emphasis>csh</emphasis> shell and the <emphasis>vi</emphasis>
editor. Collectively, these enhancements were known as the
<emphasis>Berkeley Extensions</emphasis>.</para>
<para>The BSD tapes contained AT&T source code and thus required a
&unix; source license. By 1990, the CSRG's funding was running out, and
it faced closure. Some members of the group decided to release the BSD
code, which was Open Source, without the AT&T proprietary code.
This finally happened with the <emphasis>Networking Tape 2</emphasis>,
usually known as <emphasis>Net/2</emphasis>. Net/2 was not a complete
operating system: about 20% of the kernel code was missing. One of the
CSRG members, William F. Jolitz, wrote the remaining code and released
it in early 1992 as <emphasis>386BSD</emphasis>. At the same time,
another group of ex-CSRG members formed a commercial company called
<link xlink:href="http://www.bsdi.com/">Berkeley Software Design Inc.</link>
and released a beta version of an operating system called
<link xlink:href="http://www.bsdi.com/">BSD/386</link>, which was based on
the same sources. The name of the operating system was later changed
to BSD/OS.</para>
<para>386BSD never became a stable operating system. Instead, two other
projects split off from it in 1993:
<link xlink:href="http://www.NetBSD.org/">NetBSD</link> and
<link xlink:href="&url.base;/index.html">FreeBSD</link>. The two projects
originally diverged due to differences in patience waiting for
improvements to 386BSD: the NetBSD people started early in the year,
and the first version of FreeBSD was not ready until the end of the
year. In the meantime, the code base had diverged sufficiently to
make it difficult to merge. In addition, the projects had different
aims, as we will see below. In 1996,
<link xlink:href="http://www.OpenBSD.org/">OpenBSD</link> split off from
NetBSD, and in 2003,
<link xlink:href="http://www.dragonflybsd.org/">DragonFlyBSD</link> split
off from FreeBSD.</para>
</sect1>
<sect1 xml:id="why-is-bsd-not-better-known">
<title>Why is BSD not better known?</title>
<para>For a number of reasons, BSD is relatively unknown:</para>
<orderedlist>
<listitem>
<para>The BSD developers are often more interested in polishing their
code than marketing it.</para>
</listitem>
<listitem>
<para>Much of Linux's popularity is due to factors external to the
Linux projects, such as the press, and to companies formed to
provide Linux services. Until recently, the open source BSDs had no
such proponents.</para>
</listitem>
<listitem>
<para>BSD developers tend to be more experienced than Linux
developers, and have less interest in making the system easy to use.
Newcomers tend to feel more comfortable with Linux.</para>
</listitem>
<listitem>
<para>In 1992, AT&T sued
<link xlink:href="http://www.bsdi.com/">BSDI</link>,
the vendor of BSD/386, alleging that the product contained
AT&T-copyrighted code. The case was settled out of court in
1994, but the spectre of the litigation continues to haunt people.
As recently as March 2000 an article published on the web claimed
that the court case had been <quote>recently settled</quote>.</para>
<para>One detail that the lawsuit did clarify is the naming: in the
1980s, BSD was known as <quote>BSD &unix;</quote>. With the
elimination of the last vestige of AT&T code from BSD, it
also lost the right to the name &unix;. Thus you will see
references in book titles to <quote>the 4.3BSD &unix; operating
system</quote> and <quote>the 4.4BSD operating
system</quote>.</para>
</listitem>
<listitem>
<para>There is a perception that the BSD projects are fragmented and
belligerent. The
<link xlink:href="http://interactive.wsj.com/bin/login?Tag=/&URI=/archive/retrieve.cgi%253Fid%253DSB952470579348918651.djm&">Wall Street
Journal</link> spoke of <quote>balkanization</quote> of the
BSD projects. Like the law suit, this perception bases mainly
on ancient history.</para>
</listitem>
</orderedlist>
</sect1>
<sect1 xml:id="comparing-bsd-and-linux">
<title>Comparing BSD and Linux</title>
<para>So what is really the difference between, say, Debian Linux and
FreeBSD? For the average user, the difference is surprisingly small:
Both are &unix; like operating systems. Both are developed by
non-commercial projects (this does not apply to many other Linux
distributions, of course). In the following section, we will look at BSD
and compare it to Linux. The description applies most closely to
FreeBSD, which accounts for an estimated 80% of the BSD installations,
but the differences from NetBSD, OpenBSD and DragonFlyBSD are small.
</para>
<sect2>
<title>Who owns BSD?</title>
<para>No one person or corporation owns BSD. It is created and
distributed by a community of highly technical and committed
contributors all over the world. Some of the components of BSD are
Open Source projects in their own right and managed by different
project maintainers.</para>
</sect2>
<sect2>
<title>How is BSD developed and updated?</title>
<para>The BSD kernels are developed and updated following the Open
Source development model. Each project maintains a publicly
accessible <emphasis>source tree</emphasis> under the
<link xlink:href="http://www.cvshome.org/">Concurrent Versions
System</link> (CVS), which contains all source files for the
project, including documentation and other incidental files. CVS
allows users to <quote>check out</quote> (in other words, to
extract a copy of) any desired version of the system.</para>
<para>A large number of developers worldwide contribute to improvements
to BSD. They are divided into three kinds:</para>
<itemizedlist>
<listitem>
<para><firstterm>Contributors</firstterm> write code or documentation.
They are not permitted to commit (add code) directly to the source
tree. In order for their code to be included in the system, it
must be reviewed and checked in by a registered developer, known
as a <emphasis>committer</emphasis>.</para>
</listitem>
<listitem>
<para><firstterm>Committers</firstterm> are developers with write
access to the source tree. In order to become a committer, an
individual must show ability in the area in which they are
active.</para>
<para>
It is at the individual committer's discretion whether they should
obtain authority before committing changes to the source tree. In
general, an experienced committer may make changes which are
obviously correct without obtaining consensus. For example, a
documentation project committer may correct typographical or
grammatical errors without review. On the other hand, developers
making far-reaching or complicated changes are expected to submit
their changes for review before committing them. In extreme
cases, a core team member with a function such as Principal
Architect may order that changes be removed from the tree, a
process known as <firstterm>backing out</firstterm>. All committers
receive mail describing each individual commit, so it is not
possible to commit secretly.</para>
</listitem>
<listitem>
<para>The <firstterm>Core team</firstterm>. FreeBSD and
NetBSD each have a core team which manages the project. The
core teams developed in the course of the projects, and their role
is not always well-defined. It is not necessary to be a developer
in order to be a core team member, though it is normal. The rules
for the core team vary from one project to the other, but in
general they have more say in the direction of the project than
non-core team members have.</para>
</listitem>
</itemizedlist>
<para>This arrangement differs from Linux in a number of ways:</para>
<orderedlist>
<listitem>
<para>No one person controls the content of the system. In
practice, this difference is overrated, since the Principal Architect
can require that code be backed out, and even in the Linux project
several people are permitted to make changes.</para>
</listitem>
<listitem>
<para>On the other hand, there <emphasis>is</emphasis> a central
repository, a single place where you can find the entire operating
system sources, including all older versions.</para>
</listitem>
<listitem>
<para>BSD projects maintain the entire <quote>Operating
System</quote>, not only the kernel. This distinction is only
marginally useful: neither BSD nor Linux is useful without
applications. The applications used under BSD are frequently the
same as the applications used under Linux.</para>
</listitem>
<listitem>
<para>As a result of the formalized maintenance of a single CVS
source tree, BSD development is clear, and it is possible to
access any version of the system by release number or by date.
CVS also allows incremental updates to the system: for example,
the FreeBSD repository is updated about 100 times a day. Most of
these changes are small.</para>
</listitem>
</orderedlist>
</sect2>
<sect2>
<title>BSD releases</title>
<para>FreeBSD, NetBSD and OpenBSD provide the system in three different
<quote>releases</quote>. As with Linux, releases are assigned a
number such as 1.4.1 or 3.5. In addition, the version number has a
suffix indicating its purpose:</para>
<orderedlist>
<listitem>
<para>The development version of the system is called
<firstterm>CURRENT</firstterm>. FreeBSD assigns a number to
CURRENT, for example FreeBSD 5.0-CURRENT. NetBSD uses a slightly
different naming scheme and appends a single-letter suffix which
indicates changes in the internal interfaces, for example NetBSD
1.4.3G. OpenBSD does not assign a number (<quote>OpenBSD-current</quote>).
All new development on the system goes into this branch.</para>
</listitem>
<listitem>
<para>At regular intervals, between two and four times a year, the
projects bring out a <firstterm>RELEASE</firstterm> version of the
system, which is available on CD-ROM and for free download from
FTP sites, for example OpenBSD 2.6-RELEASE or NetBSD 1.4-RELEASE.
The RELEASE version is intended for end users and is the normal
version of the system. NetBSD also provides <emphasis>patch
releases</emphasis> with a third digit, for example NetBSD
1.4.2.</para>
</listitem>
<listitem>
<para>As bugs are found in a RELEASE version, they are fixed, and
the fixes are added to the CVS tree. In FreeBSD, the resultant
version is called the <firstterm>STABLE</firstterm> version, while in NetBSD and OpenBSD
it continues to be called the RELEASE version. Smaller new
features can also be added to this branch after a period of test
in the CURRENT branch.</para>
</listitem>
</orderedlist>
<para><emphasis>By contrast, Linux maintains two separate code trees:
the stable version and the development version. Stable versions
have an even minor version number, such as 2.0, 2.2 or 2.4.
Development versions have an odd minor version number, such as 2.1,
2.3 or 2.5. In each case, the number is followed by a further
number designating the exact release. In addition, each vendor adds
their own userland programs and utilities, so the name of the
distribution is also important. Each distribution vendor also
assigns version numbers to the distribution, so a complete
description might be something like <quote>TurboLinux 6.0 with kernel
2.2.14</quote></emphasis></para>
</sect2>
<sect2>
<title>What versions of BSD are available?</title>
<para>In contrast to the numerous Linux distributions, there are only
four major open source BSDs. Each BSD project maintains its own source
tree and its own kernel. In practice, though, there appear to be
fewer divergences between the userland code of the projects than there
is in Linux.</para>
<para>It is difficult to categorize the goals of each project: the
differences are very subjective. Basically,</para>
<itemizedlist>
<listitem>
<para>&os; aims for high performance and ease of use by
end users, and is a favourite of web content providers. It runs
on a <link xlink:href="&url.base;/platforms/">number of platforms</link>
and has significantly more users than the other projects.</para>
</listitem>
<listitem>
<para>NetBSD aims for maximum portability: <quote>of course it runs
NetBSD</quote>. It runs on machines from palmtops to large
servers, and has even been used on NASA space missions. It is a
particularly good choice for running on old non-&intel;
hardware.</para>
</listitem>
<listitem>
<para>OpenBSD aims for security and code purity: it uses a
combination of the open source concept and rigorous code reviews
to create a system which is demonstrably correct, making it the
choice of security-conscious organizations such as banks, stock
exchanges and US Government departments. Like NetBSD, it runs on
a number of platforms.</para>
</listitem>
<listitem>
<para>DragonFlyBSD aims for high performance and scalability under
everything from a single-node UP system to a massively clustered system.
DragonFlyBSD has several long-range technical goals, but focus lies on
providing a SMP-capable infrastructure that is easy to understand,
maintain and develop for.</para>
</listitem>
</itemizedlist>
<para>There are also two additional BSD &unix; operating systems which are not
open source, BSD/OS and Apple's &macos; X:</para>
<itemizedlist>
<listitem>
<para>BSD/OS was the oldest of the 4.4BSD derivatives. It
was not open source, though source code licenses were
available at relatively low cost. It resembled FreeBSD in
many ways. Two years after the acquisition of BSDi by
Wind River Systems, BSD/OS failed to survive as an
independent product. Support and source code may still
be available from Wind River, but all new development is
focused on the VxWorks embedded operating system.</para>
</listitem>
<listitem>
<para><link xlink:href="http://www.apple.com/macosx/server/">&macos;
X</link> is the latest version of the operating system for
&apple;'s
&mac; line. The BSD core of this operating
system, <link xlink:href="http://developer.apple.com/darwin/">Darwin</link>,
is available as a fully functional open source operating
system for x86 and PPC computers. The Aqua/Quartz
graphics system and many other proprietary aspects of
&macos; X remain closed-source, however. Several Darwin
developers are also FreeBSD committers, and
vice-versa.</para>
</listitem>
</itemizedlist>
</sect2>
<sect2>
<title>How does the BSD license differ from the GNU Public
license?</title>
<para>Linux is available under the
<link xlink:href="http://www.fsf.org/copyleft/gpl.html">GNU General Public
License</link> (GPL), which is designed to eliminate closed
source software. In particular, any derivative work of a product
released under the GPL must also be supplied with source code if
requested. By contrast, the
<link xlink:href="http://www.opensource.org/licenses/bsd-license.html">BSD
license</link> is less restrictive: binary-only distributions are
allowed. This is particularly attractive for embedded
applications.</para>
</sect2>
<sect2>
<title>What else should I know?</title>
<para>Since fewer applications are available for BSD than Linux, the BSD
developers created a Linux compatibility package, which allows Linux
programs to run under BSD. The package includes both kernel
modifications, in order to correctly perform Linux system calls, and
Linux compatibility files such as the C library. There is no
noticeable difference in execution speed between a Linux application
running on a Linux machine and a Linux application running on a BSD
machine of the same speed.</para>
<para>The <quote>all from one supplier</quote> nature of BSD means that
upgrades are much easier to handle than is frequently the case with
Linux. BSD handles library version upgrades by providing
compatibility modules for earlier library versions, so it is possible
to run binaries which are several years old with no problems.</para>
</sect2>
<sect2>
<title>Which should I use, BSD or Linux?</title>
<para>What does this all mean in practice? Who should use BSD, who
should use Linux?</para>
<para>This is a very difficult question to answer. Here are some
guidelines:</para>
<itemizedlist>
<listitem>
<para><quote>If it ain't broke, don't fix it</quote>: If you already
use an open source operating system, and you are happy with it,
there is probably no good reason to change.</para>
</listitem>
<listitem>
<para>BSD systems, in particular FreeBSD, can have notably higher
performance than Linux. But this is not across the board. In many
cases, there is little or no difference in performance. In some
cases, Linux may perform better than FreeBSD.</para>
</listitem>
<listitem>
<para>In general, BSD systems have a better reputation for
reliability, mainly as a result of the more mature code
base.</para>
</listitem>
<listitem>
<para>BSD projects have a better reputation for the quality and
completeness of their documentation. The various documentation
projects aim to provide actively updated documentation, in many
languages, and covering all aspects of the system.</para>
</listitem>
<listitem>
<para>The BSD license may be more attractive than the GPL.</para>
</listitem>
<listitem>
<para>BSD can execute most Linux binaries, while Linux can not execute BSD
binaries. Many BSD implementations can also execute binaries
from other &unix; like systems. As a result, BSD may present an
easier migration route from other systems than
Linux would.</para>
</listitem>
</itemizedlist>
</sect2>
<sect2>
<title>Who provides support, service, and training for BSD?</title>
<para>BSDi / <link xlink:href="http://www.freebsdmall.com">FreeBSD
Mall, Inc.</link> have been providing support contracts for
FreeBSD for nearly a decade.</para>
<para>In addition, each of the projects has a list of consultants for
hire:
<link xlink:href="&url.base;/commercial/consult_bycat.html">FreeBSD</link>,
<link xlink:href="http://www.netbsd.org/gallery/consultants.html">NetBSD</link>,
and <link xlink:href="http://www.openbsd.org/support.html">OpenBSD</link>.</para>
</sect2>
</sect1>
</article>
|