About
Side Projects
Blog
2024-11-28

Indicating Native Haiku Applications

Haiku has it’s own C++ GUI libraries which lend the platform a certain look and feel. Desktop applications which are written for the platform tend to reflect that look and feel. Over time, people in the community have been asking for a visual means of identifying those packages which supply a desktop application that could be considered “native”.

When the desire for this functionality first surfaced there were ideas about tagging applications in relation to the GUI library they use. This started to get complex quickly because applications could transitively import different GUI libraries and were maybe using only a portion of those libraries for functionality that was not user-facing. Having to disambiguate the situation in some automated way quickly revealed itself to be quite difficult.

Recently I read this article interviewing a Haiku developer.

HaikuDepot would be much improved if it gave me a way to know if an app is … a proper app that uses the Haiku API.

I decided to return to this task and decided that the platform didn’t need something complicated but merely a simple definition and a flag stored on each package. The definition we came up with for native is;

A package is considered native if it supplies desktop application(s) with a human-facing GUI that aligns to the Haiku “look and feel” and uses native Haiku APIs to achieve this.

Unfortunately this requires human discretion which is not always cut and dry but is probably the only way forward.

On the server side, database storage, GUI features and Java code logic were implemented to support this feature. A new report has also be added which allows auditing of which application are considered to be native. @humdinger has introduced a new icon to use as an indicator. This is used in mono-chrome in the web-UI and in colour in the desktop application.

On the server side the additional icon looks like this;

HDS

The following image shows similar data in the desktop application. The green indicator is showing a package which has been installed.

HD