Richard Bejtlich's blog on digital security, strategic thought, and military history.

Monday, November 29, 2004

FreeBSD Project Goals

After reading PHK's Why Bother? article, I wondered about the goals of the FreeBSD project. I found them in the handbook:

"1.3.2 FreeBSD Project GoalsContributed by Jordan Hubbard.

The goals of the FreeBSD Project are to provide software that may be used for any purpose and without strings attached. Many of us have a significant investment in the code (and project) and would certainly not mind a little financial compensation now and then, but we are definitely not prepared to insist on it. We believe that our first and foremost 'mission' is to provide code to any and all comers, and for whatever purpose, so that the code gets the widest possible use and provides the widest possible benefit. This is, I believe, one of the most fundamental goals of Free Software and one that we enthusiastically support.

That code in our source tree which falls under the GNU General Public License (GPL) or Library General Public License (LGPL) comes with slightly more strings attached, though at least on the side of enforced access rather than the usual opposite. Due to the additional complexities that can evolve in the commercial use of GPL software we do, however, prefer software submitted under the more relaxed BSD copyright when it is a reasonable option to do so."

These appear to be unchanged since 1998 and probably earlier. If asked to summarize these two paragraphs, it seems the FreeBSD project's goal is to create free software.

"Provide the best development platform possible. Provide full source access to developers and users, including the ability to look at CVS tree changes directly.

Integrate good code from any source with acceptable copyright (ISC or Berkeley style preferred, GPL acceptable as a last recourse but not in the kernel, NDA never acceptable). We want to make available source code that anyone can use for ANY PURPOSE, with no restrictions. We strive to make our software robust and secure, and encourage companies to use whichever pieces they want to...

Pay attention to security problems and fix them before anyone else does. (Try to be the #1 most secure operating system).

Greater integration of cryptographic software...

Track and implement standards (ANSI, POSIX, parts of X/Open, etc.)

Work towards a very machine independent source tree. Support as many different systems and hardware as feasible.

Be as politics-free as possible; solutions should be decided on the basis of technical merit.

Do not let serious problems sit unsolved.

Provide a good cross compile/development platform.

Import external packages with minimal modifications - making upgrading much easier. Also to submit back to the developers any changes made.

Make a CDROM-based release approximately every six months, in particular to fund the project."

OpenBSD's goals are much easier to read and understand compared to FreeBSD, and more accurately reflect the project's purpose.

"The NetBSD Project provides a freely available and redistributable system that professionals, hobbyists, and researchers can use in whatever manner they wish."

Further:

"Generally speaking, the NetBSD Project provides a well designed, stable, and fast BSD system, avoids encumbering licenses, provides a portable system, which runs on many hardware platforms, interoperates well with other systems, [and] conforms to open systems standards as much as is practical."

NetBSD's goals appear to be the same as FreeBSD's.

Of these various sets of goals, I find OpenBSD's compelling and focused. I encourage readers to visit the OpenBSD goals page because they are explained more fully and link to further explanations.

I think it would be helpful to launch a new thread (similar to a recent one in freebsd-advocacy) publicly discussing the project's goals. I plan to post a link to this blog entry to the freebsd-advocacy mailing list and to BSDNews.com to encourage discussion. No single person can impose a set of goals on the FreeBSD project. Some sort of community consensus, ratified by the core team, would be useful. If you have comments, I recommend responding to my forthcoming posts on freebsd-advocacy and BSDNews.com.