My second day with Haiku — still thrilled, but not ready to switch just yet

probono
14 min readJul 10, 2019

--

TL;DR: Even though I continue to be thrilled by Haiku, it is not hard to see areas that need refinement.

Yesterday, I discovered Haiku, a “shockingly good” desktop operating system. It’s day two now. Don’t get me wrong: I am still amazed about how easy it makes things that are complicated on the “Linux desktop”, I am still excited to learn how it does this magic, and I am more enthusiastic than ever about eventually using it as my daily driver. But it also becomes clear that the day on which I will make the switch is not there just yet — unless I am willing to suffer.

WonderBrush pixel editor on Haiku — if you know where to find it.

This is to be expected from something that has not even reached 1.0 yet. I still remember Mac OS X in its pre-1.0 days, and given the Haiku team size it is an understatement to say what they have achieved so far is amazing.

I am known to speak my mind about all things #LinuxUsability (part 1, part 2, part 3, part 4, part 5, part 6), so it probably comes at no surprise that I have some usability nitpicks with Haiku as well. Luckily, many of the nitpicks belong in the “refinement and polish” category.

With this preface, let’s turn our attention to some annoyances of today.

Annoyance #1: The web browsing situation

There are three browsers available, all based on WebKit: A native one (WebPositive) and two add-on ones using Qt (QupZilla, which is the outdated name for Falkon, and Otter Browser) that can be installed from the repository. But none works properly. The native browser has functionality and rendering gaps (e.g., I cannot solve the captcha required to sign up for the Haiku bugtracker), and the Qt-based ones have serious performance issues in Haiku.

This is how Twitter looks in WebPositive, the native Haiku web browser

QupZilla and Otter Browser come to a crawl if you are on a shaky internet connection (think WLAN in a train). If data is not flowing in smoothly, switching between tabs is not possible anymore. You cannot open a new tab while the current tab is slowly loading data from the network. Everything comes to a grinding halt, but I can see that the CPU cores have little to do. So possibly the browsers are not making full use of the threading capabilities of Haiku or are otherwise not optimized for Haiku.

And QupZilla does not let me post something on Medium…

Apple has invested a lot of work in making sure the browser runs smoothly with great performance, and I think this is an investment that would pay off for Haiku as well. Especially today given the increased importance of web apps and even more so while native applications are not yet available on Haiku for all use cases.

Oral History of Kenneth Kocienda and Richard Williamson: How Safari and WebKit came to be. Source: Computer History Museum

Annoyance #2: Launcher and Dock

In the upper-right corner of the screen there is the Deskbar, some weird mix of a Windows-style Start menu with kinda-like a Dock and some extra powers.

The Deskbar. Source: https://rawgit.com/humdingerb/quicktour/master/en/quicktour-single-page.html

While it was possibly a core element of the BeOS user experience, it feels a bit lacking in functionality for a modern desktop: I am missing a launcher that comes up with Alt-Spacebar, kinda like Spotlight. Launching applications by clicking around is slow. There is a “Find” tool but it looks like Sherlock in disguise, even if it would be fast enough to be used as a launcher the UX is not made for it.

Spotlight on Mac OS X Leopard, invoked by Command-Spacebar. Source: Wikipedia

LnLauncher can be installed from HaikuDepot. When launched for the first time, it is entirely empty, it is not clear how to add anything to it, and it is positioned in a weird location on the screen, with no apparent way to move it. How do I get it to the left or bottom of the screen, like the Dock on Mac OS X? I find the UX to be undiscoverable.

DockBert. Can also be installed from HaikuDepot. Much more like it. It shows up at the bottom of the screen. The order of things seems reverted from what I would expect, with the Trash being the first rather than the last item. But it looks promising overall. How can I make it the default, instead of Deskbar? Right-cllicking on the Deskbar icon in DockBert and selecting “close” closes Deskbar indeed, only for it to re-appear half a second later. (I am told by a Haiku developer that this is actually a DockBert bug). It would be nice if DockBert was smart enough to figure out what the user wants to do, and do it. By default, there are no applications in DockBert but it says “drop here” so one knows how to get stuff in. However, I did not find a way to remove apps again — neither by right-clicking, nor by dragging the icon out of DockBert.

Enter HiQDock. I found it in some third-party add-on repository by chance. it looks like what I have been wanting. With emphasis on looks. Because it does not work like it, yet. It’s still in Beta, after all. It being a Qt4 application, I somehow doubt this code will make it into the default installation, though.

