A while back, I wrote about smart autolinkifying in bugs. Last week, at the urging of Brian Murray, I built on top of the work that I’d already done. This time, it grabs all the bug links and sends to the linkchecker and, in addition to the set of invalid bugs, it also returns a set of valid bugs with bug titles! The after effect is a ‘bug 1245’ link in the body of Launchpad like in bug tracker, merge proposals, etc, where bug 1245 is a valid bug number will have its ‘title’ attribute set to the bug title.
I’ve been hacking on Launchpad for a while now and I’d like to announce some of the new things I’ve added. The first 2 are in production now. The last two, however, will need a few more days to get into production.
Smart autolinkifying in bugs
As evident from the screenshot, it greys out the bug if the bug does not exit (or is private). I wrote in detail about fixing this earlier.
UTC offset along with timezone
We now go the extra mile and display the UTC offset as well to help in some play plan out meetings, etc.
Edit sprite for attachments
Long time frustration of mine. The edit URL for attachments is in a portlet on the right side, not easy to spot. Once this fix rolls out, however, it will be much more friendlier.
Better blueprints validation
Earlier, I’d just get a ‘… is already registered by another blueprint’, this fix, once rolled out, helps ease out and find that blueprint.
To repeat again, the last two fixes are not in production as of me writing this post. Perhaps by next week or the week after, it should be.
On Tuesday, I managed to land a fix for another Launchpad bug. This one probably was my first non-trivial bug fix and also older than any other bug I’ve attempted (4-digit bug!)
Earlier, during page load, Launchpad would take each bug, search if its, valid, get the title, and show tooltips. This feature was removed to reduce page load times and timeouts. Instead, anything that matches the bug pattern gets linked whether the bug is valid or not. Obviously, less friendly, but much faster. One of the days, there was a general complaint about this in #launchpad-dev and Ian Booth mentioned that its probably trivial to fix with the link checking bits he wrote for branches. I jumped in when I saw a chance to get mentored for a bug.
At UDS, I met the Launchpad folks, who encouraged contributions to Launchpad itself in a couple of sessions. I’ve tried twice before and always get stuck with the getting a virtual machine set up stage. This time, I decided that I’m going to skip that step and go ahead and install it on my lucid laptop. As soon as I got back, I looked at getting the launchpad source code.
rocketfuel-setup is a 400-line shell script that does the heavy lifting of the installation for the user. After having written such a script at work, I have huge respect for the author of this script 🙂
After installing, I looked around for a simple bug to fix and picked [bug1][bug 645825]. The bug appeared easy enough to fix and I had a fix ready in a few minutes. I proposed a merge and was told that it needs work. It needs test cases! Another day I spend with poolie, jml, and gmband a few hours of learning to write test cases for Launchpad. Gmb and I used etherpad to collaboratively write the test and I’ll be honest, that was great fun and very productive. Multiple tries and we finally got it right and he landed it in ec2 for the entire set of tests to run. The tests failed.
I quickly popped by #launchpad-dev and wgrant and mwhudson helped me fix and wgrant landed it into ec2 for me. It passed and I did a qa on qastaging.launchpad.net! I’ll be honest that it was an extremely proud moment. This kind of made me want to fix another bug and I found bug 203478. This was something that did irk me before UDS. This time, [deryck][deryck] helped me with writing the test cases correctly first, watching it fail, fixing the bug, and then watch the test succeed. Did something hugely silly this time. I was running the test in a new branch and writing code in the devel branch, which would lead to test not being found, fix not being effective and a bunch of problems. Lesson learned is to use only my branch never the devel branch.
Overall, I liked fixing LP bugs though I’ve been told that its a brave move. The Launchpad developers have been extremely friendly and welcoming for new community developers. I think I’ll take more time to figure out the more complex bugs, but its fun helping fix the ones I can.
Edit: I missed mentioning – Launchpad can’t take a patch until you’ve signed the contributor agreement.