My third day with Haiku — reality is settling in

probono
9 min readJul 13, 2019

--

TL;DR: Haiku has the potential to become that awesome open source desktop operating system. I wish it will. Apparently there is a lot to fix until it will.

Two days ago, I discovered Haiku, a “shockingly good” desktop operating system. It’s the third day now. I like this system so much that I am constantly thinking “what would it take for me to make this my daily driver”. Conceptually, I like the Mac, but then I am annoyed with the closed-source nature of it and am looking for an open source alternative. Which for the past decade or so basically meant Linux, which comes with its own set of issues.

The Haiku operating system being demonstrated by DistroTube. Source: https://www.youtube.com/watch?v=1W3KgYGJHoc

When I found out about Haiku, I tried it and was impressed immediately — especially with the “it just works” desktop that clearly is way and above any Linux desktop I know of conceptually. I want, I want, I want!

I guess on day three it’s time for a reality check.

Missing applications

Application availability is of course a “make or break” aspect of any desktop operating system. The topic is an old one. When it comes to Haiku, I am told that for most use cases, there are options available. So far I could not find applications for the following use cases which I encounter on a daily basis:

Development model

What can we do to make Haiku succeed in terms of available applications? Win developers, simple.

Now, the Haiku development team is surely doing a great job of bringing many popular applications to the platform. However, to be a successful platform, upstream application developers need to be empowered to produce haiku versions easily. Ideally, the Haiku build would be just one more option in the already-existing Travis CI or GitLab CI build matrix. How would a company like Ultimaker, which is producing the popular open source 3D slicer software Cura, go about making a Haiku version?

Personally, I am convinced that the classic “maintainer” model, where someone from a Linux distribution built and maintained packages for a certain operating system, just does not really scale, especially in the long tail of applications. Now, it’s arguable whether 3D printing applications are in the “long tail”, but a software written to optimize the schedule of one particular school certainly is. What is the Haiku story for this type of applications? (They are typically using Electron because that means they have an app for all OSes, and for Linux they often use AppImage because that means they can reach users of all distributions without fuzz.)

LibreOffice

I get it that having LibreOffice on Haiku was not a small feat, something BeOS owners could only have dreamed of.

Still, it is not perfect:

  • On my system (Kingston Technology DataTraveler 100 USB stick) it takes 30 seconds to start. I hear from a Haiku developer that LibreOffice taking 30 seconds is not normal, it supposedly takes about 4–5 (installed on AHCI HDD).
  • It would be nice if there was some indication that something is happening while large applications are being launched, like a “jumping dock” animation, a watch cursor, or something along those lines. It takes more than just a few seconds until LibreOffice begins to show its splash screen, in which time you don’t know whether something is going on

http://cdn.osxdaily.com/wp-content/uploads/2017/08/animated-dock-icons-bouncing-mac.gif

Jumping application icons on the Mac as an indication that they are being launched. Source: http://osxdaily.com/2017/08/15/stop-dock-app-opening-animations-mac/
  • Shortcuts displayed in the menus are wrong (they talk about Ctrl-O when in fact it is Alt-O; I tested it: Alt-O does work but Ctrl-O does not)
  • Alt-Z does not work (e.g., in Writer)
  • “Application LibreOffice has aborted the shutdown process”

Application launch times

NOTE: Please take this section with a grain of salt. I hear from others that performance is actually great. So far, my results are very different… may well be something particular about my setup, and the mesurements done so far are not scientific. I will update this section as new insights/results emerge.

Performance of launching (non-native) applications is… not that great, by about a factor of 4-10. I don’t know why, but what I can obserev is that only one CPU core us utilized when alunching non-native applications.

Perceived velocity when launching applications on Haiku. Source: Wikipedia
  • Krita takes 40 seconds on a Kingston Technology DataTraveler 100 stick connected to a USB 2 port (the Krita AppImage takes a fraction of that on a Xubuntu Linux Live ISO on USB 2; more scrientific tests to follow). Edit: Down to 13 seconds on SATA SSD and with ACPI disabled
  • LibreOffice takes 30 seconds on a Kingston Technology DataTraveler G4​ stick connected to a USB 2 port (LibreOffice takes a fraction of that on a Xubuntu Linux Live ISO on USB 2; more scrientific tests to follow) Edit: Down to 3 seconds on SATA SSD and with ACPI disabled

Now, I hear that there is a new development that will improve the SSD performance by a factor of well over 10, so I am holding my breath…

I wonder whether something is wrong with my system, since other reviewers have constantly lauded Haiku for its snappiness. Edit: Yes, ACPI was broken on my system. Disabling it resulted in a way snappier system,

So I do some tests:

