2. History and Introduction to the project

2.1. Project inception

FreeBSD as a project began in early 1993, after the "unofficial 386BSD patchkit" lost Bill Jolitz's sanction to continue providing an interim cleanup snapshot for 386BSD, which was progressing slowly for the previous year. The patchkit co-ordinators thought their goal still worthwhile, and adopted the name "FreeBSD". Early and continuing support from Walnut Creek CDROM has allowed impressive growth.

2.2. Code history and releases

FreeBSD 1.0, released late 1993, was based on the 4.3BSD Net/2 tape, components from 386BSD [1]. This 4.3BSD code can be traced back to the 1970's, meaning easily more than a decade of development beforehand.

Legal issues meant FreeBSD had to remove and rewrite large chunks of code, and the unencumbered FreeBSD 2.0 was released in early 1995, based on 4.4BSD-Lite [2]. OpenBSD 2.0 [3] split of from NetBSD 1.1 in late 1996, after some arguments between Theo de Raadt and the NetBSD developers.

The latest release of FreeBSD is currently 3.4-RELEASE, with 4.0-RELEASE due sometime in February. NetBSD 1.4.1, and OpenBSD 2.6 were recently released.

Example 1. BSD Family Tree

    First Edition (V1)
         |
    Second Edition (V2)
         |
    Third Edition (V3)
         |
    Fourth Edition (V4)
         |
    Fifth Edition (V5)
         |
    Sixth Edition (V6) -----*
           \                |
            \               |
             \              |
    Seventh Edition (V7)    |
                \           |
                 \        1BSD
                 32V        |
                   \      2BSD---------------*
                    \    /                   |
                     \  /                    |
                      \/                     |
                     3BSD                    |
                      |                      |
                   4.0BSD               2.7.9BSD
                      |                      |
           *------ 4.1BSD --------------> 2.8BSD
          /           |                      |
    Eighth Edition     |                 2.8.1BSD
         |            |                      |
         |        4.1aBSD -----------\       |
         |            |                \     |
         |        4.1bBSD                \   |
         |            |                    \ |
         |        4.1cBSD --------------> 2.9BSD
         |            |                      |
         |            |                   2.9BSD-Seismo
         |            |                      |
         +----<--- 4.2BSD               2.9.1BSD
         |            |                      |
         +----<--- 4.3BSD -------------> 2.10BSD
         |            |               /      |
    Ninth Edition     |              / 2.10.1BSD
         |         4.3BSD Tahoe-----+        |
         |            |              \       |
         |            |                \     |
         v            |                  2.11BSD
    Tenth Edition     |                      |
                      |                  2.11BSD rev #366
                   4.3BSD NET/1              |
                      |                      v
                   4.3BSD Reno
                      |
       *---------- 4.3BSD NET/2 -------------------+-------------*
       |                    |                      |             |
    386BSD 0.0              |                      |             |
       |                    |                      |             |
    386BSD 0.1 ------------>+                      |           BSDI 1.0
       |     \              |                  4.4BSD Alpha      |
       |     386BSD 1.0     |                      |             |
       |                    |                  4.4BSD            |
       |                    |                    / |             |
       |                    |   4.4BSD-Encumbered  |             |
       |                 NetBSD 0.8                |             |
       |                    |                      |             |
    FreeBSD 1.0          NetBSD 0.9                |             |
       |                    |           .----- 4.4BSD Lite --> BSDI 2.0
    FreeBSD 1.1             |          /   /       |             |
       |                    |         /   /        |           BSDI 2.0.1
    FreeBSD 1.1.5       .---|--------'   /         |             |
       |               /    |           /      4.4BSD Lite2 -> BSDI 2.1
    FreeBSD 1.1.5.1   /     |          /      /    |    | \      |
       |             /   NetBSD 1.0 <-'      /     |    |   \    |
       |            /       |              /       |    |    `-BSDI 3.0
    FreeBSD 2.0 <--'        |         FreeBSD 3.0  |    |        |
       |                     \               NetBSD 1.3 |        v
    FreeBSD 2.0.5             \                   OpenBSD 2.3
       |                       \
       |                        \
    FreeBSD 2.1                  |
     |   |                    NetBSD 1.1 ------.
     | FreeBSD 2.1.5             |              \
     |     |                  NetBSD 1.2         \
     | FreeBSD 2.1.6             |  \          OpenBSD 2.0
     |     |                     |   \             |
     | FreeBSD 2.1.6.1           |    \            |
     |     |                     |     \           |
     | FreeBSD 2.1.7             |      |          |
     |     |                     |  NetBSD 1.2.1   |
     | FreeBSD 2.1.7.1           |                 |
     |                           |                 |
     |                           |                 |
     *-FreeBSD 2.2               |                 |
     |        \                  |                 |
     |     FreeBSD 2.2.1         |                 |
     |         |                 |                 |
     |     FreeBSD 2.2.2         |             OpenBSD 2.1
     |         |              NetBSD 1.3           |
     |     FreeBSD 2.2.5         |   \             |
     |         |                 | NetBSD 1.3.1  OpenBSD 2.2
     |         v                 |    |            |
     |     FreeBSD 2.2.6         |    |          OpenBSD 2.3
     |         |                 | NetBSD 1.3.2    |
     |         v                 |    |            |
     |     FreeBSD 2.2.7         |    |            |
     |         |                 |    |            |
     |         v                 |    |            |
     |     FreeBSD 2.2.8         |    |            |
     |                           |    |            |
     |                           |    |        OpenBSD 2.4
    FreeBSD 3.0                  |    |            |
     |                           | NetBSD 1.3.3    |
     *---FreeBSD 3.1             |                 |
     |       |                   |                 |
     |   FreeBSD 3.2          NetBSD 1.4       OpenBSD 2.5
     |       |                   |    |            |
     |   FreeBSD 3.3             | NetBSD 1.4.1    |
     |       |                   |             OpenBSD 2.6
     |   FreeBSD 3.4             |                 |
     |                           |                 |
     |                           |                 |
    FreeBSD 4.0-CURRENT       NetBSD -current  OpenBSD -current
     |                           |                 |
     v                           v                 v

2.3. Project goals

The FreeBSD project aims to provide software that may be used for any purpose, and with no strings attached, to any and all comers, so that the code gets the widest possible use and provides the most benefit.

While some code is funded, and some developers receive and do not mind financial compansation, the developers are not prepared, and refuse, to insist on it. They also don't insist any changes to their code be returned, but this happens often anyway.

This applies primarily to the BSD-licensed code in FreeBSD; the code under the Free Software Foundation GNU General Public License (GPL) or Library/Lesser General Public License (LGPL) comes with slightly more strings attached, since those licenses have different aims, but they at least promote enforced access.

Notes

[1]

NetBSD shares a similar heritage

[2]

as was NetBSD 1.0, which was released a few weeks earlier

[3]

OpenBSD 2.0 was its first release