📜 ⬆️ ⬇️

My first day with Haiku: she is unexpectedly good


TL: DR; The newbie tried Haiku for the first time and decided that she was awesome. Especially compared to working environments available on Linux


I already shared my ideas (as well as disappointments) about #LinuxUsability ( part 1 , part 2 , part 3 , part 4 , part 5 , part 6 ). In this review, I will describe the first impressions of Haiku , an open source operating system for personal computers. Sometimes first impressions are useful, but since you get your first impressions only once, I saved mine here.



The system on which I am writing this review


They may be useful to Haiku developers and / or other interested parties.
Somewhere I could be wrong, because I just describe the personal (read: on the blue eye) first experience. Also friendly people on the #haiku channel on the irc.freenode.net network helped me with tips - I will also publish them. Thank you Haiku developers!


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


Installation


The Haiku Project provides daily bootable CD or DVD images. 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 everything works flawlessly.


I started the installation process myself by downloading an image for 64bit, which I then recorded onto a USB flash drive using Etcher . Downloading works with and without EFI - my applause for providing such an image.


Haiku uses its own BeFS file system for the boot partition, although, in principle, support for FAT32 and NTFS is claimed. In general, 600 MB is enough for the system, but for additional applications more space is needed.


By default, a 600 MB partition with BeFS and a FAT32 partition with a size of 3 GB are created. On FAT32 there is a file /EFI/BOOT/BOOTx64.EFI , which implies the ability to boot on systems with EFI support. Unfortunately, I did not find programs to increase the size of BeFS, and I hope that in the future they will make another scheme for partitioning the disk, because the size of the partition image is fixed small and there may not be enough free space for additional software. It would be nice if additional software packages were stored on the second FAT32 partition.


The same solution would be an advantage for those who wish to access files directly from other systems. Under Linux, there is already support for reading BeFS, there are implementations for reading and writing BeFS under FUSE .



Haiku Installer


They gave me advice: if you want to use a more capacious partition, install Haiku on another flash drive.
For me, this step is, in principle, superfluous, since the Haiku installer does not know how to split disks, but simply launches the DriveSetup program, in which you need to manually split the disk, add a section, which is then formatted in BeFS, after which control returns to the installer. You will also need to manually install the bootloader using a separate program. Unfortunately, I could not boot from EFI with such a breakdown, since there is no FAT32 partition with boot files for EFI. It would not hurt the installer, who knows how to automatically breakdown including the features of EFI.



BootManager installs bootloader to disk


The installation process itself takes a little less than three minutes, which is very fast. This copies the entire system, consisting of "only" of 4751 files. The reason for this is the fact that most software is packaged in the form of hpkg files (something similar to Snap packages on Linux systems) that are never installed, but simply mounted. Interestingly, there are quite a few "free" files, for example, png. Why are they not oppressed?


As I said, even the kernel of the operating system comes in the form of an hpkg file. (I talked about the 4751 file, because I launched HaikuDepot before the installation, which pumped a bunch of everything. The clean installation does not seem to contain all of them, and can be installed faster with about 200 packages. Cool! As I was told, what downloaded the files are not ignored during installation - this is a software error . Wow, but it seems that the first error report was written from my submission).


First boot


The system boots up, showing a nice screen saver, and then stops: after loading, my video card (Radeon) shows a black screen.


I was advised to boot in safe screen mode with a resolution of 1024x768 on a FullHD monitor. In principle, you could be confused with the bootloader to get work with FullHD, but on another computer with a graphics card from Intel everything worked flawlessly.


The system itself works responsively from a flash drive, apparently due to the fact that nothing is written to the flash drive during operation, so I hope to use the flash drive as the main working system. You will get a real system when booting from USB, unlike the braking "live" Linux images.


During boot, the screen does not blink, kernel messages are not visible, there is no feeling that Xorg is screwed to the core with a blue electrical tape. Unlike typical Linux distributions, the kernel and GUI are built and tailored for each other here!


There is no invitation to log in, because the system is made for one user. Everything is simple, exactly what is required for a personal computer.


Need support for multiple users - give them a flash drive, each of which costs no more than $ 5.


