And welcome to the world of BeOS and Haiku! Today’s article is going to look at both the classic BeOS (which you’ll see a few screenshots of) and the modern-day successor to the BeOS, the Haiku operating system (which we’ll also have screenshots of here as well).
This is meant to be a quick overview, simply covering some of the technologies that I personally think make the Be/Haiku platform great, and are something I wanted to put in one place to refer to in any of my reviews of Be and Haiku releases. But please note it won’t be anything huge or fancy like the super cool Be Book or BeOS Bible. So, with all that said, let’s get into it. 😉
The first area to take a look at is Haiku’s latest feature in its Beta release: packaging.
Packages (but not just packages!)
Reading just ‘packages’ might evoke merely running a package manager on Gnu/Linux, etc. and while Haiku can do that, it’s far more.
As I mentioned in the Haiku Beta review, it was the first official release to feature package management. Best I can give anyone new to Haiku a mental picture of it is this: think of PackageFS of being like (but not the same as) having the old Slax 6 modules system running, along with all the usual ‘package’ tools to go with it.
A recap of it can be summarized in five quick points (versatile command-line packaging tools (as you might expect), the HaikuDepot and software updater, package and/or system states, the PackageFS, (where all packages are mounted seamlessly and mesh at startup), and as a side effect of the FS, a gentle layer of safety to the system.)
A quick overview of these features can be seen like this:
1. Package tools
As you may have expected from other operating systems, yes, Haiku does have packaging tools available to you from the Terminal, including the ability to update, as listed out here:
Along with command line tools comes a user-friendly application center called the HaikuDepot, which allows users to search for, install, and remove packages easily.
And along with having the Depot, of course, there is also a graphical preflet called Repositories that allows users to fetch updates to the system quickly and easily, similar to the classic OS X.
And yes, there is also a graphical SoftwareUpdater, very much similar in feels to the classic ‘Software Update’ preference pane/utility that shipped with Mac OS 9 and the first versions of OS X.
One of the coolest areas of package management is that you can go back in time and boot up into a previous state of the system, all thanks to the new packaging system. To do this, simply open the boot menu, choose the boot volume, and select Latest state or a nicely time stamped ‘version’. Very cool.
The ability to see, pull out, and pull in packages is a feature that debuted in the Haiku Nightly releases in the in-between era of after Alpha 4.1 and before the years to Beta 1. Now, with the Haiku Beta, it’s official. All Haiku software on the Depot is distributed as packages, and like I was illustrating earlier with the Slax 6 modules example, these packages are intelligently activated into the system at startup and live in their own packages area:
As a side effect of the new PackageFS, several folders that are part of the visible filesystem are now read-only. This little detail is worth noting in my opinion, as it helps add a tiny amount of safety to the system by keeping several folders from modification. But, please note that not all the folders in Haiku are read-only; as one good example, the non-packaged folder is not.
Okay. So on to the next point.
Really, the first feature a new user will notice, before even noticing packages (which I covered first as they were new to the Beta) is the Be user interface. It manages to remain fundamentally true to itself, while also being quite powerful.
The ‘new’ Apple that’s continued after Jobs’ death really could learn from both their own past and the BeOS in this area. I love Apple because it’s really simple, and yet powerful. But sometimes the curated, ‘walled garden’ way, and the dedicated pursuit of art and presentation have made things too simple. BeOS had a way of making things easy to use, and yet put serious, developer-level tools in front of the user. All while still keeping things as simple as they would be on the classic Mac OS or Palm OS. That’s the real craftsmanship of Be.
Notice we have everything from the usual user-centric apps like CodyCam to DiskProbe, and a nice resource editing utility. We also have the useful Devices tool in Preferences, and PoorMan for personal web sharing. (Note to readers: I still think Calculator in Dano looks better than DeskCalc. Also, BeIDE and I think the debugger (bdb) are part of the developer set).
And especially when compared to various Gnu/Linux distributions that run X.org, or other systems that do likewise, there aren’t multiple layers all trying to mesh together. On the BeOS (and Haiku), everything is designed to work together in harmony, and application design is kept neat. Similar to Mac OS and the Palm, applications obey a certain behavior, which keeps the user experience consistent and clear.
Icon-o-Matic: Art in the making
As you may have noticed from the BeOS screenshot, icons in the BeOS were made out of traditional bitmaps. With the advent of Haiku, that’s all changed, and all iconography is done in a new Haiku vector icon format or .hvif.
This means that icons can scale gracefully in a very efficient, lossless, lightweight vector format. While the icons below scale up to 128×128, we could in theory go much higher. This is because like SVG, we are using paths and attributes or properties to define our elements, from the house, to the system leaf, to the shadows and folder surfaces, etc. over having a traditional raster icon design. In a simple sentence, they convey more while, on average, weighing less than the raster files they replace.
Making an icon is simple. Simply add and make a path out of points in the editor, or choose a template of either a rect(angle) or a circle.
After creating or choosing a path, a user probably won’t see anything at first. So, from there, define the path with a shape. To simplify the quick example, I’ll add a shape with a style (what gives it color).
And… once we have went up to our style inside the Style box underneath the Style menu, we now have a nice, green circle! Gradients and other shapes are possible as well, but this is a way of showing how quick Haiku makes it for developers and artists to create new icons.
Of course, while HVIF files, vector resource definitions, and source are mainly used with this application, Icon-o-Matic also allows exporting as the standard SVG (scalable vector format) and raster PNG formats, both of which you may recognize as universal formats. And yes, you can export as BeOS icon attributes. 🙂
Canary colored tabs.
If you’ve been using BeOS or Haiku for a while, you probably already know this. But those small, yellow tabs on the windows aren’t just there for looks. Their purpose is to allow you to manage them, both in the same app and across the Desktop, and Haiku refers to these features as “Stack and Tile”. Personally, I just think of it as tabbing and magnetic edges, both of which work like so:
Hold down option, (the meta/logo key on a PC keyboard) while dragging, and this happens:
Let go, and the windows tab into each other, allowing switching at will.
And if tabbing isn’t your thing, Haiku’s windows have another magical property: they are magnetic! Hold down option (or meta), and you can stick two windows together as well.
Stick the windows together, and this happens…
I might add that unlike snapping that macOS (as of High Sierra) and Windows 7+ use, these can be resized together as a group — which is pretty cool. (But personally, as I like being honest with my readers, I prefer to tab stuff together.)
And before finishing up with this area, yes, there are also the usual window features you may expect as a power user, where ctrl and the alt key can be used to move or resize, when visual controls are out of reach.
Where to, my good user?
On the Mac, my favorite view is definitely Column View, and while someone can indeed place a folder into the Apple Menu or Dock to do the same sort of thing, but even then, it isn’t a universal feature. In Tracker, this works all across file manager — when moving, linking, or copying files, from the Recent Folders menu — and even the Trash can is navigable this way as well!
Just by using mere submenus, we can delve into folder by folder, and easily go back just by hovering out of the folder we got into. As you can see, here we’ve browsed two folders down, almost effortlessly.
So we can quickly go from boot to system and from there, keep on going if we so wanted to do so. While it’s true that a lot of folders would eventually overlap, make a mess, and defeat the purpose of the feature, the point of it is to be a quick, simple way of looking around the system or getting somewhere fast, without having to open up extra windows for it. Often overlooked, this is definitely another advantage of Haiku that makes it unique!
BeOS maybe wasn’t the first, but certainly ahead of the major vendors in having a fully indexed, searchable filesystem, the BeFS (or classically, BFS, not to be confused with the BootFS). Hints of this can be seen in DriveSetup, Tracker, and in the built-in Find box where everything from mail, contacts, and files can instantly be returned because of the unique way they exist on the system.
Let’s first do a normal search for ‘maui’ on the Desktop:
And this returns more than just the file we wanted; it also shows two queries. With BeOS, queries or saved searches were a thing — before Apple’s Spotlight, Windows Vista’s Aero Search, and even Apple’s first foray into search called Sherlock (which kind of had the same idea around the same time, and as much as HFS+ on Mac OS 8.5 really tried, it wasn’t the same.)
And as you may have hoped for, queries are malleable. Historic as the BeOS may be, we can edit our query… just as one would want out of a modern search.
Several indexing tools are available to the Be user, which we can run from the Terminal.
Attributes can be manually added and deleted, or listed out. To see attributes in the system index, we can run lsindex. And this brings us to the next point.
So one neat thing about the BeOS are attributes, which are available to all applications across the system. When we create a contact in People, for example, everything we write in it are attributes. Notice the file size itself is ‘0 bytes’.
Tracker understands that our file is a person, for example, and shows attributes we can click for it.
And there are ways to read back these attributes, aside from just the Tracker. BeOS is aware of them. If we go back to the Terminal, we have a nice set of attribute utilities we can mess with. For now, let’s go ahead and do a listattr on our nice little person on the system.
And attributes are applied across all filetypes on the system, and file types themselves can be universally managed via the FileTypes preflet in Preferences. This isn’t like that one folder options tab on Windows; this is full control over the files.
One of my favorite features of the Macintosh is this cool, rather fun little language called AppleScript, in which I can tell the computer to go to sleep, beep, quit something for me, open a series of apps, say the alphabet, show a dialog box, or whatever else I want to have fun with (or do). Scriptable actions grew into Automator, and more recently Siri ‘Shortcuts’, but it’s not the same.
Haiku has a similar functionality with the hey scripting tool. While usage is displayed nicely, showing how to utilize it (as shown below from Alpha 4), I have yet to fully learn it, to be honest. That said, let’s quit StyledEdit and get the title of the window to demo it.
Consider if we want to quit an application — we can run something like hey StyledEdit quit and it’ll close it.
Or, if I have a window open, like in Pe, I can do hey StyledEdit get Title of Window 1 and Haiku can return that for me. (Full credit for this trick goes to the ‘Working with hey’ section in the BeOS Bible Scripting guide by Chris Herborth):
Personally, despite all its power, the only thing I don’t like about hey is that it is definitely meant for a more technical audience (like the developer/power user over the everyday user); telling the computer to go to sleep in AppleScript is so simple a little kid can do it. (For similar functionality with AS, osascript works in Mac OS X.)
Make stuff pop up!
I can also create dialogs from shell scripts, so for those who frequent Python, Perl, or even Zenity/KDialog dialogs in Bash, this is for you. Simply use the alert command to invoke this capability, as shown below:
We can also show ‘stop’ or critical errors…
And also warning messages…
Haiku has something else, something that Be doesn’t. You can actually have the Mac-like shutdown box show from Terminal with shutdown -a, where a = ask the user. While a normal shutdown command to power down or shutdown -r to restart could be used all the same, (and maybe more efficiently), the option of having this here is still worth a mention.
Runs fast. Runs well.
You know, you really can’t appreciate the power of BeOS until you see how Mac OS 9 handled system stability around the same time. Or other systems of the age.
And around 2001, when Be went down and the awesome Mac OS X got released to the world, compared to the nimble BeOS, 10.0 “Cheetah” was a lot more resource heavy, and it would take until v10.2 Jaguar, the second serious release of the new Mac OS (v10.1 “Puma” was just an update to 10.0), to really start maturing into a serious platform.
BeOS was impressively fast for its time. Multiple applications, demos, and media files, etc. could be run at the same time, and without the complexity the larger systems carried with them. (And instead of merely writing about it, there’s an old ‘BeOS demo’ video on YouTube that illustrates this point and other features better — like Workspaces, with everything from backgrounds to color depth left up to the user for each.)
On BeOS, everything lives in a multi-threaded world. Notice that top, a standard shell utility, shows ‘team name’ and ‘thread name’ here:
All these threads can be organized into teams, and teams are simply a set of threads living in and coming from one application. And each app will have at least a main thread. This is why the ‘force quit’ box on BeOS and Haiku is called the “Team monitor” — you’re looking at a nice, graphical utility to see what teams are currently running and you can quit teams from there.
However, to really visualize this nicely, you really need to see this for yourself using the Process Controller replicant that lives in the Deskbar in Haiku. Here, we can see an application broken up into different parts, and we can set priorities. Keep in mind that all the bars are live.
Threads and CPU usage open in ProcessController.
This design of letting everything live in a multi-threaded system and encouraging developers to create applications that take advantage of it is one of the areas that makes Haiku truly unique, and is something you need to not just see, but experience, for yourself.
Now — another feature unique to the BeOS (again, this is meant to be a fast overview, so sorry if we’re not spending more time on each topic) is servers. Servers handle different parts of the current session, from media that may be playing, to handling any network connections in and out, or simply handling notifications or the volumes that are currently mounted on the system.
The page white prompt
Inherited from the BeOS, Haiku includes Kernel Debugging Land, or the KDL… a built-in debugger that can be summoned through the Terminal when needed, but also appears on system crashes. 😀
Built-in help is available, and the prompt is simple and straightforward. Notice even here the debugger is thread 524. To exit the debugger, simply typing continue will return the user back into their regular system.
Even as much as I love the Mac, when it crashes, instead of getting a quaint KDL prompt, users used to get this nice little panic box. (After OS X 10.8 or “Mountain Lion”, I believe restarting per a crash is automatic. But still, I do confess, I wish that Haiku could add a nice message like the Apple example below for the end users that end up in a bind… won’t lie about that, either):
But again, as I mentioned when discussing its user interface, it is the very idea of empowering and presenting the user to the system over masking it or making it ‘simple’ that defined BeOS, and is what defines Haiku today.
It’s what makes it one of the best operating systems made today. And is definitely why you should try it. So if your hardware is compatible, (or even if it isn’t), download Haiku today!
Thanks for reading!
Of course, there is more that is cool about the Haiku operating system than just these points, but these are the major highlights of the system I thought I’d cover for you all.