[presentation-api] Conformance classes definition

tidoust has just created a new issue for 
https://github.com/w3c/presentation-api:

== Conformance classes definition ==
The Presentation API distinguishes between the two sides of the 
equation: the *opening browsing context* and the *presenting browsing 
context*. The interfaces that user agents need to implement are 
different depending on which side you consider. Also, I think we 
envision user agents that can run an opening browsing context but 
cannot run a presenting browsing context, and conversely user agents 
that can run a presenting browsing context but cannot run an opening 
browsing context.

In spec parlance, this means that there exists (at least) two 
different classes of products that can claim conformance against the 
Presentation API specification. The specification should be explicit 
about this in the Conformance section and clearly identify the 
interfaces, algorithms and normative statements that apply to a given 
class of products.

This is somewhat different from most other JavaScript APIs that target
 a single user agent and thus can remain pretty laconic on the 
definition of classes of products. As a counter example, the HTML5 
specification defines different classes of products, including 
*Conforming documents*, *Web browsers and other interactive user 
agents* and *Conformance checkers* [html5].

The definition of classes of products can remain pretty simple. As a 
starting point, I would suggest to reference the definitions of 
*opening browsing context* and *presenting browsing context* with 
wording in the Conformance section such as:

[[
This specification describes conformance criteria for two classes of 
products:

 * An **opening user agent** is a user agent that can initiate or 
resume a presentation session, thus creating an *opening browsing 
context*. An opening user agent must implement the interfaces defined 
in sections *(to be completed)*.
 * A **presenting user agent** is a user agent that can run a 
*presenting browsing context*. A presenting user agent must implement 
the interfaces defined in sections *(to be completed)*.

A user agent may act both as an *opening user agent* and as a 
*presenting user agent*, provided it implements all the required 
interfaces. This happens, e.g. when the opening user agent runs the 
*presenting browsing context* locally, or when the presenting user 
agent wants to allow a presenting browsing context to initiate or 
resume a presentation session on its own.
]]

We could also treat the 1UA case as a separate class of products but I
 am not yet clear whether we will need to define normative statements 
that will only apply to the presenting browsing context when it runs 
in the opening user agent.

Having clear classes of products is good practice (see relevant 
guideline in "QA Framework: Specification Guidelines" [qa]). It is 
useful to make conformance claims but note it also helps with testing 
(see "A Method for Writing Testable Conformance Requirements" [test]) 
and specification authoring (once you have clear classes of 
conformance, you will probably want to separate interfaces as 
suggested in #91 to make it easier for readers/developers).

Feel free to suggest better definitions. The main point in this issue 
is not the text in itself but the fact that the spec needs to define 
the conformance classes.

[html5] 
http://www.w3.org/TR/html5/infrastructure.html#conformance-classes
[test] http://www.w3.org/TR/test-methodology/
[qa] http://www.w3.org/TR/2005/REC-qaframe-spec-20050817/#what-conform

See https://github.com/w3c/presentation-api/issues/93

Received on Tuesday, 26 May 2015 13:54:46 UTC