I wanted to be the first in something, so I just implemented support for the QRESYNC capability in Tinymail. Of course has Dave implemented this a few weeks ago in Polymer too (aaarrg!!). As usual to have an experimental E-mail client to test the capability with their Isode IMAP server.
Anyway, this makes Tinymail implement IDLE, BINARY, CONDSTORE and QRESYNC. These are the ones related to Lemonade.
Next on my list is of course NOTIFY, and pick that over IDLE where possible. NOTIFY is interesting because it gives more information like when a mailbox (a folder) gets created and when it gets deleted. It also tells me about new messages in folders that are not currently selected. In contrast with that is IDLE rather limited.
I still need to test this support for QRESYNC a bit, so it’s not yet committed in trunk. The patch is available on the mailinglist if you want to help testing (and if you can find an IMAP server that already offers the QRESYNC capability). I obviously hope more IMAP server developers will implement QRESYNC. I think it’s a better approach than CONDSTORE. I’ll explain.
QRESYNC is interesting because it avoids having to do roundtrips to synchronize your current folder. Roundtrips are far more expensive (in terms of speed) than most people think while they are using GPRS. The nice thing about not doing roundtrips is that often the combined and atomic reply just fits in one tcp/ip packet. So with QRESYNC you get very fast and cheap folder synchronizations over GPRS.
That’s exactly what we want on our phones, right?
Regretfully few IMAP servers in the field have this already (if any, QRESYNC is still in draft state). But especially if you provide your users with an E-mail service combined with the mobile device that you sold them, you can give them this little bit of extra that many other far more expensive solutions don’t have. It’s yet another reason why to go for Tinymail and IMAP4 Lemonade. You can trust me on it that I’ll create more reasons like this in future.
Does any kind of standard or extension exist for server-side search folders?
ESEARCH, SEARCH in combination with NOTIFY? With a serverside search folder the hard part is getting notified about only those things that match the query, rather than everything in all the folders used in the search.
Some of the pieces of that puzzle are being defined just now, so it’s unlikely that you’ll find an IMAP server and a client that will correctly implement all so that it can have a vfolder, or search folder, strictly at the IMAP server.
I keep meaning to leave you a note after each entry you write about TinyMail, and I’m currently in my outreach to other free software projects mode :) You’ve probably not come across the Bongo Project before (http://www.bongo-project.org/), but we’re basically a fork of Hula (which I’m sure you did hear of ;)
One thing we have in our bugzilla is to add support for the lemonade profile for imap – I’d like to see our imap support fill in many of these new features to make mobile e-mail much more usable. Ideally we’d like to support the full profile eventually, but are QRESYNC and NOTIFY decent places to start from your point of view?
Yes, but I’d start with IDLE and CONDSTORE. The ones you want to implement are (in order):
o. ESEARCH (mobile clients really need this for getting an accurate unread count, STATUS’s Unseen is not enough)
o. IDLE
o. CONDSTORE
o. QRESYNC
o. ENABLE
o. NOTIFY
o. BINARY
You’ll need CONDSTORE before you can implement QRESYNC and IDLE is so common nowadays that well, without it you’d have some serious competition from even the IMAP servers I wouldn’t recommend :)
Feel free to set me up a test account with a Bongo server. Or if you need a Xen virtual machine (soon to be migrated to a VMWare) where you can host this, let me know then I’ll set you one up.
And of course, once you are finished with that: CATENATE and start looking at the CONVERT draft. Maybe sync with the folks at Isode. Although they are building a competing product, they too want as much IMAP servers to start supporting the Lemonade group of features as possible (if it’s good for IMAP, it’s good for (the sales of) their product too).
I’m sure they’ll give you a lot of advises.
(Isode hat on): I have to admit we prefer helping client authors than competitors, but we’re certainly interested in having more server implementations too, and will help (especially with our drafts/RFCs). I’d suggest joining the IETF Lemonade list as a first step, though, and you’ll want to get yourselves listed at http://www.lemonadeformobiles.com/, too. And if you do have a test server I can play with, I’ll point Polymer at it, and give you a horrendously long buglist. ;-)
(Personal): For server-side search folders, there were basically two options looked at by the Lemonade WG. One is VFOLDER, which provides a thing that looks like a mailbox – so a direct server equivalent to the client-side search folder.
The other is CONTEXT, which provides dynamically updated search results – so much more akin to a viewing filter. You can build client-side search folders with CONTEXT, but only across one mailbox.
CONTEXT is in the next-gen Lemonade profile. Most server implementors found the notion of producing a server-side, server-wide search mailbox extremely difficult. Only those with a ACID SQL backend even attempted the idea. FWIW, I’m biased, since I designed CONTEXT, but it does allow for sorted views as well as mere filtering.
Thanks to both of you for your helpful comments – that’s great :) Bongo still has a few ways to go before Isode might consider it a competitor (if ever), but we have an IMAP implementation which is pretty different to other servers (it’s a front-end to more complex store, which has both text-based and SQL-based indexes), so it will be very interesting to see how easy (or not) it ends up being implementing some of this stuff.
We’re in the process of producing an rPath appliance running Bongo, so at some point I’ll come knocking on both your doors armed with VMs, Live CDs and a terribly buggy attempt at a lemonade implementation :)
Thanks again for both your input.
I don’t mean just doing the search on the server side. I mean defining the search criteria on the server side and having the folder appear more or less like a standard IMAP folder. I want client independence and less data stored on the client.