Wednesday, December 19, 2007

The future of Twisted releases

Early in 2007 the other Twisted developers in Cambridge and I had a meeting about what we should do about Twisted releases. Things had been a bit chaotic since the split of Twisted into multiple components, and releases were still done on an irrelegular basis.

At the meeting we decided that a time-based release would be ideal. Given that, we would move to a time-based versioning scheme somewhat similar to Ubuntu's; the next release will be Twisted 8.0, which is the first release in 2008. That is, the version numbers will be (year - 2000) point (incremental per-year number starting at 0) point (patch level, if any, starting at 0).

We also discussed our deprecation policy, which we still haven't finished documenting, and decided to make it explicitly time-based as well. An API that is to be deprecated will be marked as such and will be supported for N months or years before being a candidate for deletion. We still need to come up with a convention for how the deprecation is presented to the user, and what information the deprecation message will contain, not to mention the value of N.

But none of these changes were possible; releasing was too tedious a process, fraught with numerous hiccups and changes to the procedure on every release. It would be extremely stressful to try to do this with any rapid regularity, leaving the release manager an insane fool constantly muttering about tarballs and web servers.

So while we knew we needed to switch to a more automated release system, the project had stalled before it even got on its feet. Fortunately, Jonathan Lange visited last month and "inspired" us to organize this project. We sat in the board room with a whiteboard and listed everything that needed done in order for regular releases to be possible. Since then, progress has been slow but steady; at least once a week someone is committing changes towards these goals (thank you, therve).

But we need some more help. If you know how to write software test-first, then please help out. Come join #twisted or contact me to see how you can help. Hopefully 2008 will see many Twisted releases.

Monday, December 10, 2007

Twisted BuildBot Upgrade

I updated Twisted's buildbot installation to 0.7.6 a few days ago. This after investigating setting up a buildbot for the PyPy project. Since I had a chance to look at 0.7.6 in a fresh environment for PyPy, I saw enough that it looked like an upgrade for Twisted would be safe. It was, more or less. There are still some problems (certain actions cause slaves to become lost or hung, the permissions aren't fine-grained enough, and there are some strange problems reporting history which I don't fully understand, some links are generated wrong). However, the new HTML status views which are available in 0.7.6 may be worth this. After I got the basics working, I exploded the "one box per builder" view into this one. This is approaching the view we've wanted for a long time, and it only took about an hour of hacking to accomplish it (unfortunately the code is all untested, so it's basically garbage, but it'll serve for now I suppose).

An improvement which would be nice is to have builds aligned vertically so that each column represents a particular build across all the builders. It would also be nice if the default view only included trunk views, and if it were easier to adjust the number of columns, and if there were more useful links in the boxes, and if the "current status" area had a bit more information, and if the builder names linked to the builder information pages.

However, it's progress.