This is an archived snapshot of W3C's public bugzilla bug tracker, decommissioned in April 2019. Please see the home page for more details.

Bug 5657 - Define implementation-defined and -dependent, use consistently
Summary: Define implementation-defined and -dependent, use consistently
Status: RESOLVED FIXED
Alias: None
Product: SML
Classification: Unclassified
Component: Core+Interchange Format (show other bugs)
Version: LC
Hardware: Macintosh All
: P2 normal
Target Milestone: ---
Assignee: Virginia Smith
QA Contact: SML Working Group discussion list
URL:
Whiteboard:
Keywords: resolved
Depends on:
Blocks:
 
Reported: 2008-04-23 02:10 UTC by C. M. Sperberg-McQueen
Modified: 2008-12-09 17:58 UTC (History)
2 users (show)

See Also:


Attachments

Description C. M. Sperberg-McQueen 2008-04-23 02:10:59 UTC
The terms 'implementation-defined' and 'implementation-dependent' are
both used in the current version of the spec.  They need to be
defined, and I think they could usefully be used more consistently.
This bug report makes several proposals in this connection.

1) Adopt the distinction between implementation-defined and -dependent
used in the QT and XSD specs.

In the XSLT / XPath / XQuery (aka QT) specs, the two terms are used to
make an important and useful distinction, and I propose that we should
follow their usage and make a similar distinction.  The terms are
defined in XPath 2.0 thus:

    Certain aspects of language processing are described in this
    specification as implementation-defined or
    implementation-dependent.

        - [Definition: Implementation-defined indicates an aspect
          that may differ between implementations, but must be
          specified by the implementor for each particular
          implementation.]  *

        - [Definition: Implementation-dependent indicates an aspect
          that may differ between implementations, is not specified by
          this or any W3C specification, and is not required to be
          specified by the implementor for any particular
          implementation.]

XPath 2.0 adds:

    A language aspect described in this specification as
    implementation-defined or implementation dependent may be further
    constrained by the specifications of a host language in which
    XPath is embedded.

If we expect SML to be embedded in, or referred to normatively by
other specs, we might want to say something similar to that last.

XSLT 2.0 uses different words but makes the same essential
distinction:

    [Definition: In this specification, the term
    implementation-defined refers to a feature where the
    implementation is allowed some flexibility, and where the choices
    made by the implementation must be described in documentation that
    accompanies any conformance claim.]

    [Definition: The term implementation-dependent refers to a feature
    where the behavior may vary from one implementation to another,
    and where the vendor is not expected to provide a full
    specification of the behavior.] (This might apply, for example, to
    limits on the size of source documents that can be transformed.)

    In all cases where this specification leaves the behavior
    implementation-defined or implementation-dependent, the
    implementation has the option of providing mechanisms that allow
    the user to influence the behavior.


2) Retain the term 'implementation-defined' in some places

We use the term 'implementation-defined' in several places where it
seems to me to be the right one to use:

  - SML 4.2.3 Identical Targets, bullet 3
  - SML 4.2.7 deref() XPath Extension Function, bullet 1.b
  - SML-IF 5.4.3 Schema Bindings, bullet 2.d
  - SML-IF 5.4.3 Schema Bindings 3.c


3) Change from 'implementation-dependent' to 'implementation-defined' 
w.r.t the base URI used in absolutizing relative references

There are several places where we currently use the term
'implementation-dependent', but mean (or I think should mean)
'implementation-defined', if we adopt the usage of QT.  Two of them
relate to base URI choice.

SML 4.3 SML Reference Schemes, bullet 3.b, says

  b. If these references are allowed to be relative references,
     i.e. they are not already target-complete, then some
     implementation-dependent base URI or IRI is used to resolve them
     to URIs or IRIs. (See section 5 of [IETF RFC 3986] and section
     6.5 of [IETF RFC 3987].)

SML 4.3.1 SML URI Reference Scheme, bullet 2.a, says

  a. If the URI is a relative reference, then use an
     implementation-dependent base URI to resolve it to an URI.

Personally, I agree with Henry Thompson's position (bug 5542) that we
should use xml:base to specify the base URI, and that there should be
nothing implementation-defined or -dependent about it.  But even if we
don't do that, we should not specify that a processor is allowed to
use any base URI it likes and is not required to tell the user how the
base URI is chosen, or to choose it the same way from moment to
moment.

(Also, w.r.t. 4.3.1, I think that the phrase "an URI" should probably
be "an absolute URI", but I have not checked the RFCs for
terminology.)


4) Change rule binding descriptions from 'implementation-dependent' to
'-defined'.

SML 6.1 Informal Description [of rules] (Non-Normative), final
paragraph says

  The binding of the rule document containing the StudentPattern
  pattern to documents that may contain instances of StrictUniversity
  element is implementation-dependent and hence outside the scope of
  this specification.

SML 6.4.1 Rule Binding, last sentence of para

  The mechanism for binding rule documents to a set of documents in a
  model is implementation-dependent and hence outside the scope of
  this specification.

In order to be usable, an implementation is going to have to tell
users how to arrange for rule documents to be bound to other
documents; that means 'implementation-dependent' is not sufficient.


5) Consider whether behavior when documents are unreachable is
implementation-defined or implementation-dependent.

There is one place where we currently use the term
'implementation-dependent' where it is not obviously wrong, but where
we should probably consider explicitly whether we should say
'-dependent' or '-defined'.

SML 8. Conformance Criteria says

  If any model document is not reachable, then the model validator's
  behavior is implementation-defined.

I'm not sure what the pros and cons on either side of the choice are.
Comment 1 Kumar Pandit 2008-04-24 03:24:40 UTC
This appears to be a duplicate of the following bug:
5635 impl-defined and impl-dependent used, but not defined 
Comment 2 C. M. Sperberg-McQueen 2008-04-24 18:07:14 UTC
In comment #1, Kumar is right to point to bug 5635.  It's clearly 
relevant, and I apologize for not seeing it and pointing to it.

If we subtract the point of bug 5635 from this bug (namely,
defining the two terms), however, we are left with items 2 through
5 in the description of the bug: 5635 covers only item 1.
Comment 3 Kumar Pandit 2008-05-01 19:03:42 UTC
resolution in conf call (5/1/08): mark needsAgreement
Comment 4 John Arwe 2008-06-18 17:09:03 UTC
adding has proposal kw - bug clearly has (a set of 4) concrete proposals in it
Comment 5 John Arwe 2008-06-24 11:06:57 UTC
f2f consensus

item 1 - covered by 5635
item 2 - agree with proposal in this bug, no changes
item 3 - agree with proposal in this bug
item 4 - agree with proposal, change both sections, amended text

from: implementation-dependent and hence outside the scope of this specification.
to  : implementation-defined.

item 5 - leave as impl-defined

Working group chose to come down on the side of requiring the behavior to be documented.