[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

LC results for draft-melnikov-imap-expunged and how to move forward




Let me try to summarize the results of IETF LC and suggest some changes and how to move forward.

1). LC comments.

Mark is concerned about benefits versa costs of the extension. Mark has proposed an alternative mechanism for quick mailbox resynchronization to which Philip replied that we already decided against any server side mechanism in the Lemonade WG. Dave and Arnt are largely in favor of the extension (Dave: "my alternative proposal is not easier to implement" + "we need this for QRESYNC (draft-ietf-lemonade-reconnect-client-01.txt)", Arnt: some issues need to be clarified + some protocol changes required)

Several people got confused by how much extra state needs to be stored on the server (Fact: as of -01, *no* extra state needs to be stored on the server. But see extra comments below). This suggests that some clarifications are needed in this area.

Is this largely correct?

2). What to do next.

If I interpreted overall comments correctly, I think there is some support for the proposed extension. However there are some ambiguities in the document that need to be clarified. Below I am listing some changes that I am planning to do. Hopefully after doing the changes I can convince some people in "confused" and "undecided" groups to support the document.

3). Detailed technical changes that needs to be done in next revision.

a). Dave/Arnt/Pete Resnick: add a SELECT/EXAMINE parameter that similar to the current FETCH parameter
(Pete prefers REPORTEXPUNGES to be on SELECT instead of FETCH.)

Question: do we want to reference ENABLE command, now that Arnt published a draft?

b). Arnt requested clarification on how long the switch from the EXPUNGE response to the EXPUNGED response lasts. I've clarified that this change lasts till the connection is closed.

c). Randy: change the new untagged response to something more unique. Suggestions are TOMBSTONE (Randy) or VANISHED (me). I like VANISHED, as it is 1 letter shorter ;-).

d). Several people got confused by how much extra server state needs to be stored and under what circumstances.

-00 required to store a modsequence for each expunged message. This can potentially result in potentially very long list, with no upper limit on its length.
-01 was changed to require absolutely no extra state on the server.

Arnt and Dave have convinced me that what described in -01 can consume too much bandwidth. And I agree with Mark and Peter Coates that holding expunged data indefinitely (as in -00) is not a good idea.

So, I would suggest to do the following changes:
Allow implementations to either store modsequences for expunged messages (+ allow there expiration) or not store any extra state. The latter would be compliant, but would be clearly marked as "poor implementation". Because this would not make any difference from protocol point of view (apart from wasting bandwidth), there is no reason to completely disallow such implementations. For the former case I would add an extra section describing why holding expunged data indefinitely is a bad thing. This section would also recommend how to properly "expire" old expunged records.

e). The change d). would mean that the EXPUNGED extension would depend on CONDSTORE. I am thinking that the updated EXPUNGED extension should just be folded into the QRESYNC extension. Comments?

Is there any desire to do a separate "ENABLE EXPUNGED" extension, the sole purpose of which would be to make servers send EXPUNGED responses instead of EXPUNGE responses?