Whenever people thinks of a free operating system (if they do), the odds are that they will think of Linux, a clone of UNIX from 1991. They also might think of one or more of the BSDs, UNIX-derivatives dating back to the early ’80s. Let’s face it, though—UNIX is pretty boring. It was great for a PDP-11, and it gets the job done now, but it’s not exactly exciting.
Fortunately, the Free Software community has some much more interesting projects which, even if they might not be as useful, are much more fun.
I Want to Be a... Haiku?
I have something of a soft spot for BeOS. It was the first mainstream operating system built around the idea of concurrency and low latency. The BeOS kernel was designed from the ground up to run large numbers of threads, and the entire API was designed around this. Because interface elements had their own threads, they didn’t stop responding when the application was busy. This meant that BeOS always felt quick and responsive, even on slow systems. The heavily threaded nature of the system also meant that applications tended to get a significant boost from multiple CPUs.
For a while, it looked like BeOS might be bought by Apple to replace the aging MacOS; however, the high price demanded by Be Inc. prevented this. The company decided to focus on the embedded market with BeIA aimed at Internet appliances. This killed the BeOS applications market, and turned out not to be the brightest decision to make just before the dot-com crash.
A project called OpenBeOS began in 2001 to try to re-create the Be experience. Due to trademark concerns, the project was renamed Haiku in 2004.
Haiku has come a long way in the last six years. The aim for the 1.0 release is full source and binary compatibility with BeOS Release 5 (the last public release). A lot of applications run already, and the team has implemented my favorite feature from BeOS: the BFS. There are only two filesystems I consider to have a truly elegant design—BFS and ZFS. While BFS lacks a few features you would expect from a new design, such as snapshots, it is still a very good choice for a desktop.
The basic design of BFS is close to UFS, with the addition of journalling and the use of B+ trees to store directory contents. BFS inodes were at least one disk block, because this is the smallest amount you can efficiently read from a disk. This left about 200 bytes free per inode. Rather than waste this space, BFS used this for "small data," or typed key-value pairs containing arbitrary information.
While storing arbitrary metadata was nice, as was the fact that you could get at it all just by reading the inode (making folder listings with metadata very fast), BFS had one extra trick. It was possible to create folders containing indexes of metadata, which would be automatically updated.
One of the ways in which BeOS gained some speed was to put the file icon into the metadata. This meant that a single disk read would get all of the information required to display a file in the Tracker (the BeOS file manager). Haiku does this, too, but uses a highly compressed vector graphics format, giving a much higher visual quality.
Haiku is more or less ready for their 1.0 release in terms of features, although not in terms of bugs (a lot still remain). Hopefully this will improve in the next few months, making Haiku a potentially interesting operating system for future desktops.