OpenBSD Journal

Ports Hackathon 2010

Contributed by weerd on from the pesty-ports dept.

A few weeks ago, the annual ports hackathon was held again in Budapest, Hungary. The event, again organized by Robert Nagy, was a great success: much of the work has already been committed to the OpenBSD cvs repositories.

First time visitor Jacob Meuser wrote in with his take on the event:

A serenade for a medieval damsel

scene: jakemsr's house, Eugene, Oregon, USA, Oct 22, 2010:

"OK. See you in 8 days."
Door closes.
5 minutes later ..
Door opens.
"What? Didn't you have a bus to catch?"
"Yeah, missed it."

That was the scene at my house in Eugene, Oregon, Oct 22, 2010. Oregon's in the northwestern region of the United States, in case you were wondering. The bus I missed was to take me to the train station downtown, where I was to board a train that would take me to Portland, where I'd take a lightrail to the airport, where I'd get on a plane destined for Amsterdam, where I'd meet jasper@ and get on plane headed to p2k10 in Budapest, Hungary.

Geez, not even out of the neighborhood and I'm already missing connections.

Please read on for the rest of Jacob's story.

Couple this with the last hackathon related international travel experience I had and I was starting to wonder what wonderful things were in store for me.

This would be my first ports hackathon, as well as the first time I'd been outside of North America since 1992. I had been invited to ports hackathons in the past, but it never worked out. Traveling to a foreign continent for a week is kind of a big deal for me.

Well, I made it to the train on time. The train arrived in Portland on time, and I got to the airport earlier than expected. Security checks were without incident and before I knew it I was on the plane.

I had thought about this flight a lot in the last month. Occasionally a cvs commit will say something like "written over the Atlantic". Now, I certainly have no lack of projects that could use 10 straight dedicated hours, but I wanted to work on something ... special.

Porters in action, take 3 On the developers icb channel a few months earlier, I offered some suggestions for how to improve OpenBSD's mixer interface. Particularly with respect to azalia(4). This started a conversation with marco@, wherein he suggested that plugging a microphone in should automatically select the microphone as a recording source. At first I was a little hesitant. Things can always go wrong when "automation" is added. But this also reminded me that there are some codec configurations where using the external microphone requires configuring sub-devices with aucat, in addition to possibly configuring the mixer. Recording from a microphone should not be so difficult. It should be as easy as what marco@ suggested. I already had an idea how to accomplish this. It requires adding another level of connections to azalia's mixer, to control which channels the DACs and ADCs are connected to, and then code to connect the proper ADC to the proper channels when there are events on the microphone jack. By the time I landed in Amsterdam, I had a working implementation.

Porters in action, take 4 I had a couple hours in Schiphol Airport before the flight to Budapest. I was also to meet with jasper@. Seemed like a good time for a Heineken and a smoke. I ordered the beer and tried to pay the bartender. He insisted I pay him later. "Well, I'm going over to the smoking area." He replied, "OK, I'll be here. Come back, you're on camera." So I went and had a smoke. As I went back to the bar, I could see him showing a different bartender around, pointing to people in the bar. He then left. I sat at the bar and finished the beer. It really did taste better than it does in the States. I made eye contact with the bartender a couple times. I sat there for a while after I finished the beer. The original bartender was nowhere to be found. The new bartender eventually took my glass and asked if I wanted another. I said no, then she walked away, washed some glasses then took some more orders. I felt a little awkward walking away without paying, but well, I tried to pay once already and no one seemed concerned.

Not only did the Heineken taste better, it seemed a bit more potent. I made my way to the gate and heard someone say, "Jake?" It was jasper@. We still had a bit of time before the flight, and Jasper suggested getting a beer. He bought two cans of beer and we drank them at the gate and chit-chatted. I told him about my encounter at the bar. Maybe I just don't get the local customs. I mean, drinking a can of beer at the gate is something I, as an American, am not used to. He joked that I'd probably be on Netherlands Most Wanted list when I came back through after the hackathon.

The flight to Budapest was quick. Maybe I caught a nap.

We were picked up at the airport in Budapest by robert@. The ride from the airport to the hackroom was interesting. I know absolutely no Hungarian, and I had never been in Eastern Europe. Buildings over 100 years old are rare where I live. A bit of culture shock, and a bit of jet lag setting in.

