So in the case of Linux, Debian and RedHat distributions would be considered operating systems from the BSD point of view. That being said, there are several BSD operating systems: OS X and Darwin, FreeBSD, NetBSD, OpenBSD, and BSD/OS. Each one has its strengths and weaknesses, but let's talk about the features common to all of them.
Linux has spent a long time in rapid development; the development model is fairly chaotic, which breeds much innovation, but there has historically not been much quality control when it comes to the Linux kernel. This situation has changed a bit with the Linux 2.4 release, however. With the commercialization of Linux, there has been much more of a drive for stable releases, so Linus himself, together with his lieutenants, has spent more time on quality control, making sure that code is stable before actually being released. From my own contacts in the Linux community, I can see that this way of doing things is a departure, so it is slightly frustrating to some developers.
On the other hand, BSD development has been considered slow by these standards, as OS releases occur at carefully engineered intervals. Drivers are not added to the main source tree until they are completely stable and reviewed. The core team-or in the case of OSX/Darwin and OpenBSD, their release team-decides when the tree is fit to be released. These steps have generally resulted in extremely stable release versions, even on point-0 releases.
Case in point: the FreeBSD 4.0 release. FreeBSD 4.0 was one of the most stable point-0 releases I've ever used. Approximately a year and a half elapsed between branching 4.0-CURRENT and 4.0-RELEASE; in that time, the whole VM system was ripped out and rewritten. Changes were also made in symmetrical multiprocessing, device handling, and how drivers were written. All of the changes turned out to be improvements, and the release was surprisingly stable.
Some of the things Linux has going for it in the 2.4 kernel are better SMP, a rewritten network stack, PCMCIA support originally in the kernel release, USB facility, and FireWire IEEE 1394 support. Additionally, the SCSI subsystem has been rewritten, while the IDE driver supports ATA66 devices, LVM (a logical volume manager), DRM (the direct-rendering manager) and DevFS, which is a new way of creating device nodes for use by the kernel and userland.
Surprisingly, BSD has either been ahead of or not very far behind Linux in all of these areas. SMP for the free BSD operating systems appeared in FreeBSD 3.0 and was improved in 4.0; a truly remarkable version is planned for 5.0, which is currently in development. PCMCIA support is not far behind Linux either: NetBSD and OpenBSD have great PCMCIA support, and FreeBSD is not far behind, originally with PC 1 Card Cardbus support.
NetBSD was the first Open Source OS to have USB support in it. The other BSDs followed soon after. Linux, however, did not support USB until the current kernel release. At this time, BSD lacks FireWire support, probably the most glaring omission at present.
The SCSI layer in FreeBSD was rewritten for the 3.0 release, shifting to a method called common access method (CAM). This change allowed a bit more abstraction for drivers to access SCSI devices. BSD also has no problems (at the moment) with ATA66 controllers and drives. While Linux has logical volume managers (LVMs), the BSDs have all had LVMs for several years now-RAIDFrame in NetBSD and OpenBSD and Vinum in FreeBSD. They support RAID-5 in kernel and software. Moreover, BSD has been working on devfs for years.
As far as the networking stack goes, BSD's is the original, with years of engineering improvements and stability behind it. Linux 2.4's networking stack comes closer to this, for sure, but Linux still has a long way to go before it overtakes the BSDs in this area.
While Linux 2.4 is certainly innovative and arrives at somewhat different ways of doing things, for the most part, it's nothing new in the computing world. BSD pretty much keeps up with (and sometimes is way ahead of) Linux in pretty much every area except FireWire. In the past year, the BSDs have done some major development on drivers and they now support, most, if not all, the devices that Linux 2.2 and 2.4 support-besides FireWire and direct access to 3-D acceleration cards. Linux scales better on multiple processors, for now, and supports FireWire devices. Otherwise, the Linux/BSD question hinges on a choice between features and-most of all-comfort. In essence, neither is better, except in specific areas. That's just how it should be.
|