Subject: RE: [Gen-art] gen-art review of draft-ietf-sieve-imapflags-04.txt

From: "Gray, Eric" <[email-masked]>
Date: Tue, 9 May 2006 16:34:40 -0400

Alexey, 

	The short answer is that the explanations below clarify
things greatly.  Please see below for some additional comments.

--
Eric

--> -----Original Message-----
--> From: Alexey Melnikov [mailto:[email-masked]] 
--> Sent: Tuesday, May 09, 2006 8:31 AM
--> To: Gray, Eric
--> Cc: [email-masked]; Lisa Dusseault; Cyrus Daboo
--> Subject: Re: [Gen-art] gen-art review of 
--> draft-ietf-sieve-imapflags-04.txt
--> 
--> Gray, Eric wrote:
--> 
--> >--- [SNIP] ---
--> >
--> >--> My answers are below, please let me know if you have any 
--> >--> further questions.
--> >--> 
--> >--> >Questions/Comments:
--> >--> >==================
--> >--> >
--> >--> > In section 2.1, you say that spaces are acceptable (MUST 
--> >--> > be always allowed) in flag names.  You also say that a 
--> >--> > string containing a space-separated list of flags (I 
--> >--> > assume flags in this context is the same as flag names) 
--> >--> > is the same as "a string list consisting of the flags."
--> >--> >
--> >--> > I am not sure what this means,
--> >--> >
--> >--> A string list is denoted using ["value1", ..., "valueN"] 
--> >--> notation in Sieve. It is a "list of strings" in usual 
--> >--> programming language sense.
--> >--> 
--> >--> So the text is basically saying that "value1 value 2 ... 
--> >--> valueN" is the same as ["value1", "value2", ..., "valueN"]
--> >--> 
--> >--> > but it seems to say that we MUST allow spaces as valid 
--> >--> > both as part of a flag name and as a separator between 
--> >--> > flag names.
--> >--> >  
--> >--> >
--> >--> IMAP flags/keywords are not allowed to contain spaces 
--> >--> according to RFC 3501.
--> >
--> >Although I understand what you mean by string list, now, 
--> >I am still not able to make complete sense of this.
--> >
--> >In the third paragraph of section 2.1, you say - 
--> >  
--> >
--> After reading your comments below I think I understand why you 
--> are confused now.
--> Flag is just a named boolean variable, it is either set or 
--> not. So when I write "flag" and "flag name" I mean the same thing.
--> 
--> >"The Sieve interpreter SHOULD check the list of flags for validity 
--> > as described by [IMAP] ABNF. In particular non-ASCII characters 
--> > are not allowed in flag names. However spaces MUST be always 
--> > allowed."
--> >  
--> >
--> I think the last sentence is the cause of your confusion. 
--> Spaces are not allowed in flag names according to RFC 3501, but 
--> that draft wants to allow spaces in a string describing list of 
--> flags (Remember, for this extension ["flag1", "flag2"] is the 
--> same as "flag1 flag2" or "flag2 flag1"). So, how about rewriting 
--> the original paragraph:
--> 
-->    The Sieve interpreter SHOULD check the list of flags for validity as
-->    described by [IMAP] ABNF. In particular non-ASCII characters are not
-->    allowed in flag names. However spaces MUST be always allowed.
--> 
-->    Multiple spaces between flag names MUST be treated as a single space
-->    character, leading and trailing spaces MUST be ignored.
--> 
-->    A string containing a space-separated list of flags is equivalent to
-->    a string list consisting of the flags. The last requirement is to
-->    simplify amalgamation of multiple flag lists.
--> 
--> to read:
--> 
-->    A string containing a space-separated list of flag names is
equivalent
-->    to a string list consisting of the flags. This requirement is to
-->    simplify amalgamation of multiple flag lists.
-->

Now that I know what you are trying to say, I can see that it 
isn't really necessary to insert the word "names" in the above 
- unless you were going to try to use "flag names" consistently 
(in which case you would have to change "flags" at the end of 
the first sentence, as well as in the middle - and in other 
places as well).

However, putting this paragraph first does help to understand
where you're going with the rest of the text.

--> 
-->    The Sieve interpreter SHOULD check the list of flags for validity as
-->    described by [IMAP] ABNF. In particular according to [IMAP] non-ASCII
-->    characters are not allowed in flag names. However spaces MUST be
always
-->    allowed in strings representing a list of flags. In such strings
multiple
-->    spaces between flag names MUST be treated as a single space
character, 
-->    leading and trailing spaces MUST be ignored.

This is much clearer, but can I suggest re-wording the third 
sentence to read - 

"However spaces MUST be always allowed as delimiters in strings
 representing a list of flags."

It is fine as you suggest, however, since people familiar with
IMAP will realize that using them as delimiters _only_ is what
you mean...

--> ?
--> 
--> >However, above you say - 
--> >
--> >"IMAP flags/keywords are not allowed to contain spaces 
--> > according to RFC 3501."
--> >  
--> >
--> >The only way I can reconcile these two statements is by assuming
--> >that "flags" is not the same as "flag names".  This is precisely
--> >the opposite of what I said I was assuming in asking my question
--> >above (I said "I assume flags in this context is the same as flag 
--> >names").
--> >
--> >From your answer above, it seems that by "flags", you may mean
--> >"flag values" as opposed to "flag names" as I had assumed.  Is
--> >it possible for you to be more specific, or is it just assumed 
--> >that anyone reading this specification would already know what 
--> >these terms mean?
--> >  
--> >
--> The expectation is that anybody reading the document is already familiar

--> with IMAP.
--> 
--> >-->
--> > 
--> >--- [SNIP] ---
--> >
--> >--> 
--> >--> >Also - are all of the values, in the section 4 examples, 
--> >--> valid flag-names?
--> >--> >  
--> >--> >
--> >--> Yes. IMAP allows for any alpha-numeric value to be used as 
--> >--> a keyword name.
--> >
--> >What has me confused here is that the IMAP reference (RFC 3501)
--> >says the following:
--> >
--> >'All system flags begin with "\".'
--> >  
--> >
--> There are two types of flags: system flags and keywords. System flags 
--> (flag names) start with \ and are defined by RFC 3501.
--> 
--> Several system flags can trigger special server behavior.
--> 
--> Keywords are any other flags not starting with \. An IMAP client can set

--> any keyword on an IMAP server, however it is not possible to set a flag 
--> starting with \ which is not defined in RFC 3501. Apart from that there 
--> is no real difference between system flags and keywords.
--> 
--> (This is just a rewording of Section 2.3.2 from RFC 3501)
--> 
--> Does this help to clarify things?

Greatly, thanks!

--> 
--- [SNIP] ---

_______________________________________________
Gen-art mailing list
[email-masked]
https://www1.ietf.org/mailman/listinfo/gen-art

---

From: Alexey Melnikov <[email-masked]>
Date: Wed, 10 May 2006 13:00:28 +0100

> representing a list of flags."
Good point. I've made the suggested change in my copy.