Now that libshout 2.0 and IceS 0.3 are finally out the door, it's time to unwind from all that icecast hacking. And the best way to do that is, of course, to hack on mutt.
I've fixed a couple of long standing IMAP bugs concerning multiple connections, and have begun a project I've wanted to start for ages: I'm building a mailbox driver API. The idea is to sanitize the driver-specific interfaces and remove any #ifdef DRIVER code into the driver. There's a lot of that in the current monolith. Once it's done, the code will be much easier to maintain for everyone. And it should make it possible to drop in additional drivers (say, NNTP) with no fuss. Finally they could be made dynamically linkable, which is nice for package maintainers.
My approach is to move the code over piecemeal, instead of dropping off a 200k chunk of new code or a brand new mutt. This will make it easier to track the upstream CVS, easier to verify that each piece is working, easier for other developers to understand, and more likely that the API will make it into the mutt core. Plus, there's the instant gratification factor.
So far I've done two functions - one that tells whether the driver can open a given mailbox (path or URL), and one that opens the mailbox. It's going pretty smoothly right now, but of course I'm attacking the easier parts first. I know it'll get hairy a bit later.
I'm doing more Canadian permanent residence paperwork tonight.