PulkoMandy's blog

Haiku monthly activity report - 02/2015

Blog post by PulkoMandy on Mon, 2015-03-02 09:38

Hello there!

My contract has ended, but for now I have some free time to write a report every month about the ongoing development efforts from the Haiku team. I think this is a nice way to better see the work done, more so than looking at the roadmap progress bars which tend to not move much.

This month there were 91 commits (hrev48757-hrev48848). Let's see what's inside those.

preferences refactor

During my contract I got the new network preflet working well enough to replace the previous one. This is the 3rd rewrite of the network preferences since the Haiku project started. While the new preflet is a bit more extensible than the previous iteration, the code architecture isn't that great (mainly because the user interface evolved quite a bit since the initial design). Axel (axeld) is working on refactoring the code to work in a simpler and more reliable way.

The goal is to have a more complete network preferences panel, allowing to configure several interfaces (wired, wireless, and later PPP), as well as services (ssh, ftp, dns). Then, configuration presets can be stored as profiles, so you can setup your computer easily to work in several different places.

In the area of preference panels, there was also a fix by Josef Gadjusek (GCI contestant) as a follow-up to his work migrating it from Santa's Gift Bag to the new column list view API.

new architectures and tests

Alexander (kallisti5) is working on several things in this area: updated packages for LLVM and Clang, cleanup and fixes of our tests to work with these compilers and on 64-bit platforms.

mmu_man did some work to support the Efika MX board.

usb midi driver fixes

Adrien (PulkoMandy) fixed missing checks in the usb_midi driver, fixing kernel panics with some usb midi devices and making those useable in Haiku.

Fixes in the Interface Kit

From several authors:

  • string_for_rate will now make sure there are enough significative digits in the value shown. Before this change anything between 1 and 1.999 Mbps would show just "1", now it will use Kbps until 10 Mbps is reached.
  • BTextView now handles the B_FONT_FACE mask properly, so it is possible to change only the typeface. For example, you can ask to "use the same font, but make it bold".
  • BToolBar got several fixes and is now used in Tracker, as well as ShowImage. It will one day be made part of the public API.
  • BView::RemoveSelf would crash if readding the view to a window later on (axeld)
  • It is now possible (in BMenuPrivate) to change the layout of a BMenu after it is created. Deskbar uses this to switch between horizontal and vertical modes (before it would have to rebuild the whole menu, which had some bugs).
  • Drawing problem with rounded corner buttons (skipp_osx). Visible only in Keymap, since other apps don't use this a lot

Video drivers

  • The VESA driver doesn't reset the video mode if the requested one is the same as the current one, when switching workspaces for example (axeld).
  • intel_extreme handles the vertical blank interrupt on Ivy Bridge and later devices, making GLTeapot and other apps relying on vertical sync to work (and without tearing).


Aside from the already mentionned packages for LLVM and clang, there are several new packages:

  • lighttpd (PulkoMandy), used for WebKit HTTP tests
  • coreutils (korli), replacing the built-in Haiku version
  • BePodder, Photograbber, BeFAR (diver), classical and useful BeOS/Haiku native apps
  • bookmarkconverter (humdinger), converts bookmarks between Haiku and "netscape" standard format (for Qupzilla and other browsers)
  • sdl2, sdl2_image, sdl2_ttf (PulkoMandy), to be used by games as they migrate from SDL 1.2
  • gdb (waddlesplash), replacing the in-tree version. The gdb debugger isn't used much in Haiku, as the native Debugger is much better.
  • xmlto (waddlesplash), a new way to handle the generation of the HIG (Haiku Interface Guidelines) from the docbook sources.
  • patch, bonnie++, ocaml, unzip

