The concept of the "base system" is something that, I think, causes the
most trouble for people used to the Linux methodology.
Which is perfectly understandable, because the whole idea just doesn't
even exist in the Linux world.
Linux, from the start, was just a kernel.
Without getting into the eternal debate of what an "operating system"
precisely consists of, it's easy to state that a kernel by itself isn't
very useful.
You need all the userland utilities to make it work.
Linux has always been a conglomerate; a kernel from here, a ls from
there, a ps from this other place, vim, perl, gzip, tar, and a bundle of
others.
Linux has never had any sort of separation between what is the "base
system" and what is "addon utilities".
The entire system is "addon utilities". MySQL is no different
from ls from KDE from whois from dc from GnuCash from...
Every bit of the system is just one or another add-on package.
By contrast, BSD has always had a centralized development
model.
There's always been an entity that's "in charge" of the system.
BSD doesn't use GNU ls or GNU libc, it uses BSD's ls and BSD's libc,
which are direct descendents of the ls and libc that where in the
CSRG-distributed BSD releases.
They've never been developed or packaged independently.
You can't go "download BSD libc" somewhere, because in the BSD world,
libc by itself is meaningless.
ls by itself is meaningless.
The kernel by itself is meaningless.
The system as a whole is one piece, not a bunch of little pieces.
Now, X isn't a part of the FreeBSD base system.
It's an addon package.
Since X isn't part of the base system, X apps like xterm and KDE and
Gnome and Mozilla and gaim and xmms and such obviously can't be part of
the base system either.
They're add-on packages, which are treated and thought of differently.
The primary difference is where they're developed.
NetBSD and OpenBSD do have an X implementation in the base,
because of the way they integrate it with their console driver.
They both use heavily modified, very custom versions, so it's not
feasible to keep it as a separate package.
The entire base system is developed together.
To be sure, there're parts of the base system like sendmail and BIND and
tcpdump and ssh and such, which are in fact individual packages which
are developed elsewhere.
There are even some GNU packages like groff and gcc and gzip and such,
which will be immediately recognizable to any Linux user.
But these are treated specially, in that versions are imported into the
tree, then molded to fit the rest of the system.
In fact, many of them used to be BSD-only; BIND and sendmail were
originally developed at Berkeley as part of BSD, and only later became
available separately.
My FreeBSD system claims to be running gcc version 3.2.2 at this moment.
Technically, it's not really gcc 3.2.2; it's a FreeBSD compiler based on
gcc 3.2.2.
The version of tcpdump I've got here isn't technically 3.7.2, it's a
FreeBSD tcpdump based on tcpdump 3.7.2.
In most cases, of course, the FreeBSD version is practically
indistinguishable from the vendor version.
There're usually some changes to the compiling setup (Makefiles and such)
to let it build cleanly with the rest of the system, and occasionally
some necessary patches to make it compile and run right.
Some changes are more extensive, and some are massive.
But, they're all maintained together, and forced to play nicely
together.
There's a basic assurance that the pieces in a BSD base system all fit
together, by design.
The primary reason an externally-maintained package becomes imported
into and tracked in the base system is that it is, in some way, basic
enough to the functioning of the system that it's easiest to have it
there by default.
FreeBSD currently uses the OpenSSH ssh server and client, which are
integrated into the base system because, in this day and age, a secure
remot
The Ars guys complain about the Mozilla UI's lack of polish compared to IE. I tend to agree with them. This is an unfair comparison, however. Mozilla is intended primarily for technically inclined people; Netscape 7 is for everyone else. I'm sure the next Netscape version will be much more polished than Mozilla in terms of UI, and thus will garner more favorable reviews. (I will continue to use Mozilla and Galeon. I like the not-so-polished iterface.) I don't blame Ars though. The Ars guys needed to compare Mozilla to something, and IE is the market leader (for now).
I was wondering why every time I tried to access kerneltrap, the request would time out. Apparently, their ISP's router has problems with Explicit Congestion Notification (ECN). This is a known problem with older routers. To get around this, either compile your kernel without ECN or:
# echo 0 >/proc/sys/net/ipv4/tcp_ecn
I can't take the credit for this discovery. I learned about it while sifting through the comments to this very article. Also, check this link for more info on ECN.
The concept of the "base system" is something that, I think, causes the most trouble for people used to the Linux methodology. Which is perfectly understandable, because the whole idea just doesn't even exist in the Linux world.
Linux, from the start, was just a kernel. Without getting into the eternal debate of what an "operating system" precisely consists of, it's easy to state that a kernel by itself isn't very useful. You need all the userland utilities to make it work. Linux has always been a conglomerate; a kernel from here, a ls from there, a ps from this other place, vim, perl, gzip, tar, and a bundle of others.
Linux has never had any sort of separation between what is the "base system" and what is "addon utilities". The entire system is "addon utilities". MySQL is no different from ls from KDE from whois from dc from GnuCash from ...
Every bit of the system is just one or another add-on package.
By contrast, BSD has always had a centralized development model. There's always been an entity that's "in charge" of the system. BSD doesn't use GNU ls or GNU libc, it uses BSD's ls and BSD's libc, which are direct descendents of the ls and libc that where in the CSRG-distributed BSD releases. They've never been developed or packaged independently. You can't go "download BSD libc" somewhere, because in the BSD world, libc by itself is meaningless. ls by itself is meaningless. The kernel by itself is meaningless. The system as a whole is one piece, not a bunch of little pieces.
Now, X isn't a part of the FreeBSD base system. It's an addon package. Since X isn't part of the base system, X apps like xterm and KDE and Gnome and Mozilla and gaim and xmms and such obviously can't be part of the base system either. They're add-on packages, which are treated and thought of differently. The primary difference is where they're developed.
NetBSD and OpenBSD do have an X implementation in the base, because of the way they integrate it with their console driver. They both use heavily modified, very custom versions, so it's not feasible to keep it as a separate package.
The entire base system is developed together. To be sure, there're parts of the base system like sendmail and BIND and tcpdump and ssh and such, which are in fact individual packages which are developed elsewhere. There are even some GNU packages like groff and gcc and gzip and such, which will be immediately recognizable to any Linux user. But these are treated specially, in that versions are imported into the tree, then molded to fit the rest of the system. In fact, many of them used to be BSD-only; BIND and sendmail were originally developed at Berkeley as part of BSD, and only later became available separately. My FreeBSD system claims to be running gcc version 3.2.2 at this moment. Technically, it's not really gcc 3.2.2; it's a FreeBSD compiler based on gcc 3.2.2. The version of tcpdump I've got here isn't technically 3.7.2, it's a FreeBSD tcpdump based on tcpdump 3.7.2.
In most cases, of course, the FreeBSD version is practically indistinguishable from the vendor version. There're usually some changes to the compiling setup (Makefiles and such) to let it build cleanly with the rest of the system, and occasionally some necessary patches to make it compile and run right. Some changes are more extensive, and some are massive. But, they're all maintained together, and forced to play nicely together. There's a basic assurance that the pieces in a BSD base system all fit together, by design.
The primary reason an externally-maintained package becomes imported into and tracked in the base system is that it is, in some way, basic enough to the functioning of the system that it's easiest to have it there by default. FreeBSD currently uses the OpenSSH ssh server and client, which are integrated into the base system because, in this day and age, a secure remot
The Ars guys complain about the Mozilla UI's lack of polish compared to IE. I tend to agree with them. This is an unfair comparison, however. Mozilla is intended primarily for technically inclined people; Netscape 7 is for everyone else. I'm sure the next Netscape version will be much more polished than Mozilla in terms of UI, and thus will garner more favorable reviews. (I will continue to use Mozilla and Galeon. I like the not-so-polished iterface.) I don't blame Ars though. The Ars guys needed to compare Mozilla to something, and IE is the market leader (for now).
# echo 0 > /proc/sys/net/ipv4/tcp_ecn
I can't take the credit for this discovery. I learned about it while sifting through the comments to this very article. Also, check this link for more info on ECN.