First impressions of the work environment


If you compare the first impression - it looks more like a Mac than, for example, on Linux with Gnome. The command key works exactly the same as on the Mac. Good!



Nothing beats a spatial file manager, it feels like a good old Mac!


The file manager is by default spatial (like Macintosh System 1.0), unfortunately each window does not remember its settings (for example, viewing as a list or as icons). As I was told, this is a mistake, which I suppose will be easy to fix. (Unfortunately, writing reports to the “mimocrocodile” in the bugtracker for Haiku is difficult - it uses an original system that is not based on GitLab or GitHub, which is also impossible to enter with their help). Files get their icons, there are no problems with individual files on the desktop and icons.
Good! Much better than working environments for Linux, simplicity is felt.


Performance


The operating system works smartly even on low-power hardware such as Atom netbooks. No bloated layers of software. Good!


Lunduke said that LibreOffice felt to be faster than other OSes, but I haven't tested it yet.



Bryan Lunduke. Haiku OS Beta - review and experience


Command line


The structure has a terminal. In general, despite the small differences with Linux, I immediately got used to it, in fact - the usual bash, which is very pleased.


 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 that you can run commands directly from the current directory (Linux OS once told me that the world will explode if I try to do this). Fine!



bash running in Haiku terminal


What's more cool in the terminal - you can press ctrl + c to copy, just like in other applications, unlike Linux working 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 partition where the download is coming from is mounted on /boot . How easy!
No heap /etc , /usr , /bin ... Just /home and /system . Clean, simple, clear. Good! (Not really: they are, but hidden. Why? Because /bin is /system/bin , there is no need to display this in Tracker, but scripts still use it. I think developers should get rid of obsolete things done for compatibility, as this only complicates the understanding.)


packagefs


I mentioned earlier about hpkg files, which are somewhat reminiscent of Linux packages, but they are not installed, but simply mounted (like snap packages). The file system that does this magic is called packagefs. It mounts hpkg files on top of others; as a result, the entire / system directory is created in this way.


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 mounted partitions, but, unfortunately, it also does not show mount points with packagefs (it will show only those associated with partitions or disk images). [Fortunately, if you run mount or df somewhere on the host with docker, you can wind up a couple of screens! - approx. translator ] But you can do the trick with df:


 ~> df -h Mount Type Total Free Flags Device ---------------------------------- /boot bfs 600.0 MiB 6.0 KiB QAM-PW /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 is just packagefs.
People who know me know that I'm a fan of drag-and-drop support in file managers: for example, I use NeXT-style application suites, or AppImages .
In any case, there are drawbacks in this format of software distribution. Can packagefs combine the best?


Apparently, in my case (the system partition is full, but I want to install applications) it would be more elegant to download applications somewhere using a browser, just like I do it with .dmg files 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 in Haiku). I was also told that, possibly, in the future, additional “packagefs zones” will be made, and this most likely means that I can tell packagefs to save packages, for example, on separate disk partitions. This is to my taste - if the disk partition is on removable media, I can sit on another computer and get working applications there.


They also said that the installation of packages also works using the drag-and-drop method: just drag the file to /system/packages or to /home/config/packages to install, and if you pull the file from there, it will be deleted. If you drag a package with unsatisfied dependencies, the system will ask for their preliminary installation.


At first it was not clear to me how packagefs handles multiple versions of the same package, what would happen if I wanted 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 several packages with the same name, but since libsolv from OpenSuse is used to resolve dependencies, which does not allow doing so, it was forbidden to do so and HaikuDepot himself in the settings. "I can explain why I like the idea with the packages .app, AppDir and AppImages).


Dynamic libraries


Is there a dynamic library technology? Yes, this can be seen, for example, if you launch the application with the missing libraries by double-clicking:



Can you imagine this in gnome, kde or xfce?


On Linux, such a launch would not show anything. Let's see how long it will be done in different environments:



What about checks?


 ~> ldd bash: ldd: command not found 

It is necessary to use a replacement:


 ~> 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 would be better, since it additionally shows the paths from where the libraries will be loaded.
And where do they really load from?


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