Porters in action, take 1 Robert's been hosting the ports hackathon in Budapest since 2006. Organising a hackathon means arranging accommodations for attendees and a place with an Internet connection for them to hack. Conveniently, Robert arranged a hackroom in the building that hosts Budapest's Internet exchange. This building was right across the street from our hotel rooms. Plenty choices for food, coffee, snacks, etc were within a few block walk, and just a little further was a very large shopping mall. I really can't imagine a better location.

I took my bags to my hotel room and returned to the hackroom, where we waited for more developers to arrive before getting some dinner. A couple more developers arrived soon afterwards. Not much hacking was happening yet. At least for me, it had already been a rather long day of travel, and hacking. Someone suggested going for drinks.

Porters in action, final take Robert led us to a rather interesting, rather large bar. Some in the group called it the "Baby Head Bar". Apparently in past years the place was decorated with baby doll heads. It was a Friday night and the place was busy. We got drinks and headed toward the back. Eventually we found an open table and enough chairs, or at least things to sit upon, for the group.

For me, this is when p2k10 started. Hackathons are great opportunities to work together, but probably more importantly, they are opportunities to get to know the people we're working with.

Being an OpenBSD developer can be tough. As part of maintaining a high level of quality, people are scrutinising your work and pointing out things you do wrong. Sometimes even seemingly trivial things, like the name of a directory, can become an issue of debate. Or perhaps you see a problem and try to fix it and others think you're trying to solve a non-issue. If you don't know what the person criticising you even looks like, it can be even harder. Email and icb don't convey all that is speech, especially when there's little or no knowledge of the personality behind the text.

We all do this by choice; we're not paid to take criticism. There've been times I wondered whether or not being an OpenBSD developer was what I really wanted.

For me at least, if the criticism is coming from some I've shared a laugh with over a beer, it's a bit easier to take. It's just easier to talk with people I have a personal connection with.

Cake! There were several group activities during p2k10. Some nights we went to a nice restaurant, such as Spoon, which is on a boat on the Danube. We went to Sir Lancelot's on my birthday. When the performer asked for a volunteer, I was volunteered. I sang a serenade and got knighted. That must have made me hungry because I was the last one eating. Then came the birthday cakes. Awesome. Another day we went to a large spa, which had pools and saunas of varying heat. Very refreshing.

And when there weren't group activities, it wasn't hard to find things to do. After dinner one night pirofti@ asked if I wanted to go clubbing. We had actually talked about this at c2k10. Sounded like a good idea to me. sebastia@ and edd@ joined us. On the way, edd@ wondered why we kept passing up pubs. "Ah, we said club, not pub." Eventually we found a club. I hadn't been clubbing in years. It was my birthday at midnight. So much fun.

I feel like I truly made some friends at p2k10 ... I'm not so sure that would be the case if we just sat in a room for a week. Maybe I'm a little selfish, but I'm more motivated to help my friends, than someone I don't really know. I'm also more likely to pester someone to help me if they're a friend. Encouragement from a friend means a lot more than encouragement from a stranger.

What I'm getting at is that hackathons are good for OpenBSD for more than the large amount of work that gets accomplished. They help to build friendship among the developers, which helps keep us motivated and working together. While it's easy to see a list of things that were worked on and see what happened, the personal side of things is harder to grasp.

Porters in action, take 2 You might be thinking that an article this long about a ports hackathon that hasn't yet mentioned what happened in the ports tree means not much happened. Quite the contrary.

There were two things that happened in the ports tree at p2k10 that might change the way you use OpenBSD.

One is a change to the handling of README.OpenBSD files. Sometimes package will install a file name README.OpenBSD, which has information about using the package on OpenBSD. In the past these files were installed along with the package's other documentation. This meant that these files were not always easy to find. Every port that had one of these files also had to manually install the file. These files are now all automatically installed in a common directory, /usr/local/share/doc/pkg-readmes/. This change makes it both easier for the porter to provide such a file, it also makes it easier to locate these files once installed.

The other change was the addition of the /etc/rc.d system. This is a simple system for managing daemons that are installed via packages. This is still being polished, but there are some packages that do already provide rc scripts.

Of course there were lots of updates, new ports and other behind the scenes changes. The following is a brief list of what each developer worked on.

