After a very unpleasant journey (we had a 4 hour delay because of some disfunctional oil pump in the plain) I arrived in Oslo just in time to meet a big grouop of attendees in the lobby of the Anker hotel. After dumping my stuff into my room, we went to some irish pub for food (expensive!!), cider (expensive!!!) and lots of interesting and funny chatting. A very nice fact about norwegian pubs is that they are completly smoke free.
On saturday, we all went to the linpro office where the hackathon took place. The office was great, with a nice view over Oslo, comfortable chairs, free drinks, fruits, cookies and several large and small rooms. The perfect hacking environment. After a short plenum we started hacking / discussing.
While a lot of the "discussion track" seemed very interesting, I started working on various CPANTS releated things. I tried to make the installation of ProcessCPAN easier, but basically failed, because I couldn't come up with a good way to install various assets & a database, query for some information (like db user & pwd) and store this info plus the asset base path somewhere meaningfull. Any hints on how to do this are highly welcome!.
So, after wasting an hour on that I wrote CPAN::Mini::FromList which lets you generate a fake CPAN mirror consisting only of those dist you want. This proved to be very handy for further testing of Module::CPANTS::ProcessCPAN. Speaking of which. I spend most Saturday and Sunday hacking on the internals of ProcessCPAN, which I hated. Because I knew beforehand that this was going to be painful, I never did it, even though I should have done it since half a year. But the QA hackathon was the right setting, and even though it might have been more fun to participate in the metabase discussions, I sticked to ProcessCPAN. With the result that CPANTS now works much more stable. Especially all the prereq stuff is now greatly improved and should report much better data then before.
Monday was spend by doing frontend work on Module::CPANTS::Site, and helping Gabor integrate all of the new metrics he added to Module::CPANTS::Analyse into ProcessCPAN and Site. I also watched Michael Peters presentation on Smolder, and we had some discussions on how to make Smolder more CPAN-distributable.
Adam Kennedy led a discussion on Testing Best Practices, and we were able to decide on a few things. More details on this and the other results are available at the Achievements page in the Oslo QA Hackathon 2008 wiki.
Gabor, Nadim and me stayed at Linpro until they kicked us out around 21:00. We wandered through Oslo in search for food, and finally found a Chinese restaurant where we had a small dinner. Back in the hotel, we joined the Hotel Lobby Hacking Session, where we straightend out some of the problems of the latest CPANTS run. And we had some fun with Acme::ReturnValues.
I would like to again say a very big THANK YOU to Linpro and Salve for beeing such great hosts and sponsors, to all the other sponsors who made this great and productive event possible, and especially to Vienna.pm, who sponsored my trip and hotel costs.
Whenever a piece of code needs a lot of information to be able to do meaningful work, I like to go for indirection: the module itself does not try to configure itself at installation time, but instead includes a script (eg. process-cpan-install
) that takes a bunch of switches with arguments and creates either a configuration file or a script. It will possibly be capable of prompting for missing bits, it might run some checks or set up and initialise the database, etc. Then the user installs the module and after that uses the setup program to, well, set themselves up.
That way you don’t have to play any hairy tricks at installation time and the user can also run several different configurations/installations easily.