# 
# Linux
#
me@host:~$ sudo dmidecode(...)
Handle 0x0100, DMI type 1, 27 bytes
System Information
Manufacturer: Dell Inc.
Product Name: OptiPlex 780
​me@host:~$ lsusbBus 010 Device 006: ID 0951:1666 Kingston Technology DataTraveler 100# On a USB 2 portme@host:~$ sudo dd if=/dev/sdc1 of=/dev/null bs=64k count=4096
4096+0 records in
4096+0 records out
268435456 bytes (268 MB, 256 MiB) copied, 7.03517 s, 38.2 MB/s
# On a USB 3 portme@host:~$ sudo dd if=/dev/sdc1 of=/dev/null bs=64k count=40964096+0 records in
4096+0 records out
268435456 bytes (268 MB, 256 MiB) copied, 2.08661 s, 129 MB/s
#
# Haiku - the exact same USB stick
#
/> dmidecode# dmidecode 3.2
Scanning /dev/misc/mem for entry point.
# No SMBIOS nor DMI entry point found, sorry.
# On a USB 2 port/> dd if=/dev/disk/usb/1/0/raw of=/dev/null bs=64k count=4096
4096+0 records in
4096+0 records out
268435456 bytes (268 MB, 256 MiB) copied, 7.44154 s, 36.1 MB/s
# On a USB 3 port/> dd if=/dev/disk/usb/1/0/raw of=/dev/null bs=64k count=4096
4096+0 records in
4096+0 records out
268435456 bytes (268 MB, 256 MiB) copied, 7.47245 s, 35.9 MB/s

For complete transparency, I tested this on two different machines for Linux and Haiku. If needed, I can repeat the tests on the exact same machine.

That still does not explain why applications launch slower than on USB 2 on Linux.

Update: Turns out that there are lots of USB related errors in the syslog of that machine. So the results above may not be typical for Haiku in general.

The saying goes that if you can’t measure it, you can’t control it. And since we want performance to improve, I think a benchmark suite is in order :-)

Shortcuts

When it comes to shortcuts, Haiku is doing amazingly well to accommodate switchers from other operating systems. Personally, I like the Mac-style shortcuts the best, where you hold the key left to the spacebar (Control on Apple keyboards, Alt on other keyboards) while typing a letter or number. Since Haiku does really well in this area, I feel that the following ideas might be worth to be considered as well:

Shortcuts on and for the desktop

I love that I can click an icon and press Alt-O to open it, or the somewhat older traditional shortcut Alt-ArrowDown.

Similarly, it would be nice if I could press Alt-Backspace to put a file into the trash in addition to Alt-T.

For showing the desktop, Alt-H for “hide” and Shift-Alt-H for “hide all” would be good. Maybe Shift-Alt-D for “show desktop”l, too.

Shortcuts in dialog boxes

Open StyledEdit, enter some text. Press Alt-Q. It will ask you whether to save. Press Alt-D for “Don’t save” or Alt-C for “Cancel”. Well, it does not work. Try using the arrow keys to select a button. Does not work either. Repeat the exercise in a Qt based application. Here at least the arrow keys to select a button work. (Command keys to select buttons did in Mac OS X initially, but developers since seem to have forgotten about this capability.)

Shortcuts for screenshots

It would be more than just awesome if I could press Alt-Shift-3 for a screenshot of the whole screen, Alt-Shift-4 for a cursor to come up which lets me select an area of the screen, and Alt-Shift-5 for the currently active window with window decoration.

I wonder whether this can be set up manually, but apparently it cannot. At least the following does not produce the desired result for me, as it does not really obey the option switches.

Almost. But not quite. It ignores the -bwAnd it should be preconfigured out of the box.

More keyboard stuff

Somehow I can feel that Haiku developers care about this stuff. So do I. Hence, I will continue to comment about my keyboard experience in Haiku.

Cannot enter accents

The “`” character is a special beast. It can be part of another character (such as “e”, or it can be standalone. Different operating systems handle this vastly differently.

I cannot enter the “`” character with a German keyboard in KWrite. If I try to enter the character, nothing happens. If I try to enter the same character in QupZilla, I get “»”.

In native applications, I can enter the character, although I need to enter it twice until it appears. In order to enter the symbol three times (as is needed in Markdown to denote code blocks, so it is something I type all the time) I have to press the key six times in a row. The Mac handles this much more intelligently (there presses are sufficient, and you still can enter diacritic accents).

Java applications

Lack of JavaFX?

There is Java to the rescue, right? Well, not quite:

pkgman install openjdk12_default/> java -jar /Haiku/home/Desktop/MyMarkdown.jarError: Could not find or load main class MainCaused by: java.lang.NoClassDefFoundError: javafx/application/Application

Let’s try something else:

/> /Haiku/home/Desktop/markdown-writer-fx-0.12/bin/markdown-writer-fxError: Could not find or load main class org.markdownwriterfx.MarkdownWriterFXAppCaused by: java.lang.NoClassDefFoundError: javafx/application/Application

Turns out this Java stuff may not be as portable in real life as in marketing.

Is there JavaFX for Haiku? If so, why does it not come with the openjdk12_default installation?

Cannot double-click jar files

To my surprise, Haiku has no clue what to do when a `.jar` file is double-clicked.

Bash behaves weird

It’s bash so naturally I thought pipes would work:

/> listusb -vv > listusb.txt
bash: listusb.txt: Invalid Argument

Conclusion

Why am I writing this series? Because I really think the world really needs something like Haiku, an open source system clearly purpose-built for the personal computer desktop, and because I am increasingly annoyed by the fact that “desktop Linux” can’t get their act together. Now, whether to create the desired desktop user experience, a whole different kernel is needed or whether a similar user experience could be created on top of a Linux kernel is not up for me to debate, but I’d certainly be interested what kernel experts have to say on this. In the meantime, I am just dabbling around in Haiku and taking notes, in the hope that they may be useful for Haiku developers and/or the interested public.

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, @diver, and @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