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.
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:
- Markdown editor (think Typora). There is CuteMarkEd but it seemingly neither has buttons nor shortcuts for marking up text, and there is Ghostwriter, but it is seemingly lacking a shortcut for marking text as inline code or a code block)
- Animated GIF screen recorder (think Peek). There is BeScreenCapture but it does not record GIF
- 3D printing slicer (think Ultimaker Cura, PrusaSlicer)
- 3D CAD tools (think FreeCAD, OpenSCAD, in-browser Onshape). There is LibreCAD, but that’s 2D
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
- 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.
- 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 780me@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.
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.
This article is part of a series:
- https://medium.com/@probonopd/my-first-day-with-haiku-shockingly-good-8930cad4bbb0
- https://medium.com/@probonopd/my-second-day-with-haiku-still-thrilled-but-not-ready-to-switch-just-yet-2310330d104b
- https://medium.com/@probonopd/my-third-day-with-haiku-reality-is-settling-in-47b551216550
- https://medium.com/@probonopd/my-fourth-day-with-haiku-installation-and-boot-woes-bd4f637c3ba0
- https://medium.com/@probonopd/my-fifth-day-with-haiku-lets-port-some-apps-e0f26487cea7
- https://medium.com/@probonopd/my-sixth-day-with-haiku-under-the-hood-of-resources-icons-and-packages-abec8d0e4ec6
- https://medium.com/@probonopd/my-seventh-day-with-haiku-printing-scanning-networking-fb56c1dc8ee7
- https://medium.com/@probonopd/one-more-thing-haiku-application-bundles-1803a11f9748
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.