Antoine Jacoutot (ajacoutot@):

  • removed USE_X11 from the entire ports infrastructure -- building ports now requires to have X11BASE installed
  • added a MODFOO_pre-configure hook in the infrastructure so that one can use the pre-configure target in both a MODULE and a port itself
  • added a generic way to substitute the python binary version (e.g. python2.6) in the lang/python port
  • worked with robert@ and ingo@ on the new rc.d system -- my side was more on the concepts and how it should work, robert@ is the one who technically implemented it
  • created several RC scripts for daemons
  • worked on updating our VoIP gang -- ptlib, opal, h323plus, gnugk and ekiga -- everything is ready to go in but there is still a very nasty crash due to ptlib which I am still investigating
  • ported gnome-main-menu, a GNOME alternative menu and dconf, the gconf replacement
  • the regular updates: zarafa, cyrus-imapd, hplip, tesseract....
  • as usual, several GNOME and GNOME-related updates

Edd Barrett (edd@):

  • clonekeen: a commander keen clone
  • mpd-add-similar: the same says it all
  • worked more on mplayer with jake and naddy
  • more work on texlive with kili: still needs more work
  • did some gimp work on kobodeluxe for phessler
  • ported edb debugger: can't go in due to security issues :(
  • tested some GPS related bits with sebastia@

