My first day with Haiku: it’s surprisingly good

My first day with Haiku: it’s surprisingly good

TL;DR; A newcomer tried Haiku for the first time and found it amazing, especially compared to the environments available on Linux.

I have already shared my thoughts (as well as frustrations) about #LinuxUsability (part 1, part 2, part 3, part 4, part 5, part 6). In this review, I will describe my first impressions of Haiku, an open-source operating system for personal computers. First impressions can be useful, but since you only get them once — I have preserved mine here.

My first day with Haiku: it’s surprisingly good
The system on which I am writing this review

may be helpful for Haiku developers and other interested parties.
I might be mistaken somewhere, as I am just describing my personal (read: naïve) first experience. Also, friendly people in the #haiku channel on irc.freenode.net helped me with suggestions — I will publish those as well. Thank you, Haiku developers!

What I wanted to say: Haiku is not 100% perfect yet, but it already has a solid working environment.

Installation

The Haiku project provides images for download from CD or DVD, created daily. I used a USB-3 flash drive. I was told that booting from USB-3 might not work, but on my two Intel-based test systems, it worked flawlessly.

I started the installation process by downloading the 64-bit image, which I then wrote to the flash drive using the program Etcher.. Booting works both with EFIand without it — my applause for providing such an image.

Haiku uses its own BeFS file system for the boot partition, although support for FAT32 and NTFS is also claimed. Overall, the system requires about 600MB, but more space is needed for additional applications.

By default, a 600MB BeFS partition and a 3GB FAT32 partition are created. The FAT32 partition has a file /EFI/BOOT/BOOTx64.EFI, indicating the possibility of booting on EFI-supported systems. Unfortunately, I didn't find programs to increase the size of BeFS, and I hope that in the future, a different disk partitioning scheme will be implemented because the size of the partition image is fixed and might not provide enough free space for additional software. It would be nice if additional software packages could be stored on the second FAT32 partition.

This solution would be advantageous for those who wish to access files directly from other systems. Under Linux, there is already support for reading BeFS, and there are read-write implementations of BeFS for FUSE.

My first day with Haiku: it’s surprisingly good
Haiku Installer

I was advised: if you want to use a larger partition — install Haiku on another flash drive.
For me, this step is essentially unnecessary, as the Haiku installer does not partition disks but simply launches the DriveSetup program, where you have to manually partition the disk, add a partition that will then be formatted in BeFS, after which control returns to the installer. You will also have to manually install the bootloader using a separate program. Unfortunately, I couldn't boot from EFI with such partitioning since there is no FAT32 partition with the boot files for EFI. An installer that can automatically partition including EFI features would be helpful.

My first day with Haiku: it’s surprisingly good
BootManager installs the bootloader onto the disk

The installation process takes just under three minutes, which is quite fast. The entire system, which consists of "only" 4751 files, is copied. This is because most software is packaged as hpkg files (somewhat similar to Snap packages in Linux systems), which are never installed but simply mounted. Interestingly, there are quite a few "free" files, such as png. Why aren't they packaged?

As I mentioned, even the operating system kernel is delivered as an hpkg file. (I referenced the 4751 files because I ran HaikuDepot before the installation, which downloaded a bunch of stuff. A clean installation apparently doesn't include all of them and can be installed faster with about 200 packages. Cool! As I was told, the fact that downloaded files are not ignored during installation is a bug. Wow, and it seems like this is the first bug report I've written).

First Boot

The system boots, displaying a nice splash screen, and then halts: after booting, my graphics card (Radeon) shows a black screen.

I was advised to boot in safe mode with a resolution of 1024x768 on a FullHD monitor. In principle, it could have been complicated with the bootloader to work with FullHD, but on another computer with an Intel graphics card, everything worked flawlessly.

The system responds smoothly from a USB drive, apparently because nothing is written to the drive during operation, so I hope to use the USB drive as my main working system. You get a real system when booting from USB, unlike the sluggish "live" Linux images.

During boot, the screen doesn't flicker, there are no kernel messages, and it doesn't feel like Xorg is glued to the kernel with blue tape. Unlike typical Linux distributions, the kernel and GUI here are designed to work seamlessly together!

There’s no login prompt, as the system is meant for a single user. Everything is straightforward, just what’s needed for a personal computer.

Need to support multiple users? Give them each a USB drive, each costing no more than $5.

First impressions of the desktop environment

If you compare the first feeling, it resembles a Mac more than, say, Linux with Gnome. The "command" key works just like on a Mac. Good!

My first day with Haiku: it’s surprisingly good
Nothing compares to the spatial file manager, it feels like the good old Mac!

