[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[MORG] Why IMAP extensions are (not) used
Arnt Gulbrandsen writes:
Curtis King writes:
I'm sure there are some more clients which use a few more extensions,
but that still means ~16 extensions we (Isode) have implemented are
not being used. Not a very good ratio. Yet, here we are planning on
adding more.
A bit of discussion of the reasons seems like a good idea. I have
opinions but it's late and I'm too tired now. I'll try to post
something during the coming week.
Here goes. I'm sure someone will tell me I'm all wrong. Go on, but
please do say something about what's right too.
I believe that IMAP extensions aren't used as much as they should be for
a combination of five reasons. I believe that all five are factors in
every case, but the weight varies widely.
Further, I believe that all five can be mitigated, in some cases quite
easily. Mitigating is not the same as eliminating, and of course
mitigating the known problems is enough to ensure takeup of a
particular new extension.
1. RFCs written with the wrong audience in mind.
Many of the RFCs don't make much effort to serve client authors or
answer their questions, such as «how should I use this?», «how should I
fall back when it isn't supported?». Some RFCs have few examples, some
have many, but «many» is not the same as «useful for a particular
audience».
(Without making a detailed survey, I'd guess that the ones with many are
fairly good for server implementers, less so for clients. Server
implementers need more text and examples about corner cases, clients
more that's related to their use cases.)
2. RFCs can be hard to find.
We don't have a list mapping from problem/benefit to the relevant
extension(s), and googling doesn't solve that problem well.
3. What if/ifnot.
Clients generally need to implement stuff both for servers that support
a given extensions, and for servers that don't. We haven't given much
thought to minimising the duplicated code paths that result, or do it
cleanly.
(I don't mean textually this time, I mean functionally.)
4. Uncertainty about compliant servers.
It's needlessly difficult for a client to find out which servers support
something, which makes it harder to test with/without a particular
extension than it should be, and also harder to know whether
implementing an extension will have a benefit in the wild.
Another aspect of this is interoperation.
5. Combinatorial behaviour.
Several non-IETF people I've spoken to complain about the number of
combinations.
The number of combinations is effectively higher than the number of
extensions, since some extensions interact in tricky ways. This strikes
me as wrong, and most of the interactions are IMO just neat-to-have.
It could be lower in practice, since a client can always do
if ( server supports a, b and c)
use all three
else
use none
We could try harder to avoid the interactions, and perhaps occasionally
call attention to the a && b && c trick. (That trick also needs
information about how many servers implement a and b but not c, etc.)
Arnt
(PS: I've tried to avoid digression in this little missive, as I think
we would otherwise get bogged down the third sentence of RFC x section
y.x, instead of why IMAP discussions aren't used as much as we'd like
and how MORG can have a good fate.)