Haiku is supported by Haiku, Inc., a not-for-profit organization founded in 2003 by former project leader Michael Phipps. Haiku, Inc. is based in Rochester, New York.
Haiku began as the OpenBeOS project in 2001, the year that Be, Inc. was bought by Palm, Inc. and BeOS development was discontinued; the focus of the project was to support the BeOS user community by creating an open-source, backward-compatible replacement for BeOS. The first project by OpenBeOS was a community-created "stop-gap" update for BeOS 5.0.3 in 2002. In 2003, a non-profit organization (Haiku Inc.) was registered in Rochester, New York, to financially support development, and in 2004, after a notification of infringement upon Palm's trademark on the BeOS name was sent to OpenBeOS, the project was renamed as Haiku. However, development would only reach its first milestone in September 2009 with the release of Haiku R1/Alpha 1. This was followed in May 2010 by R1/Alpha 2, which contains more than 300 bug-fixes and improvements.
Haiku is developed in C++ and provides an object-oriented API.
The modular design of BeOS allowed individual components of Haiku to initially be developed in teams in relative isolation, in many cases developing them as replacements for the BeOS components prior to the completion of other parts of the operating system. The original teams developing these components, including both servers and APIs (collectively known in Haiku as "kits"), included:
* App/Interface – develops the Interface, App and Support kits.
* BFS – develops the Be File System, which is mostly complete with the resulting OpenBFS.
* Game – develops the Game Kit and its APIs.
* Input Server – the server that handles input devices, such as keyboards and mice, and how they communicate with other parts of the system.
* Kernel – develops the kernel, the core of the operating system.
* Media – develops the audio server and related APIs.
* MIDI – implements the MIDI protocol.
* Network – writes drivers for network devices and APIs relating to networking.
* OpenGL – develops OpenGL support.
* Preferences – recreates the preferences suite.
* Printing – works on the print servers and drivers for printers.
* Screen Saver – implements screen saver functionality.
* Storage – develops the storage kit and drivers for required filesystems.
* Translation – recreates the reading/writing/conversion modules for the different file formats.
A few kits have been deemed feature complete and the rest are in various stages of development.
The Haiku kernel is a modular hybrid kernel and a fork of NewOS, a modular kernel written by former Be Inc. engineer Travis Geiselbrecht. Like the rest of the system it is currently still under heavy development. Many features have been implemented, including a virtual file system (VFS) layer and rudimentary symmetric multiprocessing .
Compatibility with BeOS.
Haiku aims to be compatible with BeOS at both the source and binary level, allowing software written and compiled for BeOS to compile and run without modification on Haiku. This would provide Haiku users with an instant library of applications to choose from (even programs whose developers were no longer in business or had no interest in updating them), in addition to allowing development of other applications to resume from where they had been terminated following the demise of Be, Inc. This dedication to compatibility also has its drawbacks, though, requiring Haiku to use version 2.95 of the compiler GCC, which is 10 years old. Switching to using the newer GCC version 4 breaks compatibility with BeOS software; therefore, Haiku supports being built as a hybrid GCC4/GCC2 environment. This allows the use of both GCC version 2 and version 4 binaries at the same time.
Note that this compatibility applies to x86 systems only. The PowerPC version of BeOS R5 will not be supported. As a consequence, the ARM, 68k and PPC ports of Haiku use only the gcc4 compiler.
Despite these attempts, compatibility with a number of system add-ons that use private APIs will not be implemented. These include additional filesystem drivers and media codec add-ons, although the only affected add-ons for BeOS R5 not easily re-implemented are Indeo 5 media decoders for which no specification exists.
R5 binary applications that run successfully under Haiku (as of May 2006) include: Opera, Firefox, NetPositive, Quake II, Quake III, SeaMonkey, Vision and VLC media player.
Driver compatibility is incomplete, and unlikely to cover all kinds of BeOS drivers. 2D graphics drivers in general work exactly the same as on R5, as do network drivers. Moreover, Haiku offers a source-level FreeBSD network driver compatibility layer, which means that it can support any network hardware that will work on FreeBSD. Audio drivers using API versions prior to BeOS R5 are as-yet unsupported, and unlikely to be so; however, R5-era drivers work.
Low-level device drivers, namely for storage devices and SCSI adapters, will not be compatible. USB drivers for both the second- (BeOS 5) and third- (BeOS Dano) generation USB stacks will work, however.
In some other aspects, Haiku is already more advanced than BeOS. For example, the interface kit allows the use of a layout system to automatically place widgets in windows, while on BeOS the developer had to specify the exact position of each widget by hand. This allows for GUIs that will render correctly with any font size and makes localization of applications much easier, as a longer string in a translated language will make the widget grow, instead of being partly invisible if the widget size were fixed.
The Deskbar is the little panel that by default is located in the upper right corner of the screen. It's Haiku's version of Windows' taskbar with its Start button. It contains the Deskbar menu from where you can start applications and preferences, a tray with a clock and other tools below that and a list of currently running programs at the bottom.
The Deskbar Menu.
A menu opens when you click on the Deskbar's top:
- About This System... - Shows some basic information of the system, licenses and the credits of the Haiku project.
- Find... - Opens the Query dialog.
- Show Replicants - Shows/hides the little Replicant widget you use to drag it around, remove or access its context menu.
- Mount - Offers the same options as when invoked by right-clicking the Desktop (see Mounting Volumes).
- Deskbar Preferences... - Opens a panel to configure the Deskbar (see below).
- Shutdown - Offers options to either or .
- Recent Documents, Folders, Applications - List of the last recently opened documents, folders and applications (see below).
- Applications, Demos, Deskbar Applets, Preferences - List of installed applications, demos, applets and preferences (see
Here you can set the number of recent documents, folders and applications that are shown in their menu in the Deskbar, or if you want to see them at all.
The button opens the folder /boot/home/config/be/. In it you'll find the files and folders that appear in the Deskbar, by default these are , , , and .
You can delete or add entries like links to applications, documents or even queries by simply copying/deleting them to/from this folder.
It's even easier to simply drag a file, folder or saved query and drop it where you want it into the Deskbar.
The Deskbar always stays above all other windows. The Deskbar pops to the front if the mouse pointer touches it.
Sorts the list of running programs alphabetically. Even if you sort alphabetically, the Tracker entry always stays first in the list. Provides a small widget to show/hide all windows of a program directly under its entry in the Deskbar. Newly launched programs have their windows automatically expanded under their entry in the Deskbar.
Toggles between 24 and 12 hour clock. Adds the display of seconds to the clock. Shows the date in European format: day-month-year Shows a long version of the date. Only available when the Deskbar is placed as a bar along the top or bottom edge of the scree
Here you can also launch a calendar that also appears, when you hold down the left mouse button on the clock for a little time.
Any program can install an icon in the tray to provide an interface to the user. The email system, for instance, shows a different symbol when there's unread mail and offers a context menu to e.g. create or check for new mail. ProcessController is another example that uses its icon in the tray to provide information (CPU/memory usage) and to offer a context menu.
If you activated Expanders in the Deskbar settings, you can expand/collapse the list of windows directly under an application's entry.
In front of every application's windows is a symbol providing info on its state. A bright symbol means a window is visible, a dark one that it's minimized. Three lines in front of a symbol shows that it's not on the current workspace.