On Tue, 17 Jun 2003, Vladimir A. Butenko wrote: > These syntax constructs just specify the syntax of UID *REFERENCES*. They do > not say anything about their *values*. It's not a client that assigns UIDs > to messages, but the server. So the syntax just says that you would have > problems accessing (or referring to) messages with negative UIDs, but it > does not [explicitly] say that the server cannot create them.
Although this argument is not invalid (and indicates something that should be explicitly stated in a revision), it is also academic. It is an historic convention in Internet protocols to stipulate restrictions and rules through the syntax; e.g. by making it impossible to represent something that is not permitted. It's somewhat like Newspeak in Orwell's novel "1984" -- a language that made it impossible to formulate politically incorrect speech, and by doing so controlling thought. > Speaking less formally, my note can be re-formulated this way: > If UIDs are 32-bit numbers, then how can I refer to the message with UID > -23? The answer would be "since UID -23 does not (can not) exist, the question is meaningless." Admittedly, this answer would not be helpful to an implementor who has to export a mail store with such a UID to IMAP. So let's try an alternative answer: "UID -23 does not (can not) exist in IMAP, so you must create some form of mapping between your mail store's system of UIDs and IMAP UIDs. The IMAP UID from the mapping must also comply with IMAP's other restrictions, such as strict ascendency. Other than some kind of one-to-one mapping, and compliance with IMAP's rules, how to do it is up to you. Good luck." > I.e. the syntax serves semantics, not vice versa. Syntax can always be > extended, preserving the compatibility with the existing semantics. In general, syntax extensions have never violated semantic assumptions that existing implementations can presume from the unextended syntax. Put another way, negative UIDs can't happen because it would break existing implementations. > All > modern mailers expect that the UIDs are strictly positive integers, and this > fact should be specified in the semantics part of the standard. The fact > that negative UIDs would have problems with the current syntax is [almost] > irrelevant. I agree with the first statement, but not the second statement. But I'm willing to moderate that with a rephrase such as "semantic rules such as no-negative-UIDs should be explicit, and not derived implicitly from the syntax." -- Mark -- http://staff.washington.edu/mrc Science does not emerge from voting, party politics, or public debate. Si vis pacem, para bellum.
