{"action":"created","issue":{"url":"https://api.github.com/repos/w3c/presentation-api/issues/93","labels_url":"https://api.github.com/repos/w3c/presentation-api/issues/93/labels{/name}","comments_url":"https://api.github.com/repos/w3c/presentation-api/issues/93/comments","events_url":"https://api.github.com/repos/w3c/presentation-api/issues/93/events","html_url":"https://github.com/w3c/presentation-api/issues/93","id":80973089,"number":93,"title":"Conformance classes definition","user":{"login":"tidoust","id":1122927,"avatar_url":"https://avatars.githubusercontent.com/u/1122927?v=3","gravatar_id":"","url":"https://api.github.com/users/tidoust","html_url":"https://github.com/tidoust","followers_url":"https://api.github.com/users/tidoust/followers","following_url":"https://api.github.com/users/tidoust/following{/other_user}","gists_url":"https://api.github.com/users/tidoust/gists{/gist_id}","starred_url":"https://api.github.com/users/tidoust/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/tidoust/subscriptions","organizations_url":"https://api.github.com/users/tidoust/orgs","repos_url":"https://api.github.com/users/tidoust/repos","events_url":"https://api.github.com/users/tidoust/events{/privacy}","received_events_url":"https://api.github.com/users/tidoust/received_events","type":"User","site_admin":false},"labels":[{"url":"https://api.github.com/repos/w3c/presentation-api/labels/P2","name":"P2","color":"eb6420"}],"state":"closed","locked":false,"assignee":null,"milestone":null,"comments":1,"created_at":"2015-05-26T13:54:42Z","updated_at":"2015-10-09T19:40:07Z","closed_at":"2015-10-09T19:40:07Z","body":"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.\r\n\r\nIn 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.\r\n\r\nThis 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].\r\n\r\nThe 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:\r\n\r\n[[\r\nThis specification describes conformance criteria for two classes of products:\r\n\r\n * 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)*.\r\n * 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)*.\r\n\r\nA 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.\r\n]]\r\n\r\nWe 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.\r\n\r\nHaving 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).\r\n\r\nFeel 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.\r\n\r\n[html5] http://www.w3.org/TR/html5/infrastructure.html#conformance-classes\r\n[test] http://www.w3.org/TR/test-methodology/\r\n[qa] http://www.w3.org/TR/2005/REC-qaframe-spec-20050817/#what-conform"},"comment":{"url":"https://api.github.com/repos/w3c/presentation-api/issues/comments/146969767","html_url":"https://github.com/w3c/presentation-api/issues/93#issuecomment-146969767","issue_url":"https://api.github.com/repos/w3c/presentation-api/issues/93","id":146969767,"user":{"login":"mfoltzgoogle","id":1910312,"avatar_url":"https://avatars.githubusercontent.com/u/1910312?v=3","gravatar_id":"","url":"https://api.github.com/users/mfoltzgoogle","html_url":"https://github.com/mfoltzgoogle","followers_url":"https://api.github.com/users/mfoltzgoogle/followers","following_url":"https://api.github.com/users/mfoltzgoogle/following{/other_user}","gists_url":"https://api.github.com/users/mfoltzgoogle/gists{/gist_id}","starred_url":"https://api.github.com/users/mfoltzgoogle/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mfoltzgoogle/subscriptions","organizations_url":"https://api.github.com/users/mfoltzgoogle/orgs","repos_url":"https://api.github.com/users/mfoltzgoogle/repos","events_url":"https://api.github.com/users/mfoltzgoogle/events{/privacy}","received_events_url":"https://api.github.com/users/mfoltzgoogle/received_events","type":"User","site_admin":false},"created_at":"2015-10-09T19:40:07Z","updated_at":"2015-10-09T19:40:07Z","body":"I believe the main issue here is addressed by PR #204.  We may want to refine the status of the Presentation interface when a UA implements one class but not the other.\r\n"}}