Sat 15 Sep 2007
Django Sprint Day 2 (liveblogging)
Posted at 11:34 +1000 (last edited: 16 Sep 2007, 4:31)
A follow-on from yesterday's experience. The Django sprint continues.
11:15: Woke up late-ish (around 9) after finally getting to sleep last night. Jumped on #django-sprint about an hour ago and read through an enormous list of changes. Looks like some good stuff has happened overnight.
I see that Jacob has worked oni making our HttpResponse class have better (i.e. case-insensitive) header support. Slightly backwards incompatible, but it shouldn't affect most people.
Apparently logged on in the middle of a deep discussion about making file saving safer. That's a can of worms, right there. They seem to understand the need for something simple that works with the ability to extend to incredibly reliable but possibly harder to setup up for people who want that reliability. Ticket #5361 might be useful there.
Had a brief and spirited discussion with dcramer and mir about select_related behaviour and the new queryset code. I think we're all actually in violent agreement as to required behaviour and options. Small differences about what the default should be, but as long as the hard things are possible somehow (without requiring ridiculous effort), everybody should be happy. A good sense of pragmatism exists in the django community about things like this. Even those on the edges of the requirements understand that other people use it, too.
11:55: Have so far failed to achieve much beyond reading a few patches and kibitzing in some design discussions.
Middleware ordering ... we really need to solve that. Probably splitting request and response ordering is the only way to keep related bits of code together (otherwise we need two SessionMiddleware blocks, since input and output paths need to be at different points).
The Chicago group had their photo taken. I really wish I could be in a physical group for stuff like this. Working alone — well, with only electronic contact — is very restrictive sometimes. And slow.
13:35: I have still not committed a single ticket, although I have rejected a few. Lots more discussion of bigger-picture things on #django-sprint today, though, which is nice (closing tickets is nice, too, don't get me wrong).
Good discussion with rcoup about some translation stuff and making it easier, without forcing lots of people to change their work habits. Not aggravating the existing volunteers is a pretty good design goal in my book. As a result of a side gripe from that conversation, cramm seems to be working on fixing a gripe I had about the ordering of messages changing. Once he pointed to the right spot in the code, it's kind of clear why it varies from machine to machine. Yet another reason why the world will run more smoothly once I'm in charge and everybody does things my way, really.
All of this was kicked off by me examining some updated translations from some new people and trying to get them into the tree.
Gulopine and I are closing in on why ticket #2438 is failing. Mostly Gulopine; he is doing the investigation and I'm just thinking about the consequences of what he's reporting. I suspect it's actually the same problem behind #5389, surprisingly. The change that triggered #5389 is showing up a bigger problem in the app caching code. That might be the clues we need to solve it. I want to get time to look at that once I've got the translations out of the way.
14:10: Some new contributors are getting a bit twisted around by ticket states. Tickets only get marked "fixed" once they are committed. Fortunately, some of the triagers are catching this problem.
14:45: Had a bit of a conversation with lsoto about some translation display problems in Jython. One result was writing up a description of how lazy translations work in Django (warning that link may not be there forever, but it'll be around for a few months, at least). This is part of a bunch of developer internal docs we need to write up at some point.
After a bit of going around about the issue, turned out the Jython problem was just an interface issue when talking to the jdbc wrapper and easily fixed (we do it for our other database backends, too).
15:20: Forgot to mention this earlier, but the open ticket count is definitely decreasing. 871 open tickets right at the moment. Recalling that it was 1000 open tickets when I started yesterday and some more tickets have been opened since then (it's a constant battle against bug reporters, this game). Not sure if the manpower-to-closing ratio is at all effective, but the absolute number is certainly going down.
16:00: Break time. I need some air.
17:45: The Big Blue Room was nice to visit. Managed to resist the urge to spend more money in the local bookshop.
Although it came up yesterday, I wasn't sure if it was public or not, so didn't mention this: Matt Croydon and Christian Metts have put together a Django buildbot. Should be useful for a lot of people. Personally, although I try to run the tests against all the database backends regularly, some get more regular exercise than others. Partly because it takes a long time to run them all, when you throw in a few different Python versions as well. So having an automated, never-gets-tired system for periodic checks will be useful. Sometimes somebody might want something simple to work on. Working out why a test has started to fail and how to fix that is often just the thing they're after.
18:45: Well, my guess that tickets #2438 and #5389 was wildly off base. The latter was a much simpler thing. Turns out, once again, that I know nothing.
19:15: It's well know in the Python community that Fredrik Lundh is a fount of useful software and documentation. Sure enough, he's helping out the Django sprint in useful ways:
(19:11:09) *effbot_ reports timeline stats at 09:00 UTC: attachment=233, changeset=148, closedticket=222, editedticket=770, newticket=100, wiki=213, total=1686 trac changes
Tracking closed tickets and newly opened ones separately is handy. We're more productive than it looks from the gross difference.
Oh, and he's been providing some good code review help, too. So, thankyou, sir!
20:25: Contributing to an open project is a bit like eating sugary sweets. You have one patch accepted. It feels good. You start hunting around for the next one and the next one. There's always enough low-hanging fruit that anybody can chip in and write tests or docs or verify something. As maintainers, we have to remember to publically acknowledge that work from everybody — as an entry in the AUTHORS file and the commit message and so on. But that's such an easy payback for people donating their efforts.
(This random thought brought to you by yet another couple of people being happy to have their patches committed.)
22:25: Turns out that the effbot stats I referred to earlier were a little inflated due to when he picked his start moment. He recalibrated to call the "start" being subversion checkin r6129, which is about right.
(22:22:51) *effbot reports updated timeline stats at 12:15 UTC: attachment=229, changeset=154, closedticket=227, editedticket=758, newticket=87, wiki=186, total=1641 trac changes
23:40: Lots of tickets in the "ready for checkin" queue now (it hovers at around 50). They still get a good review before we commit them and not everything makes it in unchanged. Most need some small stylistic tweaks. Still, we're getting some good review done of tickets with patches in the accepted state and moving them to the checkin state.
Bit of debate resulting from ticket #5281. Turns out, after a lot of back and forth and some clear thinking (poking holes in my claimed solutions) by Fredrik, that if you set
request.encoding = 'iso-8859-1'
on an HttpRequest instance, the input data will not be converted. This relies on some liberal handling of technically invalid data by the iso-8859-1 codec, but that's the way it works. So we're fine. I'll document that tomorrow for anybody wanting to pass through opaque data and use it via request.GET and friends.
00:57: (Okay, it's the next day already, but I'll keep updating this page, since it's the same session.)
I seem to have convinced somebody to take on the task of reorganising i18n.txt into something a bit more structured for the two types of readers (developers and translators). I've been wanting to do that for ages (rewrite it, not necessarily convince somebody else), but the Tom Sawyer approach seems to have worked in my favour this time.
04:10: For reasons passing all understanding (I forgot to go to bed), I'm still up and at it. Mostly committing easy fixes.
Somebody's working on fixing the whole request path problem, getting SCRIPT_NAME set correctly and URL processing; doing the whole thing. The patch I just reviewed looked very close to right and apparently Jacob helped with the early design, so it should be pretty solid. That's the big item we were missing for full WSGI compliance.
04:30: Game over. I'm stuffed.
Topics: software/django