version identifiers

(resent to public tag) with regard to ACTION-283 / ISSUE-41

I've been distracted with other events, but I managed to put in some time, should have a new version in TAG space soon.

In the meanwhile, here is the Editor's Draft
the most significant changes were in the sections enclosed below, which you might want to review; it tries to set up a framework that applies to languages like HTML that are widely implemented, even when those implementations don't always match the specification.

Terminology and Framework

This section lays out a framework for describing communication and the role of languages in them.   The document uses some common terms in ways that are very specifically defined for this framework, although the definitions attempt to be consistent with common usage. Terms defined specially here are in bold, while other terms of interest but assumed to be defined elsewhere are in italics.
The World Wide Web is a communication system; a way of using a network (and in particular the Internet) to communicate. Communication usually involves a protocol in which documents are sent from one agent (the producer) to another agent (the consumer).

An agent is software that is involved in communication; for example, a web browser, an authoring tool, a web server are all agents (A user-agent is an agent under direct control of a user.)
A producer is an agent that generates documents for transmission to one or more consumers. In fact, the production of a document and its communication may involve several steps, where the document is initially generated by one agent (for example, an editor agent controlled by a user), and then subsequently transmitted via a protocol to another agent.
A consumer is an agent that performs some action when presented with a document sent via a protocol -- the consumer interprets the document. Note that a viewer, brower, or player are kinds of consumers, but so are search engines, translation gateways, summarizers, and other agents that receive and interpret documents.
A document is (in this framework) a string of characters or bytes that might be transmitted from a producer to a consumer; a document is generally a instance of a language (or, in the case of compound documents, a combination of instances of the language). Note that this definition of document is, in some ways, intentionally broad, and includes any communication that might be sent in a HTTP response or an email message.
In this framework, a language is an agreement of syntax and meaning between agents in a community, such that the agents in the community are interoperable when interpreting documents in the language (or, in the case of compound documents, part of the document). Note that the use of language here refers to "language as spoken"--what is actually implemented and understood -- as opposed to a specification.
A community is a set of agents (producers and consumers) that wish to communicate interoperably. Note that there may be several overlapping communities.
A specification is written (human interpretable) documentation of an agreement of a community that describes and defines a version (or several versions) of a language.  Generally a specification describes syntax and meaning associated with constructs of the syntax. Often a specification will describe (mandate etc) both a conservative language -- a definition and set of tests for whether a particular document is conforming, and which a conforming producer might produce, as well as advice or normative behavior for conforming consumers to exhibit when presented with documents, even when they are not valid -- in this case, it is defining error behavior. The introduction of error behavior is not only important for consumers for graceful use, but is an important element of language extensibility (as described below.)
A specification version is a particular specification belonging to a series or family of closely related specifications. A language version is a language (as implemented) which generally corresponds to a specification version. Note that specifications can be updated to correct mistakes, which might create a new specification edition but not a new version. Note that this definition of version actually encompasses any change from one language or specification, not ones that are associated with major versions.
A language is often extended by adding features: new capabilities that consumers exhibit and that producers can put into documents.
When a producer sends a document to a consumer, and the consumer's behavior or interpretation of documents matches -- to some degree of satisfaction -- the producer's expectation, the agents are said to be interoperable. (Note that there may be degrees of interoperability.) In addition, if two consumers interpretation of documents match satisfactorily, the two consumers are said to be interoperable. Two implementations of a specification are interoperable implementations if they are both interoperable (in either sense) but are also interoperable in a way that conforms to the specification.
A document is valid according to a specification if it matches the allowed syntax of the specification. (This is sometimes also called conforming)
Many specifications contain normative requirements for different classes or roles of agents, as well as requirements for valid documents. An agent is a conforming implementation if it meets those requirements.
    Language- or Version-indicator
A language-indicator or version-indicator is either (a) a syntactic component of a language for inclusion within a document, or (b) a protocol element, transmitted outside of a document; the indicator identifies a specification (or family of specifications or version within that family). A producer supplies an indicator for use by the consumer of the document. Note that things like MIME types, DOCTYPE, XML namespaces and the like are all examples of indicators. This definition and the use of version indicators is expanded below.

Standards, Specifications, and Language Versions
The standards process is way of evolving specifications to allow common and interoperable changes to implementations of agents. The standards process involves bringing together a community (of document producers and of implementors of producer and consumer agents) to produce a specification that they all ("consensus") agree to implement and use. Insofar as a specification represents that agreement and it is followed, a good specification will improve interoperability, and thus increase the satisfaction of its users.


Received on Wednesday, 26 August 2009 22:30:44 UTC