Return-Path: <owner-ietf-mta-filters@mail.imc.org>
X-Original-To: ietfarch-sieve-archive-Aet6aiqu@core3.amsl.com
Delivered-To: ietfarch-sieve-archive-Aet6aiqu@core3.amsl.com
Received: from localhost (localhost [127.0.0.1]) by core3.amsl.com (Postfix)
 with ESMTP id 5840828C2A8 for
 <ietfarch-sieve-archive-Aet6aiqu@core3.amsl.com>;
 Thu, 30 Jul 2009 08:14:40 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.332
X-Spam-Level: 
X-Spam-Status: No, score=-2.332 tagged_above=-999 required=5 tests=[AWL=0.267,
 BAYES_00=-2.599]
Received: from mail.ietf.org ([64.170.98.32]) by localhost (core3.amsl.com
 [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id Tl41KRrV0ySd for
 <ietfarch-sieve-archive-Aet6aiqu@core3.amsl.com>;
 Thu, 30 Jul 2009 08:14:39 -0700 (PDT)
Received: from balder-227.proper.com
 (properopus-pt.tunnel.tserv3.fmt2.ipv6.he.net [IPv6:2001:470:1f04:392::2]) by
 core3.amsl.com (Postfix) with ESMTP id E21A328C2B2 for
 <sieve-archive-Aet6aiqu@ietf.org>; Thu, 30 Jul 2009 08:13:59 -0700 (PDT)
Received: from balder-227.proper.com (localhost [127.0.0.1]) by
 balder-227.proper.com (8.14.2/8.14.2) with ESMTP id n6UF4lBa084900
 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO);
 Thu, 30 Jul 2009 08:04:47 -0700 (MST) (envelope-from
 owner-ietf-mta-filters@mail.imc.org)
Received: (from majordom@localhost) by balder-227.proper.com
 (8.14.2/8.13.5/Submit) id n6UF4lvn084899;
 Thu, 30 Jul 2009 08:04:47 -0700 (MST) (envelope-from
 owner-ietf-mta-filters@mail.imc.org)
X-Authentication-Warning: balder-227.proper.com: majordom set sender to
 owner-ietf-mta-filters@mail.imc.org using -f
Received: from mauve.mrochek.com (mauve.mrochek.com [66.59.230.40]) by
 balder-227.proper.com (8.14.2/8.14.2) with ESMTP id n6UF4XtO084885 for
 <ietf-mta-filters@imc.org>;
 Thu, 30 Jul 2009 08:04:44 -0700 (MST) (envelope-from ned.freed@mrochek.com)
Received: from dkim-sign.mauve.mrochek.com by mauve.mrochek.com (PMDF V6.1-1
 #35243) id <01NBX96WOQCG000N2I@mauve.mrochek.com> for
 ietf-mta-filters@imc.org; Thu, 30 Jul 2009 08:04:32 -0700 (PDT)
Received: from mauve.mrochek.com by mauve.mrochek.com (PMDF V6.1-1 #35243) id
 <01NBWGT18MS000007A@mauve.mrochek.com>; Thu, 30 Jul 2009 08:04:30 -0700 (PDT)
Date: Thu, 30 Jul 2009 07:51:37 -0700 (PDT)
From: Ned Freed <ned.freed@mrochek.com>
Subject: Re: [draft-melnikov-sieve-external-lists] 2.4 Proposed Error Handling
 Clarifications
In-reply-to: "Your message dated Thu, 30 Jul 2009 13:18:52 +0100"
 <f470f68e0907300518xf914a5dq597bfbdb7eafac7e@mail.gmail.com>
To: Robert Burrell Donkin <robertburrelldonkin@gmail.com>
Cc: MTA filtering mailing list <ietf-mta-filters@imc.org>
Message-id: <01NBX96VF9EO00007A@mauve.mrochek.com>
MIME-version: 1.0
Content-type: TEXT/PLAIN
Content-transfer-encoding: 7BIT
References: <f470f68e0907300518xf914a5dq597bfbdb7eafac7e@mail.gmail.com>
Sender: owner-ietf-mta-filters@mail.imc.org
Precedence: bulk
List-Archive: <http://www.imc.org/ietf-mta-filters/mail-archive/>
List-ID: <ietf-mta-filters.imc.org>
List-Unsubscribe: <mailto:ietf-mta-filters-request@imc.org?body=unsubscribe>

> Proposal: Separate Section For Discussion of TAG
> =================================================
> Changes
> -------
> Split first paragraph into sections.
> Rationale
> ---------
> Clarity

> Proposal: Clarify Expected Error Handling Behaviour
> ===================================================
> Changes
> -------
> Specify that unsupported URI schemas are compile time
> errors and that resolution failures are runtime errors.

While I agree it's a good idea to report errors at as early a phase as
possible, unless we're willing to specify that variable substitutions cannot be 
used in list names, this can at most be a SHOULD, not a MUST.

> Rationale
> ---------
> Practical implementations will not be able to support
> all feasible URI schemes, protocols, discovery mechanisms
> and resource semantics.

> Any URI schema which is not supported by the engine
> will never be resolved. In this case, it is clearer and
> cleaner to fail at compile time. Note that this case
> also includes malformed URIs.

> Resources may be dynamic. A resource whose semantics
> could not be understood at compile time may have been
> replaced by one that could be at runtime. Resource
> resolution may be dynamic: a resource which could not
> be resolved at compile time may be resolvable at
> runtime. Services may be dynamic. A service with
> suitable semantics may become available at runtime
> which was not at compile time. Conversely,
> resources, resource resolution and service discovery
> may fail at runtime after it succeeded at compile
> time.

> So, failures to resolve, locate or parse a resource
> referred to by the script should only be raised at
> runtime.

Agreed, however, it isn't clear to me that throwing an error is the right
thing to do when a given list resource is unavailable. Handling the
unavailability of a given resource is well within the purview of a properly
constructed portable script, I should think.

> Proposal: Require Implementations To Support [TAG-URI]
> ======================================================
> Changes
> -------
> Require that all implementations support tag, plus any other
> URI schemes of their choice.
> Rationale
> ---------
> Insisting that implementations support at least one protocol
> sets a minimum level for script portability. Picking one
> particular web protocol such as LDAP, HTTP or FTP would impose
> a unnecessary burden on implementations and
> unnecessarily involve the specification in the semantics of
> engine-list server interactions.

> A credible alternative choice would be relative URIs.

It's unclear what "support" means in this context. In our implementtation list
URIs are parsed and then passed to what amounts to a callout. We can of course
make it so tag: is always a legal URL type when that check is done, but we
cannot force tag: to work.

> --------------------------------------------------------------------------
> [1] Proposal
> --------------------------------------------------------------------------

> 2.4.  Syntax of an externally stored list name

>    A name of an externally stored list is always an absolute URI [URI].
>    Implementations might find URLs such as [LDAP], [CardDAV], or
>    [TAG-URI] to be useful for naming external lists.

>    Implementations MUST raise a compile time error when a list name
>    cannot be parsed into a URI scheme supported by the implementation.

See above. This needs to be a SHOULD.

>    Resolution of the resource MAY involve resource location and service
>    discovery. Resources MAY change dynamically. Resolution of the
>    resource MUST be perform at script execution time. When the resource
>    cannot be located or the resource type is found to be unsupported
>    then the implementation MUST raise a runtime error.

If we're going to throw an error like this in a  test I think we need a way to
test and see if the resource is available.

>    Implementations MAY attempt to resolve the URI at compile time but
>    MUST NOT raise a compile time error on failure.

> 2.4.1 The Tag Scheme
>    The "tag" URI scheme [TAG-URI] can be used to represent opaque, but
>    user friendlier identifiers.

>    Resolution of such identifiers is going to be implementation specific
>    and it can help in hiding the complexity of an implementation from
>    end users.  For example, an implementation can provide a web interface
>    for managing lists of users stored in LDAP.  Requiring users to know
>    generic LDAP URL syntax might not be very practical, due to its
>    complexity.  An implementation can instead use a fixed tag URI prefix
>    such as "tag:example.com,<date>:" (where <date> can be, for example,
>    a date generated once on installation of the web interface and left
>    untouched upon upgrades) and the prefix doesn't even need to be shown
>    to end users.

>    Implementations MUST support the [TAG-URI] URI scheme.

I think some elaboration on what "support" means would be good here.

> 2.4.2 Other URI Schemes

>    Implementations MAY support other URI schemes.


				Ned

