Haiku monthly activity report - 07/2015

Blog post by PulkoMandy on Thu, 2015-08-06 16:42

Hi there!

The summer is there and it seems some Haiku developers had more time to work on it this month. There were so much news that my article from last month isn't even on the homepage anymore!


This report covers the commit range hrev49433-hrev49500. Help gathering useful statistics about a given commit range with git (modified lines, number of people contributing, etc) is appreciated. Meanwhile you can check the gitstats page, which I won't keep up to date every month because it takes too long to generate and doesn't look so nice: http://pulkomandy.tk/stats-201507


Let's start with the newly packaged apps. Humdinger uploaded a first version of his clipboard manager Clipdinger. It allows you to keep an history of recently copied clipboard items, and even saves the history to disk so it isn't lost when you reboot the machine.

waddlespash cleaned up the default list of licenses bundled with Haiku. There were some duplicate entries, and some licenses were used by just one package. This makes Haiku come with a few files less, saving some kilobytes on your hard disk.

Humdinger also uploaded a package for vacuum, an instant messaging client based on Qt, and updated the yab package. Yab is a BASIC language for Haiku allowing to write native applications with a GUI. It is currently developped by bbjimmy, and powering some useful tools for Haiku.

He also uploaded packages for postgresql and some related tools, as well as updated cdrecors to a version that works again (some patches went lost when writing the recipe for it).

PulkoMandy uploaded several tools useful for development on 8-bit computers. This is probably not useful to most of Haiku users.

The work to remove 3rd-party sources from Haiku and make them packages continues, with kallisti5 providing a package for libedit (used for debugger command line interface and a few other tools with a similar command line system). Korli also outsourced diffutils.

Build tools

korli implemented the complex.h header from C99, which is needed for complete C++11 support in gcc. He updated gcc and started work on getting Haiku to work with versions 5, 6, and 4.7.3. He also updated the gcc and binutils packages so these fixes are available to everyone.

Andrew Lindesay, the main developer of the HaikuDepot web server, worked on a tool to render HVIF files to PNG. This will be used by the web server to extract hvif from packages and render them on the web pages.

System stability and bugfixes

stpere reviewed and fixed several problems found by Coverity. This includes a lot of fixes for memory leaks and other badly written code, almost everywhere in the system (applications, drivers, etc). An interesting one is a fix in BMessage, which closed a 7 years old bug where FileTypes would crash.

Improvements to Debugger

DeadYak continues his work on the Debugger, which can now handle signals, and a team forking and executing a new process. This makes it possible to debug some complex applications. The details are already covered in two blog posts, if you want to learn more about this.

He also continued his work on editing variables without going through the memory view, and published a first version of the user manual for Debugger, which you can find in one of the blog posts below.



User interface

Janus fixed the BeDecorator and WinDecorator. These make the window title bars look like BeOS R5 or Windows 95. They are there because BeOS had them as easter eggs, and also because they are useful for testing the decorator API, should someone ever start work on redesigning this part of the Haiku look and feel.

waddlesplash imported the Nebula screensaver, wrote by axeld for BeOS. He made several cleanups, including a rewrite of x86 assembler code to portable C, and allowing the screensaver to run in modern resolutions. Skipp_OSX helped with cleaning up and modernizing the source.

waddlesplash cleaned up the BTab class, fixing a few bugs in the process. The plan is to make BTabs draggable from one BTabView to another, and allow scrolling the tab list when there are many tabs in a window. This led to some discussion on the merits of BTabView as a multi-document interface versus the use of stack and tile. At this point neither is feature complete enough to satisfy the requirements.

Stippi updated parts of Icon-O-Matic to use Haiku's native Layout system. It was still using an earlier system.
waddlesplash continued work on BToolBar and converted one more app to use it: the mail client, which is also using new style vector icons now.

TwoFx, one of our Google Code-In students, provided a patch to Screenshot to show the preview there with the correct aspect ratio.

Axel improved the layout kit to allow one-shot automatic resizing of a window when updating the size in real time is not needed. He used this to allow for formatted text and any number of buttons in BAlert.


mmlr fixed several issues and shortcomings in the FAT filesystem, including a corruption of data.

PulkoMandy made the BFS recovery tool work on 64-bit Haiku, allowing it to use more than 2GB of RAM to store temporary data. This allows recovering corrupted BFS drives even if there are lots of files to recover. Even if you don't have enough physical RAM, using a swap file is possible.

atalax, one of our Google Code-In winners, provided a patch to fix GPT validation and better handle the second copy of the GPT header.


There were some remaining problems following the update of our DNS resolver from libbind to netresolv.
jua investigated these issues and fixed the jamfiles to make sure we use the thread safe version of netresolv functions. This slightly changes the API and some adjustments were made by PulkoMandy to the network preferences so it is still possible to configure DNS servers.

The update to netresolv was not enough to get things working, as initially thought. PulkoMandy merged some extra work done on NetBSD and FreeBSD code bases, in order to get the AI_ADDRCONFIG flag to do what we expect it to. This finally solves the problem of trying to connect to an IPv6 address when only IPv4 is available.

kallisti5 and tqh played a bit with the unit test system to help investigating remaining issues after the netresolv switch. This helped identify a problem in the DHCP client, which wrongly used the previously not working AI_ADDRCONFIG flag to getaddrinfo. When the flag started to actually be used, it ended up sending corrupt DHCP packets, which not all DHCP servers would accept. The issue was finally solved by PulkoMandy.

mmlr investigated and fixed an issue in the TCP code, which would result in useless repetition of TCP packets and generally bad network performance.

Media Kit

We have a new committer in this area. After a GSoC participation in 2011 and several years working on Caya and researching ways to interface Jack with the Media Kit, Barrett knows our media code quite well. He had several patches waiting unreviewed on Trac for some time, and several developers commented that they didn't know or remember enough about the Media Kit to review these. So, it was more than time to give Barrett commit access.

His work started with implementing missing parts of the BeOS API and cleaning up existing code, and will continue with improving the management of latency in the media kit and making it work better in heavy load situations. He also completely reworked the way restarting the media server is handled, to provide for a smoother experience. This will need further work to integrate with the launch daemon, which will allow restarting the media server without losing connections to other applications (so sound from running apps continues to work after the restart). You can read his blog post here.
JackBurton contributed some work on the ChannelSlider class (the slider used for volume control), fixing a memory leak there.

Launch Daemon

Axel merged his new Launch Daemon. There is still some work to do on it as it turns out it makes booting slower than it was with the boot script. Some benchmarking will have to be done, and the issues fixed.


kallisti5 continues work on the radeon_hd driver, with the initial steps toward DisplayPort support.


waddlesplash and jscipione made some minor changes to the Haiku Book, which documents the Haiku API. This month most of the work was on BTabView and BScrollbar.

Outside the tree

Source code is not everything. An important change this month is the nomination of kallisti5 and Deadyak as new members of Haiku, inc board. At the same time, BGA and mmadia have left the board as they don't have time to run things anymore.

Haiku, Inc. manages the donations, funds the infrastructure (servers, etc), development contracts, and various fees for attending open source/free software events and shows. They also hold the Haiku trademark and perform various other administrative tasks.

While currently most of the Haiku, inc members are also Haiku developers, this is not mandatory. If you are interested in helping with the administrative tasks and taking decisions about how to best use the money donated to Haiku, you can join the Haiku inc mailing list and offer help there. Visit the dedicated website at www.haiku-inc.org for more information.