Yesterday, The Lunduke Hour, hosted by Bryan Lunduke (perhaps most famous for his “Linux Sucks” presentations), had me on as a guest to talk about the state of Haiku and where we go from here:
Bryan’s been a longtime fan of Haiku (some of the old-timers might remember when he reviewed R1a3 on the Linux Action Show…), and it was a lot of fun to chat with him for an hour about what’s been going on over the past few years, and where things are headed.
Hello, world! If you’re reading this message, that means you’re looking at the new Haiku website. This has been in the works for a long time, but at last it’s finally here.
Hello everybody (and goodbye, since this is the end of my contract)!
The week has gone very smoothly for me. Dependencies are resolved, builds are created, secondary architectures are handled, and builders can now be updated on-demand by administrators. There probably are a few bugs left to be ironed out, but the bulk of the work is done, and I will have enough time to iron out the last kinks.
A lot has happened since last week. The DHCP bug that has been plaguing Haiku for over a month is now fixed, some various other issues have been cleared up, and the Kitchen has a lot of edge-cases fixed and properly parses dependencies.
A lot has happened since my last report. I decided to spend some time working on stabilizing both Haiku and the packaging system, and so I am closer to having full builds & HPKR generation, but I’m not quite there yet.
It’s been two weeks since my last report, as I wasn’t working full-time these past two due to some outside appointments and other conflicts. I’ll be back to working full-time next week. Despite this, I managed to make a lot of progress on a number of fronts.
After I took last week off for vacation, this week went very well. HaikuPorts has been migrated to GitHub, many corner cases related to HaikuPorter have been resolved, and most of the infrastructure issues that were directly related to setting up the package build server are gone. HaikuPorts has, for the last few years, been living on Bitbucket. However, Bitbucket's integration with other services (e.g. Travis CI), overall interface, and code review system isn't as good as GitHub's.
As mentioned in last week's report, I planned to work on integration with IRC to allow the developers to get real-time updates on what the builder was doing, finishing the documentation, and then working on the logic that actually builds packages. The first two of the three are pretty much done, and the last one I did get started on. So this week went pretty well. The IRC integration that I wrote is pretty simple right now.
This week was just as productive as last week. I did start on the builds logic, which now can run "builds" (lists of commands) in sequential order. I also improved the builder management system, and created documentation for pretty much everything. Let's start with the builds logic: At the end of last week, there was none of it at all. Implementing that took a good portion of this week, as it involved adding support for running arbitrary commands on the builders, managing a sequential list of commands to run, starting a build only when a builder goes online and is fit to run the build, storing the currently running command, start time, elapsed time, build status (pending, running, failed, succeeded), command output, and displaying all of this information in the web interface.
This week was rather slow: I've logged only 18 hours of contract time this week. I expected this, partly because I didn't expect to do any work on Monday (as mentioned in my first blog post) and partly because I still had some coursework to finish up the semester with. But despite that, I got a ton of stuff done, and the foundations for the following weeks' work are well laid.
Anyone following the "haiku-inc" ML will have noticed that I've been approved to spend 240 hours (around 6 weeks of full-time work) on Haiku's packaging infrastructure. This mostly means I'll be working on the package building system, which will manage the "HaikuPorts" package repository, ensuring it's up-to-date across architectures (and later, across both nightly & release builds). As those who have been paying close attention to IRC may already know, Alexander already has created a prototype server & client in Ruby.
tracker_layout — the (semi)famous branch that rewrites Tracker to use the Layout Kit — has been merged. This means that Tracker is no longer using the old B_FOLLOW_*-based system for resizing views, which makes for much cleaner code that's easier to read and understand. Alexandre Deckner initially did this in 2012, but due to refactors and other changes to Tracker since then, as well as some compatibility issues with his method, it wasn't possible to merge his code.