On Fri, 2003-02-21 at 04:19, Mark Crispin wrote: > On Thu, 21 Feb 2003, Timo Sirainen wrote: > > I can think of only two reasons why clients still need to bother > > rememebering sequence numbers instead of using only UIDs: untagged FETCH > > replies updating flags and EXPUNGE replies. > > There are many things that you can do with sequence numbers that you can > not do with UIDs unless you have the entire UID map downloaded.
I can think of on-demand loading while scrolling, but what else? Even that could be done after "UID FETCH 1:* UID" which shouldn't be too slow. > Invariably, I have found that clients which use UIDs exclusively are > incredibly poorly-written and poorly-designed. They issue unnecessary > IMAP protocol transactions and do many other silly behaviors which > wouldn't happen if they used sequence numbers. I don't see how using UIDs would make the client worse, unless you again mean the lack of on-demand loading. > I don't see how adding a bunch of extensions to EXPUNGE (which would have > to be negotiated, not to mention considering compatibility with servers > that don't have the extensions) will help poorly-written UID-only clients > work any better. Most of these clients already have downloaded the entire > UID map, so it isn't as if they can't figure it out for themselves. Actually I was thinking on extending this to server side too. There's some optimizations that can be done in both client and server side if sequences are never seen. I'd especially like to send UIDEXPUNGE replies to client whenever I want. > I oppose the idea of making an already excessively-complex protocol more > complicated to further enable poorly-designed clients. In fact, I have > come to think that the IMAP implementation of UIDs was a mistake, and that > we should have just done what POP3 does for UIDs. The current way of only half supporting UIDs is indeed annoying. If they were fully supported, at least client could then choose which one fits it better. Oh, and I've been working a bit with Evolution's IMAP rewrite. Any suggestions how to make it well designed this time? My current goal is mostly just to make it able to handle all server replies whenever server sends them, not just when client asked for it.