Hi Stephan,
Stephan Bosch wrote:
Alexey Melnikov wrote:
Hi Stephan,
Thank you for your review.
I am quickly answering easy comments/questions and will followup on
the rest later on.
2.6:
- Clarify what is meant by syntax checking. In the strictest sense
it could mean that any script that complies with the basic grammar
of the Sieve language would pass. Command syntax, i.e. which
arguments are required/allowed, would then be ignored. Also,
wouldn't it be helpful/useful/desirable to include contextual checks
here as well? E.g. unknown/invalid comparators etc.
IMHO, invalid/unknown comparator would be covered by syntactic checks.
I first encountered this distinction when discussing the ihave
extension to the Sieve language. I implicitly interpreted this
requirement as a full script check (i.e. as would be done for full
compilation), which seems overly restrictive when reading this
standard more carefully.
You need to suggest specific text, especially if you want the
document to describe interaction with ihave in more details.
I was not saying that the interaction with ihave needs to be described
better, I was merely saying that during the discussion of the ihave
extension I noticed that the current formulation of the syntactic
validation requirement is very much open for interpretation. IMHO,
this is usually a bad thing in a document that is intended to
establish a standard.
I am not very good at writing such texts myself, but I can provide a
textual representation of how I interpret the sentence 'The server
MUST check the submitted script for syntactic validity, which includes
checking that all Sieve extensions mentioned in Sieve script "require"
statement(s) are supported by the Sieve interpreter.' (somewhere on
page 20):
'The server MUST check the submitted script for validity, which
includes checking that the script complies with the Sieve grammar
[SIEVE], that all Sieve extensions mentioned in script's "require"
statement(s) are supported by the Sieve interpreter,
Good so far.
that all used commands are known (i.e. either part of the main Sieve
language or an extension mentioned in the "require" lines),
I think this text is not going to be good in presence of ihave
extension. So I would rather omit or reword this part.
that commands are used in the correct context
I am not sure what you mean here.
and that the supplied command arguments are valid for each command.
IMHO, this part is good.
Essentially, the performed validation should be equal to what is
performed when compiling the script for execution. Implementations
that use a binary representation to store compiled scripts can extend
the validation to a full compile, in order to avoid validating
uploaded scripts multiple times.'
This text is good and might be helpful.
Does this interpretation match your intention of that sentence? I am
also wondering what others think of this. I can imagine that the ihave
authors have some amendments, but I think the text that follows the
aforementioned sentence in the draft should cover most potential issues.
While I generally agree with the intent of your new text, I think it
demonstrates cases when saying less is actually better than saying more:
a very specific text might unintentionally exclude some valid checks.