Network kit

  • file and data requests now send a fake HeadersReceived notification. This makes them behave more like HTTP requests, allowing for simplifications in code allowing use of both HTTP and file or data requests, mainly WebKit for now (PulkoMandy)
  • getifaddrs is moved back to libbnetapi for now. The goal is to have it in libnetwork, but it needs to be rewritten to not depend on libbnetapi features first. getifaddrs is a BSD function (not POSIX standard), but is the only reasonably portable way to enumerate network interfaces and addresses. It is needed to replace libbind with netresolv (axeld)
  • Fixed behavior of HTTP redirects to more closely match what Internet Explorer does, fixing problems on several websites including github.
  • Some fixes to the POP mail fetcher (jua). There is ongoing work since Haiku alpha 3 to get the Mail kit fully working.
  • Deskbar ans Tracker

    The code for Deskbar and Tracker in Haiku comes from the OpenTracker project, which itself is directly derived from the original BeOS code after it was released under an open source license by Be, inc. The code is showing its age and wasn't touched much over the years, but this is changing now. Waddlesplash converted Tracker to use the layout kit, making it much easier to change the code to add more features.

    • Deskbar does not show an empty menu anymore (Jessicah)
    • Several style fixes, cleanups, refactors and improvements to Deskbar (skipp_osx)
    • Tracker status window now uses vector icons (waddlesplash)

    Apps and demos

    Waddlesplash did some cleanup of Pulse, DiskUsage and Cortex. These were adopted by Haiku but come from other developers, and the integration in our build system and coding style wasn)t always that good.

    mmlr fixed StickIt to handle multiple joysticks.

    axeld improved the formatting of window and tab titles in terminal, allowing to get rid of extra whitespace. Jackburton made Terminal properly default to VL-Gothic when it is the only monospace font (when DejaVu is missing).

    HaikuDepot reviews editor got undo/redo support (stippi). The goal here is to develop a complete rich text editor framework, which will in the long term replace BTextView.

    MIME database

    The playlist filetype now has a default icon. New MIME types are available for PBM and PGM images, as well as Jar files.

    And that's it for february.

End of contract - closing words.

Blog post by PulkoMandy on Wed, 2015-02-18 08:21


As you probably have noticed, there were no weekly report in the previous weeks. The reason for this is that my contract is currently stopped. There is currently not enough money in Haiku's treasure chest to safely continue it. So, it's time to me to get back to "real life" and a full-time job in a software development company.

First of all I want to thank everyone who made this long contract possible by donating money to Haiku. It was a great experience for me, and a lot of fun as well. I did my best to move Haiku forward towards the R1 release. Unfortunately the beta 1 still isn't there, and we currently have 57 blocking tickets. It is a small number, but only the most complex or big issues are left.

Contract weekly report #61

Blog post by PulkoMandy on Fri, 2015-01-30 09:27

Hello there!

As you may have noticed if you watch the commit list closely, my libbind work has not been merged yet. There are still some bugs to solve there, but I got sidetracked. I use BReferenceable in my DNS cache implementation to keep track of the cache entries. BReferenceable is a class used in Haiku to implement reference counted objects. In C++, the language only has very simple memory management, in the form of the new and delete operators. Objects can be allocated on the stack (they are temporary and only last as long as the function they are declared in is executing), or on the heap (for long lived objects). Objects allocated on the stack are deleted automatically when the function exits, while objects allocated on the heap must be deleted manually. This is one of the annoying parts of C++: managing the lifetime of these objects, making sure they are deleted only once, and that no one will try to use them after deletion.

Contract weekly report #60

Blog post by PulkoMandy on Fri, 2015-01-23 07:39

Hello world!

Not much commits from me this week, as I'm still working on the libbind update, and I'm also doing some work for other customers. I got netresolv to build after implementing the missing getifaddrs function in Haiku - this is a non-POSIX function, but it is available in Linux and all major BSDs. It enumerates all network addresses for all network interfaces on the system, similar to our BNetworkRoster and BNetworkInterface classes.

Contract weekly report #59

Blog post by PulkoMandy on Fri, 2015-01-16 08:11

Hello world!

I have not given any news from the Google Code-In for some time. It ends this week, and students have completed more than 400 tasks for Haiku. While this includes a lot of simple tasks (the simplest "getting started" ones involved just booting Haiku and running StyledEdit), it means the students at least got to see what Haiku is. We have a more complete set of recipes in haikuporter waiting to be packaged.

Contract weekly report #58

Blog post by PulkoMandy on Fri, 2015-01-09 08:45

Hello there, welcome to the first contract report for 2015!

This report summarizes changes done since 19 of december as I was a bit away from keyboard for the winter break. But I'm back for another year of Haiku coding!

Contract weekly report #57

Blog post by PulkoMandy on Fri, 2014-12-19 07:56
Hi! Work continues on putting Haiku in shape for the R1 release. This week I worked mostly on UI fixes to make our apps look a bit better.
Syndicate content