So you can put the library next to the executable file, and it will just work. How awesome! You can simply connect individual libraries to the application without fussing with rpath or setting the LD_LIBRARY_PATH variable like on Linux. Good!


There is a library (terrible on Linux) /boot/system/lib/libstdc++.so.6.0.24.
What if an application requires a newer version than the one in / boot / system / lib?
An ordinary user will probably upgrade to the latest version, because there is no “Administrator” user with root password on this system [the author hints at simplicity - approx. translator ].
Well, at least that's what it looks like. (Actually, the “user” is analogous to root. You can set a password using the passwd command, then set PermitRootLogin=yes to sshd_config , and then you can connect externally via ssh. The developers told me that by default all applications run as root Ultimately, they may complete this ... But I'm not sure if I will like it.)


Due to the fact that there are no Haiku distributions, application developers also do not have access to versions newer than those available for download on your system. Result: less frustration, things "just work." Great simplification! I like it.


Resources and Registrar


As mentioned above, applications get a type and an icon, so you don’t have to bother with files on the desktop or the like. They told me that there is a special service registrar who knows about applications, file types, and icons. It is always notified when installing a package or marking a file for execution (using the chmod or mimeset ).
Something like Launch Services on a Mac. But this is something that is absent in working environments on Linux . Fine!


Binary files get embedded icons in the form of resources, so you do not need a separate icon in addition to the files on the desktop. Almost the same as it was on the Macintosh System 1. Cool!



Application types, supported document types, embedded resources, and version information


Tracker (file manager) automatically marks binary files as executable. This is what I have been expecting from Linux environments for more than 10 years.
All this is quite delivering. It’s cool! Life is getting so simple. This is more subtle and more Mac-like than Linux XDG . Or this ...



Linux application without installed executable bit


Gnome removed the ability to run executable files from the file manager, but the community made a fuss and everyone returned.
They also told me that applications use the find_paths() function instead of the hard-coded /usr/bin and /usr/share (a common feature of Linux environments), which means that they can be moved around the file system. I applaud while standing! On Linux, this is "complicated" as usual .


What surprised me



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 features in the work.



Applications


The main purpose of the operating system is to launch applications. I was afraid that under Haiku there would be no applications for real work. Fortunately, I was mistaken, because there is hope for improvement - when Haiku will be used more often.
Scribus (application for visual layout) is, and this is a very complex application based on Qt. There is also a QtCreator (IDE).


I was wondering if today they write native Be applications for Haiku using native tools (if they exist), or just use QtCreator (which will facilitate porting cross-platform applications). The position of Haiku developers is the "explicit" preference for native Haiku applications. True? I doubt that real-life applications are not cross-platform (all the applications used in my work are cross-platform).


Declared support for WxWindows applications.


Lack of support for Gtk + is frustrating. This means that Haiku will not have Gimp in the near future (well, I think so), but there is a replacement in the form of Krita!


Also, I think we need a simple and understandable way to create applications for Haiku, like this - using Travis CI and GitLab CI.


Where are we going?


Will Haiku get stuck in BeOS UX concept? It seems to me, for attractiveness, she needs to carefully verify the new UX schemes when they are adopted, while remaining true to their fundamentals.
For example:



These are subtle nuances, given which, the system should not lose its unique personality.


Conclusion


Haiku really opened my eyes, showed how the work environment "just works."
More than 10 years ago, I switched from Mac to Linux and since then I have been looking for the same level of sophistication and beauty, and Haiku largely matches it.


Honestly, there are flaws, but surprisingly many things, including hardware stuffing, such as WLAN or printers, "just work."


However, first of all, the system has the concept of a working environment that is not present in Linux working environments.


Having a complete system (rather than a kernel and various competing user environments) makes everything simple and consistent.


The lack of various assemblies (distributions) makes it even easier.


The calculation of only one user in the system further reduces complexity.


The result: a very simple, sophisticated, minimalistic system in many ways, designed for "mere mortals" and not for UNIX system administrators.


, ( ), .


#LinuxUsability . , Haiku , , Linux .


, : , .


! Haiku DVD USB, . Etcher .


: Haiku.


:


')

Source: https://habr.com/ru/post/461141/


All Articles