HiQDock. Source: https://www.software.besly.de/

Apparently I am not the only one who finds the Dock and Launcher situation difficult, after all I find a whole article dedicated to the topic: https://www.haiku-os.org/blog/moochris/2017-01-22_which_launcher/

QuickLaunch. Source: https://github.com/humdingerb/quicklaunch/blob/master/images/quicklaunch.png

There I learn about QuickLaunch and that “it’s recommended to set a key combo to start QuickLaunch with Haiku’s Shortcuts preferences.

Shortcuts preferences in Haiku

How nice would it be if stuff like that would be set up to “just work” out of the box. Did I say Alt-Spacebar? At the very least, QuickLaunch could ask the user on first launch whether to set up this shortcut. Doing it in the Shortcuts settings is cumbersome.

The window in which you are supposed to enter “Application” in the Shortcuts settings. Seriously?

I would bet that most users don’t know what to enter under “Application”, namely /boot/system/apps/QuickLaunch/QuickLaunch (just QuickLaunch doesn’t cut it!). https://github.com/humdingerb/quicklaunch/issues/23

Quick fix: Install QuickLaunch by default and assign it the Alt-Spacebar shortcut by default.

Luckily, I hear from a Haiku developer that they will probably integrate this at some point as an improvement or replacement of the good old DeskBar indeed. Maybe, some time? Keeping fingers crossed! (Ticket or it does not exist. Actually, there is: https://dev.haiku-os.org/ticket/14841.) Another developer adds: “adding it Windows-style, as a search box in the initial menu, is the way to go imo — in fact that sounds easy enough to do for beta2 and will make a massive difference for a lot of people I’d say”. I agree! (Again: Ticket or it does not exist.)

Why does QuickLaunch find the screenshot tool twice, in /boot/system/apps and in /boot/system/bin? The developers seem to be aware, as file:///boot/system/apps/QuickLaunch/ReadMe.html says

“/system/bin/ used to be ignored, but since especially ported software often ends up in the /bin folder, that is a bad idea. You’ll have to remove unwanted commandline apps manually now, i.e. via Add to ignore list of the context menu.”

Quick fix: Filter out applications from /system/bin/ that exist in /system/apps as well.

Annoyance #3: Nothing is hardware accelerated

BeOS had an obsession with demos. No BeOS video is complete without many windows playing different videos at the same time. An amazing feat at the time. Haiku comes with 3D demos, showing 3D fonts moving in space. (Hey, Haiku is not preparing for an IPO, is it?)

BeOS, which Haiku is modeled after, in 1995. At the time, running on two PowerPC 603 processors running at 66 MHz

Says BeOS CEO Jean-Louis Gassée:

“We are trying to become the Linux of audio and video applications.”

Even the more surprising that neither video nor 3D are actually hardware accelerated in Haiku. Games are neither, I suppose.

Haiku developers mr. waddlesplash and Alex von Gluck 🍂 have blueprints for hardware acceleration; “it probably needs 1–2 man-months of work”. For 3D acceleration, it’d be via Mesa(Haiku, so I am told, already uses Mesa and LLVMpipe for the OpenGL backend), and for video they’d need to stand on the shoulders of FFmpeg, or do their own stuff (I am told that Haiku already uses FFmpeg internally, just without any accelerated drivers it can’t make use of VDPAU or other API).

Fingers crossed!

Annoyance #4: Not finding software

I hear that there are many command line tools already ported to Haiku, but I cannot seem to find them in HaikuDepot. Any traces of them are missing. In the command line, there are no commands “haiku…” or “port…”.

~/testing> haikuports
bash: haikuports: command not found

By Googlingaround I find https://eu.hpkg.haiku-os.org/haikuports/master/x86_64/current/packages/ and I download avrdude from there. When I double click it, I run into an unmet dependency. It would be nice if this would not happen. (This is the reason why I like Mac .app bundles and Linux AppImages so much.)

A Haiku developer tells me that (theoretically) there is a system in place that should prevent this from happening. Apparently it needs some love.

What am I supposed to do? https://github.com/haikuports/haikuports/wiki seems to have instructions for people who want to port software to Haiku, but not for people who want to merely use the ported software. I am stuck here.

A Haiku developer tells me “we don’t mention HaikuPorts because 99.9% of users don’t need to know or care that this is how packages get made and appear in HaikuDepot”. I agree. Talk about HaikuDepot and how to get that stuff from there then. Because the HaikuDepot GUI does not show it (e.g., the avrdudecommand line tool). Supposedly there is a checkbox somewhere that would show command line tools in the HaikuDepot GUI but I did not, and do not, find this checkbox. (“Recommended” or “all packages”, anyone? — No, I don’t want to see “all” packages since I presume that this would show a lot of libraries, too. Kinda like good old Synaptic.)

Instead, I found https://haikuarchives.github.io/software.html. Also no idea how to install it. (I am told that HaikuArchives is just a “repository of software on life support” and “all the stuff there that is worth anything is in HaikuPorts” — adopters wanted.)

After some more Googling around, I find

/> pkgman search avrdude​Status Name Description
-------------------------------
avrdude A tool to up/download to AVR microcontrollers

Yay! Would be nice if the command was a bit more discoverable. A Haiku developer confirms that “pkgman is the command line equivalent of HaikuDepot”. Why not call it haikudepot then?

First thing I install is command_not_found-0.0.1~git-3-any.hpkg. Now I can do things like

/> file /bin/bash
DEBUG:main:Entered CNF: file
This application is aviaiblible via pkgman install file

Quick fix: install command_not_found-*-any.hpkg by default.

One Haiku developer tells me he thinks that there is “no real need for command-not-found on Haiku, unlike on Linux, because ‘you can just do pkgman install cmd:commandname’”. Where the heck am I as a “mere mortal” supposed to know this from?

Packages, package managers, and dependencies. Granted, the one in Haiku is way more clever than most, but it’s a package manager nevertheless:

/> pkgman install avrdude100% repochecksum-1 [65 bytes]
Validating checksum for Haiku…done.
100% repochecksum-1 [64 bytes]
Validating checksum for HaikuPorts... done.
100% repocache-2 [951.69 KiB]
Validating checksum for HaikuPorts... done.
Encountered problems:
problem 1: nothing provides lib:libconfuse>=2.7 needed by libftdi-1.4–7
solution 1:
- do not install “providing avrdude”
Please select a solution, skip the problem for now or quit.
select [1/s/q]:

Somehow, package managers do what package managers always do, no matter the OS. There is a reason why I continue, did I mention this?, to be drawn to .app bundles and AppImages.

Also, some very popular open source applications are missing from the platform:

/> pkgman install inkscape
100% repochecksum-1 [65 bytes]
Validating checksum for Haiku…done.
100% repochecksum-1 [64 bytes]
Validating checksum for HaikuPorts…done.
*** Failed to find a match for “inkscape”: Name not found

A Haiku developer tells me “no Inkscape because no Gtk”. I get it. Another Haiku developer adds: “but we have the amazing Wonderbrush”. Didn’t know that one. Well, it doesn’t show up in the HaikuDepot “App Store” GUI — so how could I? (Edit: I should have tried the “All packages” tab. Totally missed it!)

/> pkgman install gimp
100% repochecksum-1 [65 bytes]
Validating checksum for Haiku... done.
100% repochecksum-1 [64 bytes]
Validating checksum for HaikuPorts... done.
*** Failed to find a match for “gimp”: Name not found
​/> pkgman install arduino
100% repochecksum-1 [65 bytes]
Validating checksum for Haiku... done.
100% repochecksum-1 [64 bytes]​
Validating checksum for HaikuPorts... done.
*** Failed to find a match for “arduino”: Name not found

I am told that “Arduino used to be there”… where did it go?

Also, amazing how many lines of “technobabble” are used to tell the user “this software is not available here”.

Annoyance #5: Miscellaneous points that need polish

Switching between applications

I am missing Alt-Tab to toggle though applications. Ctrl-Tab does it, but it feels awkward.

A Haiku developer gives me the hint that if I switched to a Windows keyboard layout instead, Cmd became Ctrl (i.e. Ctrl+C) and then Alt+Tab would be as usual again. But I want to have the Mac feeling on a PC keyboard! A developer notes that “switching Ctrl-Tab to Alt-Tab will raise some eyebrows from users coming from Windows“. Easy solution: have both! (As someone going between Windows, Mac, and Linux with GNOME, KDE, and Xfce I never know what to expect anyway.)

Switching between applications with Ctrl-Tab using the Twitcher. Sometimes it appears, sometimes it doesn’t at first try. Source: https://rawgit.com/humdingerb/quicktour/master/en/quicktour-single-page.html

What is much worse: Ctrl-Tab sometimes shows a box with the application icon and sometimes it doesn’t. Also the order in which it switches through applications feels random: StyledEdit — WebPositive — back to StyledEdit — WebPositive — StyledEdit — Box with application icons… bug? (Is there a tool to record animated gifs on Haiku?) Edit: Turns out this is a feature, not a bug. Short-pressing Ctrl-Tab switches directly to the previous application without showing the Twitcher window, holding the combo longer will do that I assumed it to do all the time.

Shortcuts

Speaking of shortcuts, once you realize that the shortcuts are very similar to the Mac, you automatically try to use the ones you know… In File Open and File Save dialogs, I would like to be able to press Alt-D for “desktop”, and so on, as is known from the Mac.

I am told by Haiku developers that “this one we could probably add”, “file enhancement ticket”. I would have done so if the issues tracker was on GitHub or GitLab where I have accounts. But as explained before, I can’ register for the Haiku bug tracker. (OK, as you probably guessed, I want to make the point that using public cloud services like GitHub and GitLab makes drive-by contribution easier.) Edit: https://dev.haiku-os.org/ticket/15148

Inconsistencies

Qt and native apps behave differently. While in native apps it is not possbile to delete the word last entered by using Alt-backspace, this totally works in Qt-based apps. Possibly there are other differences when it comes to text editing, too. It would be nice if such inconsistencies could be closed.

Edit: I was not yet done with writing this article (which I showed a preview of in the Haiku developer channel for soliticing comments) and this showed up: The fix for this inconsistency! Un-friggin-believable. Boy do I love open source projects! Thank you, Kacper Kasper!

Remarks

I am still learning Haiku. And it continues to impress. Even though I was focusing on describing the annoyances today, I could not help but ebe constantly reminded why I find this operating system so intriguing. Some examples are about to follow.

Refreshing to see how Haiku gets things conceptually right

When you double-click an executable that is missing libraries on Linux, then nothing visible happens. If you do the same on Haiku, you get a nice graphical dialog informing you about the issue. I’ve been wanting stuff like that on the Linux desktop since forever, and am still thrilled how Haiku gets this sort of things right. Here it shows that the operating system is designed as one coherent system across all layers of the stack. The result is elegance, beauty, and simplicity — even in error cases like this!

A fascinating look under the hood

QuickLaunch documentation says:

There are two reasons why an application may not be found by QuickLaunch:

The application isn’t located on a BFS partition or the BFS partition wasn’t formatted to support queries.

The application lacks the proper attribute BEOS:APP_SIG. In that case, ask the app’s developer to add it, or try to apply the following tip.

If you happen to use an app or a script that doesn’t show up in QuickLaunch (and is in a writable location), you can add these atrributes in Terminal to the app or script:

addattr BEOS:TYPE application/x-vnd.Be-elfexecutable /path/to/your/app-or-script

addattr BEOS:APP_SIG application/x-vnd.anything-unique /path/to/your/app-or-script

This gives some insight into how this Launch Services-like magic that I am continued to be impressed with (and that is severely lacking on the Linux desktop) actually works.

Equally fascinating: “Opens with”

Select a file, press Alt-I, and you can select in the info screen which application should open a particular file.

In Haiku, I can define which application is used to open one particular PNG file. How cool is that?

This also works when the file in question does not even have a filename extension, and finally I can set for different files of the same type that they should be opened with different applications, something which proves to be so complicated on the “Linux desktop” that I think it is actually next to impossible there.

Conclusion

As I wrote yesterday, “Haiku is a true eye-opener for me. It shows how a desktop can ‘just work’”. On my second day I also realized some areas that are in clear need of refinement. But none of those is a showstopper. I am really excited about the future of this personal operating system for the desktop, a welcome development outside of the usual “desktop Linux” stack that is continuing to show serious platform issues unlikely to be solved anytime soon.

My hope is on Haiku!

Try it out for yourself today! The Haiku project provides nightly images that can be booted from DVD or USB. Installation consists of downloading the nightly 64-bit image and writing it to a USB stick using Etcher.

probono is the founder and lead developer of the AppImage project, the founder of the PureDarwin project, and a contributor to various open source projects. Screenshots were made on a Haiku system booted from USB stick. Grateful acknowledgment is made to the developers in #haiku on irc.freenode.net, particularly mr. waddlesplash, @PulkoMandy, and @diver. Special thanks to @KapiX for delivering on one of my nitpicks while I was writing this article.

--

--

probono

Author of #AppImage and contributor to hundreds of open source projects. #LinuxUsability, digital privacy, typography, computer history, software conservation