Marc Espie (espie@): Marc Espie

  • Major work on dpb
    • fixed display bugs
    • distinguish between default and empty flavors
    • rescan directory after error fix, thus picking up REVISION changes
    • rebuild packages based on changes
    • speed-up restart by scanning important ports first
    • allow hosts to be stopped without killing dpb
  • update qt to 4.7
  • helped test kobodl (normal, since I'm the one blocking the update)
  • work on rc.d: pieces for and pkg_create
  • groff and makewhatis minor fixes
  • some other minor tweaks in pkg_add
  • turned on /usr/local/share/doc/pkg-readmes, finally
  • Plus lots of useful discussions with jeremy about ruby and flavors, landry about pkg_add internals, ajacoutot/robert about rc.d, ingo about mandoc future, jakemsr about video, and other stuff I've already forgotten

Jacob Meuser (jakemsr@):

  • worked on recording source auto switching in azalia
  • imported several ladspa (linux audio developer simple plugin API) plugin ports
  • enabled support for those plugins in the hydrogen and aqualung ports
  • imported audio/lmms, a music production application
  • started porting kino, a video editor
  • helped edd with mplayer update
  • tried to help sebastia and phessler with sndio backend issues
  • continued USB cleanup

Jasper Lievisse-Adriaanse (jasper@):

  • updated arm-elf build-chain to latest versions, which added support for cortex m3 cores
  • regular updates and autumn cleaning of various ports throughout the whole tree
  • yearly gnaughty update
  • finished converting remaining perl ports to MODCPAN_EXAMPLES
  • imported vgrind from base to ports
  • spent some time debugging and fixing gobject-introspection
  • made perl a bit more functional (imported p5-IO-Lambda/p5-Sub-Lambda)
  • updated the gtk2 haskell stack
  • munin update together with sthen@
  • switched several ports to new pkg.readmes
  • teamed up with kili and cleaned all the haskell ports' installation directories to be more inline with py-, p5-, etc and prevent namespace pollution
  • added several new modifiers to strptime(3)
  • working on pkg-config files for openssl (uncommitted)
  • ported node.js (uncommitted)

Jeremy Evans (jeremy@):

  • Split WANTLIB from LIB_DEPENDS in the ruby ports
  • Added "ruby gem ext" CONFIGURE_STYLE to clean-up Makefiles for gems with C extensions
  • General cleanup in a number of ruby ports
  • Updated the lang/jruby port
  • Ability to build ruby 1.8/ruby 1.9/jruby packages from the same port directory. (recently committed)
  • Over 30 new ruby related ports. (uncommitted)

Matthias Kilian (kili@):

  • Worked on a ghostscript update (and this time i'll get to commit it), only two small bits still missing
  • Added hs-hood, a Haskell debugging tool. Actually, jasper asked me for porting hs-hat, but I got it wrong and added this instead (but hs-hat is in my queue)
  • tweaks; libraries will be installed in ${PREFIX}/lib/ghc, documentation and other bits will get a `hs-' prefix (prodded by jasper@, who also did all the plist changes in hs-ports)
  • Added a `pkgpath' field for hs-* stuff (i.e. ghc libraries not contained within the ghc package). This will allow for something like 'ghc-pkg field ghc-paths pkgpath' which then will display 'pkgpath: devel/hs-ghc-paths'
  • Worked a little bit on a (still incomplete) tool that looks for outdated Haskell ports (comparing the stuff at against the Haskell ports in our tree)

Landry Breuil (landry@):

  • imported geo/viking, graphics/mapnik and graphics/shotwell (nasty issue w/ vala:
  • fixed gtk-vnc-plugin so that it works with xulrunner 1.9
  • finally removed old and unmaintained xulrunner 1.8 (yay!) and www/minimo while here
  • converted xulrunner 1.9 to finally use
  • added debug FLAVORs to and tweaked corresponding ports so that one can build mozilla ports with debug output enabled and symbols for gdb (probably doesn't build on i386 due to low memory ulimit...), and added info how to debug mozapps to README.OpenBSD
  • committed another batch of security updates for mozilla ports (MFSA 2010-73)
  • worked on firefox 4.0b6 (for days), started work on xulrunner 2.0b6. Still doesn't run, but progress is made
  • mostly (and finally!) finished the pkg_tools integration into my pkg_mgr (, now that we have a "clean" perl api with pkg_tools... a new version should be ready for testing soon
  • and of course enjoyed spas, beers and etterem's with my fellow devs !

Mike Erdely (merdely@):

  • Bacula expects that the tape changer driver remembers which slot the tape came from. I spent the early part of the week thinking of the best way to work around this and then started writing the script. The script is getting there and I hope to finish it this week or next
  • Bacula changed its license from GPL to AGPL ( Discussed with sthen@ about keeping sysutils/bacula at the current version and when a significant update is released, creating a bacula-agpl port moving forward. This probably needs more discussion
  • Imported a couple pecl ports to be used with horde
  • Updated swish-e and its perl counterpart
  • Updated p5-Net-Server
  • Worked on an update for qwt (waiting on an ok)
  • Worked on a pcitweak port, but didn't make much progress

Christian Weisgerber (naddy@):

  • fixed ports tree fallout, i.e. build errors, from the USE_GROFF changes
  • did a bulk build with gmake 3.82 and fixed some of the obvious problems. More work remains, but there is currently no pressing reason to update gmake, so we may wait for upstream to do some of the lifting
  • worked on adding support for alpha to lang/gcc/4.2 (has recently been committed)
  • as usual, committed a number of minor updates (e.g. xloadimage, gtar) and fixes (e.g. gettext)
  • assisted edd@ with some aspects of the mplayer update

Peter Hessler (phessler@):

  • new port: Scorched 3D (scorched earth clone)
  • new port: foobillard (billards game)
  • some scattered fixes for sparc builds
  • fix in libraw to be nicer to use when using pkg-config
  • update to allegro and opensonic
  • update for kobodeluxe
  • update for alephone

Paul Irofti (pirofti@):

  • worked with steven@ on updating octave and making sure everything is working properly (still WIP)
  • worked on linux emul in order to be able to
    • get the new version of Opera working (its too bad they also have a bug in this new release which makes it almost impossible to fix without a fedora_base update)
    • getting a new version of userland linux working for the kernel emul bits. This is still WIP, waiting for feedback from guenther@ about some threads issues
  • updated a bunch of math ports
  • made a newer version of onioncat work with OpenBSD for all you paranoid folks out there
  • started work on adding an extra clock for the loongson in order to be able to do CPU frequency scaling

Robert Nagy (robert@):

  • updated openoffice to the latest release candidate of 3.3 and cleaned up the port
  • started working on LibreOffice port (it got commited in the meantime and all the patches are pushed to the upstream repo.)
  • Worked on an rc.d system with Antoine and Ingo to support a *basic* well designed system for starting, stopping, restarting and reloading services. We are still working on this, but some stuff has been swithed to it already
  • spent some time on making the event run smoothly :)

Ingo Schwarze (schwarze@):

  • hacking on src/usr.bin/mandoc, particularly for ports related issues
    • Support .so (roff source file inclusion), needed by Xenocara and quite a few ports
    • Support .de (roff macro definition)
    • downgrade many FATAL errors to plain ERRORs
    • downgrade many ERRORs to WARNINGs
    • fix formatting of man(7) font-alternating blocks in literal mode
    • fix formatting of .IP in literal mode (not yet committed)
    • start fixing formatting of .TP in literal mode (not yet committed)
    • fix an assertion to allow zero-width columns (e.g. in ".Os \&")
    • merge a couple of minor bugfixes from
  • Wrote new manual pages section for the ports FAQ:
  • Added millert@'s patch to change the -man default text width from 65 to 78 characters to the groff port. This helps to compare groff and mandoc output.
  • Helped robert@ & co. to polish /etc/rc.d/rc.subs
  • Discussed a few makewhatis(8) issues with espie@, but it was really espie@ who did all the work
  • Answered a lot of questions regarding various manuals, why they crashed mandoc, threw errors, produced badly looking output, confused makewhatis(8), and whether mandoc could be made to cope
  • A proper hackathon ought to be combined with at least a bit of hiking, if there is a chance. Thus, on Saturday after the hackathon, I climbed Janos-hegy (527m), Svabhegy, Szechenyi-hegy, Gellert-hegy and the palace hill in Buda, starting from our hotel (100m) in the Ujlipotvaros quarter of Pest (total distance: 25km)

Sebastian Reitenbach (sebastia@):

  • updated the gnustep module, fixed some gnustep related ports, and got a bunch of new gnustep related ports imported
  • prepared updated for net/jabberd, (ported some dependencies, but the jabberd port still needs some work)
  • imported cad/xtrkcad a model railroad layout designer
  • worked on the groupware SOGo, which still needs some work/testing
  • bugged jakemsr@ to help me porting audio/snack to sndio ;)
  • started work on updating misc/gpsd, and importing geo/qlandkartegt

Stephan Rickauer (stephan@):

  • pretty busy working on my Drupal modules todo list. Since I use Drupal a lot for various web related services, I wanted to at least add all those modules and themes that I have to use on those sites. Even though it's just web stuff, it's nice to have all updates handled by OpenBSD's pkg tools instead of fetching/untaring/installing everything manually
  • worked on an x11/xfe update
  • a mediawiki maintenance release
  • some Perl module updates
  • started on the metasploit port

Steven Mestdagh (steven@):

  • imported keepassx (password management), ns4 (config management tool), yersinia (test attacks on different network protocols)
  • worked on updating octave together with pirofti@, unfortunately it does not fully work yet so we need to improve it still before it can go in
  • updated/improved some other math ports (freemat, mathomatic, etc.)
  • reorganised the fortran module a bit and provide gfortran support
  • libtool improvements, reducing the amount of ports that still require gnu libtool to about 10, this amount will now probably stay as it is as it means our libtool can build more than 99% of ports that need it

Stuart Henderson (sthen@):

  • update various ports, notably net/munin (done with Jasper) which took quite a while as many of the system monitoring plugins need adapting to work with OpenBSD
  • imported www/rackmonkey, a web-based database to keep track of racks of equipment
  • move many ports and the module to the new-style simpler LIB_DEPENDS format
  • adjust ports using kvm_getprocs() to the kvm_getproc2() API so they can still work after some forthcoming kernel changes
  • discuss various things affecting many ports with the other people working in those areas (e.g. rc.d scripts, pkg-readmes, groff and mandoc)

Thanks, Jacob, for the interesting write-up. And thanks to all attendees for your great work on the OpenBSD ports tree!

(Comments are closed)

  1. By Will Backman (bitgeist) on

    Thank you for taking the time to write up a great summary of the hackathon.

  2. By Thomas Pfaff (tpfaff) on

    Alternative scene:

    "OK. See you in 8 days."
    Door closes.
    5 minutes later ..
    Door opens.
    "What? Didn't you have a bus to catch?"
    "Yeah, missed it. And why the hell is there a naked man in our house?"'

    Thanks for the article! ;-)

  3. By brynet (Brynet) on

    Knights of the not so round table. :-)


Copyright © - Daniel Hartmeier. All rights reserved. Articles and comments are copyright their respective authors, submission implies license to publish on this web site. Contents of the archive prior to as well as images and HTML templates were copied from the fabulous original with Jose's and Jim's kind permission. This journal runs as CGI with httpd(8) on OpenBSD, the source code is BSD licensed. undeadly \Un*dead"ly\, a. Not subject to death; immortal. [Obs.]