I was honored to attend C2K10, my first hack-a-thon, and meet so many of the developers. The opportunity to intensely focus on OpenBSD for a week was liberating, educational, and surprisingly refreshing. By day I manage three IT teams and don’t get to do hands on work, so I’m limited to evenings at home to stay sharp and contribute to OpenBSD.
I actively seek out people who are smarter, faster, better at {fill in the blank} because I love to learn and enjoy a challenge. I found them at C2K10. When I got to the hack room I was overwhelmed by the conversations taking place and I had the sudden feeling that I was not worthy. I was the kid who found the marble in the oatmeal and got to drink from the fire hose.
Later that day I was talking with a couple of developers over dinner and a beer. I asked what they were working on and was impressed by their responses. When the question was returned to me, I sheepishly replied “just ports”. My answer was greeted with “I don’t know anything about ports” and “ports make OpenBSD more useful to more people”. Perhaps I was worthy.
I put a lot of thought into what I wanted to work on at the hack-a-thon but my ambitions far exceeded the time available. I did complete updates to some simple ports that I maintain, updated Varnish and hooked it to the build after substantial testing, and then started on Haskell libraries I wanted to import. I needed the latest GHC compiler and it wasn’t available in snapshots yet. Attempting to build GHC on my laptop wasted half of a day with no end in sight given all the other ports required for building it. The Haskell ports would have to wait. So I regrouped, tested and ok’d a couple of updates from other porters, and then dug into Perl modules.
I had previously made two runs at updating the Perl based Catalyst Framework in the ports tree. Neither attempt was successful due to lack of maintainer responses, great chains of dependencies, lack of confidence to commit where I should have, not knowing which porters to bother for OKs, etc. Fortunately, I was sitting next to robert@ and ajacoutot@ who provided invaluable perspective and advice on being a porter. Other helpful tips came from ckuethe@, eric@, and jakemsr@ who also shared the table that week.
The Catalyst Framework consists of several ports. Each of them pulls long chains of dependent Perl modules behind them making updates onerous. I don’t get to update a port and check it off my list. Instead, I have to uplift an entire chain of ports and sometimes adjacent ports too.
My last attempt updating Catalyst relied on brute force to identify the chains of dependent ports. I updated devel/catalyst and then targeted dependencies that prevented a successful build. I worked recursively through those dependencies, repeating the process in a top down fashion until I had a long chain of updates. While this worked, it seemed suboptimal and left me adrift in a sea of M’s. ...