Roughly a week ago I joined Julian, Muharem and Michael, working on the Soyuz component of Launchpad. For now I’ve been working on easy Soyuz bugs, as a way of becoming more familiar with the internals. I’m working from home but I had the chance to hang out with some of the other Launchpad developers, including the full Soyuz team, at UDS Lucid in Dallas.
Launchpad is different from most other FOSS projects I have worked on so far. Some things I noticed during my first week:
The codebase is big and well tied together. I don’t think I’ve ever used grep and ctags as often as I have in the last week. Fortunately, the directory structure makes it relatively easy to predict where to look for things.
Reviews are really quick - no long round-trips between author and reviewer trying to get a branch landed. This is a really really great thing.
It’s easy to find somebody familiar with a particular piece of code and it doesn’t take long to get an answer when you ask questions. I’m still getting used to this - I tend to ask questions sporadically because I have gotten used to having to wait a couple of days for an answer that’s actually useful.
Setting up the development environment takes some time. Or perhaps I’m spoiled by Bazaar where “bzr branch lp:bzr bzr && ./bzr/bzr selftest” is all you need to start hacking. And it seems like karmic is the only platform on which things work - I tried with Debian Sid and Lucid as well, but things broke in strange and unusual ways.
The test suite is heavy and takes long to start up, something that makes proper TDD too hard. I also managed to run into some unexplainable problems where the librarian wouldn’t shut down on one of my systems. Since there is only one instance of the database it is not really possible to run multiple instances of the testsuite at the same time unless you use chroots or something like that - this makes it hard to work on multiple branches at the same time, something which would especially be nice since the testsuite is slow (so you can run the testsuite in one branch, hack in another and alterate).
Doctests, while fast, a bit of a nuisance. Because of the setup/teardown overhead that is paid for every single test, doc tests are a lot faster than unit tests. On the other hand, pdb doesn’t play well with doc tests - it doesn’t show any context. Conceptually I also prefer small unit tests over doc tests, since they’re quicker to read, easier to understand and there’s less side-effects from previous instructions in the test that could affect the code that’s being tested.
And for those that know me well; yes, getting used to somewhat regular working hours was indeed a challenge, but I seem to have managed.Go Top