ietf-mta-filters
[Top] [All Lists]

Re: Are option extensions exclusive?

2004-08-12 07:12:31


Hello,

there has been talk recently if commands have been extended with new
options, which is the case, although rare (:copy, the suggestion to
rework refuse into reject options).

IMHO, such extensions may be very useful, but so far I miss a
specification if multiple option extensions may be used together or not.

This is covered in the base sieve specification. Each extension has
a capability name associated with it. The name of each extension used
has to be listed in a require clause at the beginning of the script
before the extension can be used. An implementation that doesn't
support a given capability will refuse to run the script, and compliant
implementations are supposed to refused to run scripts that fail to list
all the capabilities they use.

It is possible, although certainly not encouraged, for two extensions hto
conflict with each other. (The most likely reason for this: An extension gets
specified, deployed, and then revised in an incompatible way. The capability
string would need to change if this happens. The one example we have of this so
far is the imapflags extension.) In this case an implementation can support
both but forbid both from being listed in the require clause at the same time.

Now, nothing about this is in any way specific to extensions that add
tests or actions; it also applies to extensions that add options to existing
commands.

I can imagine three answers:

o  Option extensions are exclusive.  This makes it easy for the
   author to define the semantics, but some possibly useful
   combinations would be forbidden.

Extensions can be mutually exclusive, but normally won't be.

o  Option extensions can be used together.  Extensions are supposed
   to address completely different issues, thus not interacting
   badly.  I could imagine that existing implementations work that way
   and I prefer it.

This is the normal case.

o  The extension specifies if it is exclusive or not.  Do we need
   this freedom and does it make sense?

I think it is fairly obvious that an extension that conflicts with another
extension would need to make that clear in its specification.

                                Ned


<Prev in Thread] Current Thread [Next in Thread>