The default file manager is spatial (like Macintosh System 1.0), unfortunately, each window doesn't remember its settings (for example, view as a list or as icons). As I was told — it's a bug that I believe can be easily fixed. (Unfortunately, writing reports to "mimokrokodil" in the bug tracker for Haiku is difficult — it uses an original system not based on GitLab or GitHub, and you also can't log in using those). Files get their icons, and there are no issues with individual files on the desktop and icons.
Good! Much better than the desktop environments for Linux, you can feel the simplicity.

Performance

The operating system runs smoothly even on low-power devices like a netbook with Atom. There’s no feeling of bloated software layers. Good!

Lunduke said that LibreOffice feels faster than on other operating systems, but I haven't checked that yet.

Play video

Bryan Lunduke. Haiku OS Beta — review and impressions

Command line

It comes with a terminal. Overall, despite some small differences from Linux, I quickly got used to it; it's actually just regular bash, which was quite pleasing.

Welcome to the Haiku shell.
In it, you can easily launch applications that are on the $PATH:
~> Touchpad
~> echo $PATH
.: /boot/home/config/non-packaged/bin: /boot/home/config/bin: /boot/system/non-packaged/bin: /bin: /boot/system/apps: /boot/system/preferences

Wow! “.” in $PATH! This means you can run commands directly from the current directory (Linux users once told me that the world would explode if I tried to do this). Awesome!

My first day with Haiku: it’s surprisingly good
bash, running in the Haiku terminal

What's really cool about the terminal is that you can press ctrl + c to copy, just like in other apps, unlike Linux environments where you need to press ctrl + shift + c in the terminal.
Little things that show the integrity of the entire system.

File system structure

The section from which the boot occurs is mounted at /boot. How simple!
No clutter /etc, /usr, /bin... Just /home and /system. Clean, simple, clear. Great! (Not quite: they exist, but are hidden. Why? Because /bin this /system/bin, there's no need to display this in Tracker, but scripts still use it. I think developers should get rid of outdated things made for compatibility, as it only complicates understanding.)

packagefs

I already mentioned earlier about hpkg files, which are somewhat similar to packages in Linux, but they don’t get installed, they are simply mounted (like snap packages). The file system that does this magic is called packagefs. It mounts hpkg files over others, creating the entire catalog /system.

The mount command, unfortunately, does not show what is mounted.

~> mount
usage: mount [-ro] [-t fstype] [-p parameter] [device] directory
-ro mounts the volume read-only
-t specifies the file system to use (defaults to automatic recognition)
-p specifies parameters to pass to the file system (-o also accepted)
if device is not specified, NULL is passed (for in-memory filesystems)

I was recommended to try mountvolume, which will show the mounted partitions, but unfortunately, it also doesn’t show the mount points with packagefs (it will only show those related to partitions or disk images). [Fortunately, if you run mount or df somewhere on a host with docker, you can scroll a couple of screens! — translator's note] But you can pull a trick with df:

~> df -h

Mount Type Total Free Flags Device
----------------------------------
/boot bfs 600.0 MiB 6.0 KiB QAM-P-W /dev/disk/usb/0/0/0
/boot/system packagefs 4.0 KiB 4.0 KiB QAM-P -
/boot/home/config packagefs 4.0 KiB 4.0 KiB QAM-P -
/no name fat 2.8 MiB 2.3 MiB - M-PRW /dev/disk/usb/0/0/1

As you can see, /system and /home/config inside /boot this is precisely packagefs.
People who know me are aware that I’m a fan of drag-and-drop support in file managers: for example, I use NeXT-style application sets, or AppImages.
In any case, there are drawbacks to this format of software distribution. Can packagefs combine the best of both worlds?

As can be seen, in my case (the system partition is full, but I want to install applications) it would be more elegant to download applications somewhere using the browser, just like I do with files. .dmg for Mac or AppImage. packagefs lives in the kernel, so it is not a file system for FUSE (although I know that FUSE is also available in Haiku). I was also told that additional 'packagefs zones' might be created in the future, which likely means I could specify packagefs to save packages, for instance, on separate disk partitions. I like that idea—if the disk partition is on a removable drive, I could sit at another computer and have working applications there.

I was also told that drag-and-drop method works for installing packages: just drag a file to it /system/packages or in /home/config/packages to install, and if you drag a file out of there, it will be deleted. If you drag a package with unsatisfied dependencies, the system will ask for their prior installation.

Initially, I was unclear how packagefs handles multiple versions of the same package; what will happen if I want to install, for example, different versions of gcc, or other GUI programs? (One of the developers said, quote: 'packagefs itself does not contain anything that prevents the installation of multiple packages with the same name, but since libsolv from OpenSuse is used for dependency resolution and does not allow that to happen, it was forbidden for HaikuDepot settings as well.' I can explain why I like the idea of .app, AppDir, and AppImages packages.)

Dynamic libraries

Is there technology for dynamic libraries? Yes, this is evident, for instance, when you run an application with missing libraries by double-clicking:

My first day with Haiku: it’s surprisingly good
Can you imagine this in gnome, kde, or xfce?

In Linux, such a launch would not show anything. Let's see how long it takes in different environments:

What about checks?

~> ldd
bash: ldd: command not found

You have to use the alternative:

~> objdump -x /bin/bash | grep NEEDED
NEEDED libreadline.so.7
NEEDED libhistory.so.7
NEEDED libncurses.so.6
NEEDED libintl.so.8
NEEDED libroot.so

In principle ldd it would be better since it additionally shows the paths from which the libraries will be loaded.
But where are they actually loaded from?

~> echo $LIBRARY_PATH
%A/lib:/boot/home/config/non-packaged/lib:/boot/home/config/lib:/boot/system/non-packaged/lib:/boot/system/lib

This allows libraries to be placed next to the executable file, and it will "just work." How cool is that! You can simply link individual libraries to the application without fiddling with rpath or setting the LD_LIBRARY_PATH variable like on Linux. Nice!

There is a library (terrible on Linux) /boot/system/lib/libstdc++.so.6.0.24.
What if the application requires a newer version than what is available in /boot/system/lib?
An ordinary user will probably upgrade to the latest version because there is no "Administrator" user with a root password in this system [the author hints at the simplicity — translator's note].
Well, at least that's how it looks. (In reality, the "user" acts as root. You can set a password using the command passwd, after which specify PermitRootLogin=yes downward API support (simultaneously with this in sshd_config, and then you'll be able to connect from outside via ssh. The developers told me that by default, all applications run as root. Eventually, they might refine this... But I'm not sure I would like it.)

Since there are no Haiku distributions, application developers also do not have access to newer versions than those available for download in your system. The result: fewer disappointments, things "just work." Great simplification! I like it.

Resources and registrars

As mentioned above, applications receive a type and an icon, so you don't have to deal with files on the desktop and similar tasks. I was told that there is a special service registrar that is aware of applications, file types, and icons. It is always notified when a package is installed or a file is marked for execution (using the program chmod or mimeset).
Somewhat reminiscent of Launch Services on Mac. And this is what is missing in desktop environments on Linux. Excellent!

Binary files get built-in icons as resources, so you don't need a separate icon in addition to the files on the desktop. Almost like it was on Macintosh System 1. Cool!

My first day with Haiku: it’s surprisingly good
Supported application types, supported document types, embedded resources, and version information

Tracker (file manager) automatically marks binary files as executable. This is what I've been waiting for from desktop environments on Linux for over 10 years.
All of this is quite delightful. It's so cool! Life is becoming so simple. It's more refined and resembles Mac more than XDG on Linux. Or like this...

My first day with Haiku: it’s surprisingly good
Linux application without the executable bit set

In Gnome the there's an option to launch executable files from the file manager, but the community raised a fuss — and everything was reverted.
I was also told that applications use the function find_paths() instead of hard-coded paths /usr/bin and /usr/share (a common feature of Linux working environments), which allows them to be moved around the filesystem. Standing ovation! On Linux it's usually "difficult".

What surprised me

  • I was puzzled by the fact that /boot this is the mount point for the partition from which the system loads. Why isn’t it "/"? Or /Haiku? (Пояснение: действительно, /boot this is always the boot partition, displayed on the desktop as "Haiku" because that's its name. Think of "/" as analogous to the desktop in Mac System 1, the root of the hierarchy that doesn’t actually exist on disks).
  • The mount point for user-installed packages is /home/configWhy not just /home? (Один из разработчиков пояснил мне, что они не хотят засорять домашний каталог, но мне кажется, config — название неудачное, потому что внутри есть подкаталог bin/, so it's not just storing settings).
  • What is the license for everything? For instance, in the WebPositive browser when viewing "About", there is no explicit indication. In the "About this system" field, it states that the Haiku code is under the MIT license. Great! (I was also told that WebPositive comes with the operating system under the same license, but its WebKit engine is mostly under the two-clause BSD).

What didn’t work as I expected

First of all, I was struck by the level of hardware support. Everything worked on my Atom-based netbook, including WLAN. But there are some quirks in the operation.

  • Total non-functionality on Macintosh hardware, regardless of EFI mode or BIOS emulation ("Windows"). The system simply hangs if you select an icon in the Mac bootloader. I was told that this is a known issue and you can boot using rEFIt, but those settings are too complicated for me.
  • Graphics acceleration. It seems that using Radeon is not possible yet (I had a black screen), but even on Intel, it’s not smooth. Video acceleration in WebPositive is purely software-based, including H.264. It's surprising, given the initial direction towards video. One of the developers clarified that video in WebPositive works using slowdown hacks.
  • No sound? "Drivers for sound cards are still lacking," said the developer. Someone probably needs to support the HDA driver similar to USB-3. Currently, getting sound requires a hot reboot from another operating system, and I believe this will be fixed eventually.
  • Brightness and volume control buttons aren't working. (There is a base in the form of the Shortcuts app: you can bind any keyboard combination to any desired function, but so far Haiku can't work with media keys. Any volunteers?)
  • Two-finger touchpad control. Doesn't work out of the box. There is a settings panel that reported, "No touchpad found, the settings will have no effect." (Known issue with ELAN Input Device, ACPI ETD050A).
  • With the existing application for reading files from digital cameras and smartphones on Android, I couldn't get synchronization in MTP and PTP modes. It would be great if they mounted like other partitions in the system.
  • Closing the laptop lid does not seem to be processed. (I know that Haiku still does not work with ACPI: support has been implemented but is not enabled by default; there is no reinitialization of the driver)
  • I couldn't create an account in the bug tracker because captcha does not work in WebPositive.

Applications

The main purpose of the operating system is to run applications. I was afraid that there wouldn't be applications for real work under Haiku. Luckily, I was mistaken, as there is hope for improvement — when Haiku is used more frequently.
Scribus (a desktop publishing application) is available, and it's a quite complex application based on Qt. Also available are QtCreator (IDE).

I became curious if native Be applications for Haiku are being written today, using native tools (if they exist), or if it's sufficient to use QtCreator (which would ease the porting of cross-platform applications). The developers' stance on Haiku is a "clear" preference for native applications for Haiku. Is that true? I doubt that applications for real work are not cross-platform (all the applications I use for work are cross-platform).

Support for WxWindows applications is claimed.

The lack of Gtk+ support is disappointing. This means that there won't be Gimp on Haiku any time soon (well, that's my guess), but there is a substitute in Krita!

I also think there needs to be a simple and clear way to create applications for Haiku, like this — using Travis CI and GitLab CI.

Where are we headed?

Will Haiku get stuck in the BeOS UX concept? I believe that to be appealing, it needs to carefully refine new UX schemes when adopting them, while remaining true to its foundations.
For example:

  • Staying simple, without those 100500 options that make Linux "complicated."
  • Using an arrow cursor for the mouse instead of a strange hand.
  • Will there be a Dock? (I know there is something like a Dock called LaunchBox, which is even closer to a Dock LnLauncher, but the original BeOS already had a Dock back in 1998!)
  • Global menu? (Obviously not since JLG sees no particular benefit).
  • Quick window switching? (They said it might be possible to activate "Stack&Tile", by holding the Windows key while dragging a window, but it's not intuitive, moreover — it doesn't work for me).
  • Animation for opening and closing windows?
  • Shadows behind windows?
  • Support for themes like in Aqua? (Yes, it's possible, there is infrastructure and tools, for example, HaikuThemeManager, but someone needs to create the themes. I would try it myself, I was told there is documentation in https://xref.plausible.coop/source /xref/haiku/headers/os/interface/ControlLook.h, но не сейчас).

These are subtle nuances, taking into account which the system shouldn't lose its unique individuality.

Conclusion

Haiku really opened my eyes, showing me how a desktop environment "just works."
More than 10 years ago, I switched from Mac to Linux and have been looking for the same level of refinement and beauty, and Haiku matches it in many ways.

Honestly, there are shortcomings, but surprisingly many things, including hardware components, like WLAN or printers, "just work."

However, primarily, the system has a desktop environment concept that is absent in desktop environments on Linux.

Having a cohesive system (not just a kernel and various competing user environments) makes everything simple and consistent.

The absence of different builds (distributions) makes everything even simpler.

Relying on a single user operating in the system further reduces complexity.

The result: a very simple, refined, minimalist system in many ways, created for "regular users," not UNIX system administrators.

There is hope that when this system becomes more popular (which is inevitable), its complexity will not increase.

I already wrote about #LinuxUsability in the previous article series. It's nice to know that Haiku addresses many of the issues raised. Including the inherent problems that plague Linux working environments..

It took me just one day to realize: I want to use this environment for my daily work and I'm also looking for ways to contribute to the system's development.

Try it yourself! After all, the Haiku project offers images for download via DVD or USB. created daily. To install, simply download the image and write it to a flash drive using Etcher..

From the translation author: this is only the first article in the Haiku series, the others are awaiting translation and will be published later.

Source: habr.com

Buy reliable website hosting with DDoS protection, VPS VDS servers 🔥 Buy reliable website hosting with DDoS protection, VPS VDS servers | ProHoster