The BeOS file system: an OS geek retrospective
arstechnica.com
arstechnica.com
It felt faster booted from a ZIP Drive on a 160MHz PPC with 192MB of RAM than my machine feels today, and this is not an overstatement. There wasn't a single click that didn't instantly produce a response.
Everybody points to iOS's design, but to me, one of the reasons for its success is that a system that fits in your pocket feels faster than the one at your desk.
If more people had been exposed to it back then, maybe we wouldn't put up with today's software as it is.
BeFS rocketh, check out the book:
http://www.letterp.com/~dbg/practical-file-system-design.pdf
The file system stuff they were doing was incredible and highly useful. I'd really like to have a file system where I have indexed metadata committed directly with my file writes about now. Alas, since BeFS is dead, I pretty much have to roll my own with SQLite indexes alongside flat files. At the time, sure, it may look like no one has the problem, but if it would have become viable I think that we'd now be wondering how we lived without it.
Also, I note that when Giampaolo himself was implementing the subsequent metadata filing system that he worked on (Mac OS X 10.4+'s Spotlight feature), he went with a system-level metadata harvesting/indexing model where essentially all data (except for user-added Spotlight Comments, I think?) is wholly derived from the file itself by importers that are invoked by the system to populate its external indexed cache of metadata. That way, even if that central metadata database is blown away, it can be recreated at any time. This also allows interchange processes to only rely on what nearly always works across systems: the data itself and very basic metadata such as filename and creation/modified dates. And programs never have to worry about updating metadata aside from that which is internal to the file format.
[1] doesn't mean they don't exist (perhaps even BeOS, which I haven't used much) and I'd really like to hear about them, just talking about my own experience
[2] in this case, it can sometimes be even worse than a program wrongly blowing away the "resource fork" - a badly behaved program can update the file without updating its metadata, causing the metadata to be wrong!
On losing metadata: every modern filesystem in use supports extended attributes, so this shouldn't be a problem when copying files between BFS and NTFS, EXT4, btrfs, HFS+ or ZFS. The only filesystem that will cause problems is FAT32, which most people still use with USB drives. I don't know how that will be handled in Haiku.
With regard to most file systems supporting extended attributes: that's true (though FAT32 not supporting them is a huge caveat, and I also wouldn't be at all shocked to see some issues during conversion across FSes... I don't have personal experience though), but email, HTTP downloads, peer-to-peer, etc don't tend to support them, essentially guaranteeing you'll lose them if you transfer them across the Internet.
Also, it's really nice to not have to worry about, say, an EA-unaware POSIX app losing metadata... how many old-style Mac resource forks were lost during a simple file rename before mv was made resource fork-aware!
That's exactly what I mean. My version of index_server stored the index in a directory called "index" in the root of every volume it indexed. I'm not sure what the new one does.
Note that moving the index out of BFS was merely an idea that was bounced around the ML.
The BeOS mail application used the extended attributes extensively. Its mail store was basically a bunch of flat files containing the messages (perhaps in folders corresponding to the mail folders), and the extended attributes were used to index the date, sender, etc. These indices were then used to generate mail views, respond to searches, etc. - the mail app could effectively be a custom file system browser that used the extended attributes to speed itself up and quickly access and search mail metadata.
http://www.letterp.com/~dbg/practical-file-system-design.pdf
It's on the author's site, so I presume it's legitimate.
If compatibility weren't an issue, we might have been very advanced right now. Seems like compatibility is what stopping everything from properly advancing, except hardware maybe?
The coolest feature, however, is how well it preforms under stress. There is a 3d demo that maxes processing resources and displays the performance in FPS. As soon as the demo starts, the CPU is pegged at 100%. Even with the demo running, the system is still fast and stable. Haiku, like BeOS, won't let one process slow the whole system. Apps still load in roughly the same times and remain responsive. I haven't tested how well it handles memory hogs, but I've read that its nearly as good there too.
As long as you are only using apps that come with the distribution you might could use it as day to day desktop, but I think it would probably be a diservice to the users and the project to recommend Haiku in its current state to anyone other than tinkerers and devs. Finding apps would be a problem, even if you didn't have to worry about whether or not they would run. A bad app will crash the whole system, although stability has come a long way in the last couple of years. You just can't forget that this is alpha software.
I think things will rapidly improve though. There is a package manager on the way which will be finding software easier. Also, I've been reading about some fantastic advances in programming language support which should increase the amount of software made available.
Edit: I'm trying to walk the line here, I'm clearly a fanboy.
I find UI to be the driving force - you get a GUI that interacts with the filesystem much more directly than you can in any other GUI.
A problem I've found for workstation usage - the terminal has some problems. For example, I can't connect over ssh to a remote linux system and have GNU screen run there usably. There's a problem with the way colours are implemented. I understand they're workign on a tty rewrite before the beta but am unsure what the scope of that is, will it deal with this.
I received a haiku programming book from amazon just today. I'm interested in exploring this and in digging towards the OS API - seeing what they do differently to unix. Maybe I'll find cool mechanisms for prototyping that aren't available in linux but I'm skeptical there'll be much.
:-) great article though about an OS I missed the boat on.
dawson 1 hour ago | link [dead]
Me too :( If you haven't already, checkout The Haiku Project http://haiku-os.org/ (inspired by BeOS).
If you're running BeOS/Haiku, you already know about People and Mail. I also recommend you check out Caya and HaikuTwitter.