Abstract
The goal of this document is to help W3C editors write better specifications, by making a specification easier to interpret without ambiguity and clearer as to what is required in order to conform. It focuses on how to define and specify conformance. It also addresses how a specification might allow variation among conforming implementations. The document presents guidelines or requirements, supplemented with good practices, examples and techniques.
Status of This Document
This section describes the status of this document at the time
of its publication. Other documents may supersede this document. A
list of current W3C publications and the latest revision of this
technical report can be found in the W3C technical reports index at
http://www.w3.org/TR/.
This document is a W3C
Recommendation. It has been reviewed by W3C Members and other interested
parties and has been endorsed by the Director. It is a stable document and
may be used as reference material or cited as a normative reference from
another document. W3C's role in making the Recommendation is to draw
attention to the specification and to promote its widespread deployment. This
enhances the functionality and interoperability of the Web.
This document has been produced by the QA Working Group, as part of the QA Activity.
The English version of this specification is the only normative version. Translations of this document may be available.
If you have any comments on this document, send them to [email protected], a mailing
list with a public archives. An errata
list for this edition is available.
This document only had minor editorial corrections since it was published as a Proposed Recommendation. Evidence of interoperation between at least two implementations of this specification are documented in the Implementation Report.
The Working Group's Patent disclosure page, in conformance with the W3C Patent
Policy of 5 February 2004, contains patent disclosures relevant to this specification. An individual who has actual knowledge of a patent which the individual believes contains Essential Claim(s) with respect to this specification should disclose the information in accordance with section 6 of the W3C Patent Policy.
Table of contents
List of Requirements:
List of Good Practices:
Appendix
1. Introduction
1.1 Scope
This document is a guide for editors of W3C specifications. It provides guidelines for improving conformance-related characteristics. In that respect, this document differs from other W3C process and publication-related documents. It addresses the most basic and critical topics with respect to conformance, including how to convey what is required for an implementation in order to conform and how to allow variation among conforming implementations.
The term specification is used as defined in ISO Guide 2-4 [ISO-GUIDE] as meaning a document that prescribes requirements to be fulfilled by a product, process or service. Specifications can be defined in one document or as a coherent set of several documents (see Umbrella specifications in Variability in Specifications [VIS] for more discussion), and can import requirements of other specifications with normative references.
In addition to conformance, there are several other topics that should be addressed when writing a specification, such as accessibility, internationalization, security, and device independence. These topics are not directly in the scope of this document, but are evoked in section 3.3. Specification authors and editors are encouraged to consider these topics and coordinate their efforts in these areas with the relevant W3C Working Groups.
1.2 Goals and Motivation
The goal is to enable Working Groups to produce specifications that are precise, easier to interpret without ambiguity or confusion, and clearer as to what is required in order to conform. Good specifications lead to better and more interoperable implementations and foster the development of test suites and tools.
Everyone benefits from having well-written specifications. Editors may have less rework and thus, fewer issues raised during the development of the specification, and fewer errata once it is finished. Implementers can implement sooner and have a better chance to conform to the specification. Test developers are able to derive unambiguous test assertions. End users benefit from having interoperable solutions. W3C gains by having recommendations produced with higher quality and reduced maintenance.
1.3 Why Specification Guidelines?
It is not an easy task to write accurate, clear, complete, unbiased specifications. It requires planning, organization, and foresight about the technology, how it will be implemented and used, and how technical decisions affect conformance. This document provides a collection of requirements, good practices, examples, and techniques that lead the reader through the decisions necessary to write precise requirements and establish, define, and specify conformance for specifications.
Editors and authors are busy, under pressure to get the specification published, and already have a reading list of W3C documents. A good place to start is W3C Editor's Home Page [EDITOR]. This document can be used as a checklist of things to consider, a how-to guide with examples and techniques that can be adapted, and a reference for understanding conformance concepts and terminology.
1.4 Audience of This Document
The primary audience of this document is editors; however, it is applicable to a broader audience including:
- Those who review specifications during their development,
- Implementers of specifications,
- Builders of test materials, including conformance test suites and tools.
This document makes no distinction between the terms editors and authors and refers to them collectively as editors.
1.5 About This Document
This document is a practical guide to writing a specification, presenting editors with topics to consider. The normative content is contained in a collection of a small number of Requirements, and somewhat more Good Practices. As explained in this specification's conformance clause, the Requirements are necessary for claiming conformance to Specification Guidelines, and the Good Practices are recommendations that will further benefit the quality of a specification.
The overall objective of these requirements and good practices is to facilitate the creation of a complete conformance clause in every specification. A conformance clause template [CONF-TEMPLATE] is provided to assist editors satisfy the requirements of this document and end up with a conformance clause. Note that for some technical reports (e.g., The QA Handbook [QA-HANDBOOK], Architecture of the World Wide Web, Volume One [WEB-ARCH]) where conformance is not an issue (e.g., no normative content), the conformance clause may be an explanation of why there is no “conformance to this document” and may be presented in another section rather than in a separate conformance section.
The topics presented herein are inclusive (self-contained) and provide information needed to understand and successfully apply the Requirement or Good Practice, although related information and advanced topics may be referenced.
If in a hurry just read the first guidelines section, Specifying conformance — this may be all you need to read in order to reach the expected outcome of adhering to this document, i.e. specifying conformance. It serves as a roadmap to other parts of this document, which help achieve specifying conformance.
1.5.1 Structure of This Document
This document is organized into a series of guidelines such as Specifying Conformance and Managing Variability. Each of these guidelines present and explain Requirements and Good Practices. Techniques and Examples accompany each Requirement and Good Practice. The techniques illustrate basic (and nonexhaustive) questions or methods to help realize the Requirement/Good Practice and produce specification text. The examples are explanations or extractions from existing W3C specifications that specifically illustrate the point made in the Requirement/Good Practice.
The conformance clause of this document describes the conformance requirements for claiming conformance to this Specification Guidelines. A specification editor who wishes to write a specification conformant to Specification Guidelines must ensure it satisfies the conformance requirements in the conformance section of this document.
1.5.2 Other QA Framework Documents
This document is useful as a standalone document or as part of a family of QA Framework documents designed to help the Working Groups improve all aspects of their quality practices.
- The QA Handbook [QA-HANDBOOK] is a non-normative handbook about the process and operational aspects of the quality practices of W3C Working Groups.
- Variability in Specifications models how design decisions affecting conformance change the interoperability landscape for a specification.
- The Test Development F.A.Q. addresses some of the usual issues Working Groups have to deal with when they start developing a test suite for their specifications.
- Various pages in the QA Wiki provide information on developing a test suite.
2. Guidelines
Conformance is the fulfillment of specified requirements by a product, process, or service. These requirements are detailed in a specification as part of a conformance clause and in the body of the specification. A conformance clause is the section of a specification that identifies all the criteria that must be satisfied in order to claim conformance to the specification.
A clear presentation of conformance is crucial to successful interoperability of implementations. The conformance model and the language used for normative information determine the testability of a specification. They also influence the overall implementation landscape, ranging from a narrow conformance with few allowable variations in implementations to multiple conformance types, resulting in numerous variations in conforming implementations. The model must be chosen carefully, to produce the intended implementation range.
A good conformance clause is the ultimate goal of these guidelines, and is sanctioned by conformance to this specification.
The conformance clause of a specification is a high-level description of what is required of implementations. It, in turn, refers to other parts of the specification for details. Ideally, readers can find any conformance-related information from its conformance clause which serves as a root source.
For some specifications, the conformance model may be straightforward and simple, and the conformance clause template [CONF-TEMPLATE] when completed, may provide most of the information needed in a conformance clause. For other specifications, when the conformance model is complex or convoluted, the Advanced Topics references (see Variability in Specifications [VIS]) may be invaluable.
The central message of this section — “have a good conformance clause” — has many ancillary details. Because the conformance clause is the foundation for defining and measuring conformance, it is also the basis for assessing conformance claims. One detail worthy of attention is “conformance claims.”
Rather than live with the infinite varieties of creative conformance claims that can arise in a vacuum, the specification can be proactive.
Good Practice 4:
Provide an Implementation Conformance Statement pro forma.
What does it mean? An Implementation Conformance Statement (ICS) provides information about an implementation to a specification, by presenting in a uniform manner the implemented capabilities (e.g., functions, features) and options as well as limitations of the implementation. An ICS pro forma typically takes the form of a blank questionnaire or checklist for an implementation. It provides the implementer a way to indicate the features implemented. Think of it as an inventory of what has been implemented. Note that a completed ICS does not indicate conformance of the implementation. Hence, answering “yes” to indicate a capability is supported does not mean that the capability has been tested.
This Good Practice suggests that the specification itself include an ICS pro forma. Providing an ICS pro forma is conducive to the statement being completed and helps to ensure consistency among completed ICSes.
Why care? An ICS pro forma provides a concise summary of a specification, i.e., the capabilities and options defined in the specification as well as any defined subdivisions (e.g., profiles, modules) and conformance designations. The ICS provided with the specification is blank, waiting for the implementer to complete. This blank ICS provides implementers and users a quick overview of features defined in the specification. A completed ICS not only provides information on what has been implemented (mandatory and optional features), but can also be used to document the presence of extensions or any specializations that have been made. A completed ICS provides information useful to facilitate the selection of applicable tests for the particular implementation. However, that is not all. Although the ICS content is independent of testing, associating it with conformance tests makes it an essential piece in the reporting of conformance results (see techniques in Good Practice 5).
Techniques
- Create a list, table or form listing all features (capabilities) and indicating which are mandatory to implement.
- Provide space for the implementer to check: “Yes” (to indicate the feature is implemented), “No” (to indicate it is not implemented), “Not Applicable,” and space for comments.
- Organize the features according to the subdivisions of the specification or in the order they occur in the specification or in some other logical grouping.
- If there are dependencies, express them. (For instance, “If you answered 'No' to this question, jump to the next section.”)
- Provide a tool to help implementers fill out the ICS and produce a report (e.g., in EARL [EARL]).
Examples
QA Specification Guidelines provides an ICS [QA-SPEC-ICS] to help implementers to asses conformance to this document. Good Practices (informative) and Requirements (normative) are given in a table where implementers can check “Yes,” “No,” or “Not Applicable” and add comments.
Good Practice 5:
Require an Implementation Conformance Statement as part of conformance claims.
What does it mean? Good Practice 5 simply puts together the previous two Good Practices. The specification not only could provide an ICS pro forma for implementers, but also could require a link to the ICS pro forma from its standardized conformance claim template.
Why care? Providing a completed ICS with the conformance claim might help customers and users to determine quickly the implemented capabilities as well as easily verify the level of support for individual requirements of the specifications. Combining the ICS with a conformance test suite can strengthen the claim. Specifically, the ICS, augmented with links to conformance tests, provides a very nice way to indicate not only what has been implemented, but also, what has been implemented correctly (i.e., conforms to the specification).
Techniques
- Give precise instructions for how the ICS becomes part of the conformance claim. The ICS might be an external document, or the specification may link to a precise dated document, etc.
- Augment the ICS by providing links to the test suite, such that each feature has a test (or set of tests) associated with it. Explain what it means to check “Yes” or “No.” Specifically, does Yes/No indicate that the implementation has the relevant feature and passes the applicable tests or does Yes/No only indicate that the feature is implemented. In the latter case, to avoid confusion, we recommend adding an additional column for indicating the results of executing the tests.
Examples
The WebCGM specification requires an ICS as part of a conformance claim. The WebCGM checklist describes the conformance of the subject viewer product to the WebCGM specification, according to its performance on the WebCGM Test Suite.
2.2 Setting Up Ground Rules
2.2.1 Scope
The path to a quality specification begins with its scope. It is critical to convey what the specification is about by describing its intent and applicability. As the specification develops, it is a good idea to revisit the scope to make sure it still reflects the intent of the specification or if it needs to be modified.
Requirement 2: Define the scope.
What does it mean?
Describe what the specification is about. Let the reader know the topics covered in the specification.
Why care?
Scope is one of the first sections a reader reads, so it is important to capture their attention and make sure they understand what the specification is about. It helps to keep the specification content focused. It helps reviewers determine when the specification is over-stepping its mandate and offers the possibility for revising the specification while it is in development. It also helps readers know the limits or boundaries of the specification and whether it is of interest to them.
Techniques
- Make the scope easy to find.
- Include the scope section in the beginning of the document.
- Make “Scope” an item in the table of contents.
- Write simple, direct statements of fact. Do not include any requirements in the scope section. Use statements such as “This document”:
- — specifies a method of….
- — specifies the characteristics of….
- — defines….
- — establishes a system for….
- — establishes general principles for….
- — is a guide for….
- In addition to describing the subject of the specification, address the following to achieve a more complete scope:
- Applicability of the specification
- Purpose, objectives, and goals
- Types of products or services (i.e., classes of products) to which the specification applies
- Relationship to other specifications or technologies
- What is not in scope, i.e., what the specification is not about
- Limitations on the application of the specification.
Note that it is not necessary to write a separate statement for each of these items; rather, they can be combined.
Examples
Many W3C specifications have included scope prose in the Abstract section. We advocate making the scope a separate section in the body of the specification, making it easy to find, and ensuring that it is an item in the table of contents.
Good Practice 6:
Provide examples, use cases, and graphics.
What does it mean?
Illustrate concepts, behaviors, functionality, interaction, etc. through whatever means make sense, such as examples, use cases, graphics, and sample code. They aid the understanding of the specification, especially areas that are innately complex or which the Working Group has had to explain to W3C Members or the public. Additionally, a set of broad examples and use cases can help to clarify the specification’s scope.
Why care?
It is difficult to understand some concepts, behaviors, functionality, or other aspects of a specification without informative interpretations to aid the reader. Providing the reader with additional information beyond the specification’s prose, can only help in achieving implementation and interoperability.
Techniques
It is up to the Working Group to determine the best way to illustrate the scope and other parts of the specification. Typically, the nature of the specification influences the type of examples, uses cases, graphics, etc. that make sense.
- Develop use cases to illustrate the specification scope. Use easy-to-understand narrative to describe situations that are applicable to the specification.
- Provide examples:
- For each behavior or functionality that was resolved from an issue.
- To illustrate the meaning of abstract notations (e.g., BNF).
- For each chapter in the specification.
- Describe the technology features through numerous examples and complement them by references to the normative texts.
- Reference a non-normative tutorial document that includes informative explanation of concepts, behavior, or functionality.
- Provide non-normative references to resources such as books, specification annotation, test sets. These references provide annotations to the specification, pictorial illustrations, and explanations of specification rules.
Examples
For markup specifications, provide at least one example of each markup construct; illustrate each transformation capability with an example showing input and output.
SVG 1.1 [SVG11]: For each element of the SVG specification, there is a verbose definition of the element, the DTD definition, the attribute definitions and an example. For instance, in the definition of the element rect
, there are precise examples with the markup needed to generate a rectangle, a rendering of the markup as an image to help people visualize it and a separate file with the said markup.
HTML 4.01 [HTML401]: The HTML 4.01 specification, designed in a very educative way, has some very good examples.
Good Practice 7: Write sample code or tests.
What does it mean?
For each feature, the Working Group might seek early implementation to demonstrate the feature. If early implementations are not available (e.g., due to commercial constraints, IPR, etc.), it is beneficial to write test cases to illustrate a concept or use case of the technology. This provides a way to to study the interactions between the different parts of the specification and reveal problems. Additionally, these test cases can be incorporated into a test suite.
Why care?
Developing a partial implementation (sample code) or test cases can provide an understanding of a concept or feature as well as help to keep the concept or feature focused. Partial implementation (sample code) or test cases can save the Working Group and eventually implementers time and resources by:
- Providing examples to illustrate the specification.
- Facilitating issue resolution.
- Helping to have a pre-implementation report at the Candidate Recommendation maturity level.
- Contributing to the development of a complete test suite.
- Encouraging external implementations and therefore a more complete implementation report.
Techniques
- Encourage the development of proofs of
concept implementations of the technology.
- Provide at least one example of each feature, which may also be used as the basis of a future test case.
- Do not put a feature into a specification without the corresponding test cases.
- Create a template for new feature proposals that includes a request for associated test cases.
Examples
The OWL Working Group synchronized the publication of their specification and the publication of the OWL Test Cases [OWL-TEST]. They even went a bit further by making the test case the necessary step to develop a feature with its requirements.
Requirement 3:
Identify who and/or what will implement the specification.
What does it mean? Clearly identify the class of products (i.e., type of products or services) upon which the requirements are imposed. If multiple classes of products are targeted by the specification, make sure each is described. Examples of classes of products include: content, producer of content, player, protocol, API, agent, and guidelines.
Why care? The class of products helps define the scope of the specification and is needed when defining conformance. It also helps the reader know the target of the specification – that is, to discover and focus on what they have turned to the document for and avoid what they may find immaterial.
Techniques
- Give the classes of products in the specification:
- Think about all the types of products or services that will implement this technology, group those that are similar or achieve the same purpose, and determine the generic name for the group. These groups are the classes of products.
- List these classes of products in the specification.
- Describe them as part of the scope.
Examples
The conformance section of Ruby [RUBY] is very explicit and detailed about classes of products. For each of these classes, the Ruby conformance
section defines a set of rules the implementers must
respect. Ruby defines rules for markup, DTD, document, module, generator,
and interpreter.
2.2.3 Normative (and Non-Normative) References
Rarely written in isolation, a specification inherits from previously defined technologies. It also might set the future of other specifications by defining their base. Thus, it is essential to clearly define the nature of references to previous specifications (normative or informative) and the implications of these references for the future of the technology.
Requirement 4: Make a list of normative references.
What does it mean? A specification is rarely developed from scratch: it usually relies on other technologies defined in different specifications. The Working Group has to identify any specifications that define the core technologies of the developed technology.
Why care?
For the Working Group, normative references have an immediate benefit: “Do not reinvent the wheel.” Using features already defined in other documents helps to minimize the size of the specification and to avoid ambiguities by rewriting the same concepts.
Knowing that a part of a specification is based on another technology is a huge benefit for implementers as it clarifies the implications for conformance. Normative references may help implementers to minimize their work by using conformant libraries already implemented elsewhere.
More generally, normative references might help readers understand where the technology is coming from and therefore how to use it in combination with other technologies they may already know.
Examples
Most W3C specifications contain a list of normative references, clearly identified as such, at the end of the document.
Good Practice 8: When imposing requirements by normative references, address conformance dependencies.
What does it mean? Each addition of a normative reference to the specification has deep implications on the technology. Specification editors are responsible for reviewing the consequences in terms of consistency, precision, possible future changes or obsolescence as well as use of the technology under specific conditions.
Why care? A specification defines a technology with a potentially long lifespan. The choice of precise and exact normative references is thus fundamental. Using a normative reference that evolves over time might endanger the specification or other specifications relying on it. A vague reference to the other specification as a whole may leave room for conflicting interpretations or choices among variations permitted by the other specification.
For the Working Group, reducing the degree of ambiguity or variation in the normative references minimizes or removes the possibility of misunderstanding. For implementers, it removes ambiguities and contradictions between different sets of technologies. It creates a stable environment for their development efforts.
For conformance testing to be practical, all requirements need to be unambiguous, including those imposed by normative reference to other specifications.
Examples
For the purpose of illustration, the following cases demonstrate some of the problems and implications that may occur for a theoretical technology using the notion of URI or URI references — this example is not an exhaustive review of all possible cases. The definition of URI and URI references technology exists in a specification called RFC2396 entitled “Uniform Resource Identifiers (URI): Generic Syntax.”
Let us create a simple definition and give examples of possible problems that arise from this definition:
The value of the attribute is a URI as in [RFC2396].
For instance:
…="http://www.example.org/#foo"
…="http://[3ffe:2a00:100:7031::1]/"
…="http://666.666.666.666/"
…="foo"
…="http://www.example.org/~anaïs-nin"
Precise designation and reference: The first example is illegal as the example uses a URI reference as opposed to only a URI; RFC 2396 clearly distinguishes between those constructs. To make the first example a valid construct, the text should have said:
The value of the attribute is a URI reference as defined in section 4 of [RFC2396].
Superset of the reference and interpretation: RFC 2396 does not include support for IPv6 literals; RFC 2732 introduced the syntax but it does not update RFC 2396. It is not correct to assume that it does even if it seems logical. Do not interpret the intention of the external reference.
As a separate example, any specification that defines the behavior of a class of products that creates XML should address XML 1.1 and anticipate future XML versions. In XSLT, creation of XML is specified by <xsl:output method="xml" version="1.0" />
, and each version of XSLT defines the allowable range of values for the version attribute. Another option is to reference the XML Infoset - for instance, XML Inclusions are compatible both with XML 1.0 and XML 1.1 since they reference normatively the XML Infoset, which is the same for the two versions of XML.
2.4 Managing Variability
Specifications allow for variation between conforming implementations for different reasons, e.g., adaptation to hardware capacities and extensibility. Variability, while it can provide for broader usage of the technology, may impede interoperability. Watch out for excessive variability – that which goes beyond the necessary. Look for a balance between what is needed to allow for flexibility while still achieving the desired interoperability.
This section gives advice on finding the right balance; the reader
will also benefit from reading, Variability in Specifications
[VIS] which goes into more detail and the analysis of variability.
2.4.1 Subdivide.
Subdividing the technology should be done carefully. Too many divisions complicates conformance and can hinder interoperability by increasing the chances of conflict with other aspects of the specification (e.g., other subdivisions). Be smart when dividing the technology so that the subdivisions provide a positive impact on implementation and interoperability and the subdivisions are not excessive. The benefits of subdividing should outweigh the drawbacks.
Benefits: Subdividing can:
- Make the technology easier to implement.
- Facilitate incremental implementation.
- Increase interoperability by focusing the technology on specific needs.
- Help organize the structure of the technology.
- Provide better normative guidance than recommended or provide optional features in the “core” spec.
- Provide names for feature bundles, facilitating automated negotiation between sending and receiving products.
Drawbacks: Too many divisions can:
- Complicate conformance by creating the need to account for more interrelationships with other subdivisions and variability (e.g., extensibility).
- Hurt interoperability by increasing the likelihood of incompatible implementations.
- Increase misinterpretation or cause conflict of requirements due to multiple or duplicated requirements.
Good Practice 13:
Create subdivisions of the technology when warranted.
What does it mean?
It may make sense to subdivide the technology into related groups of functionality to target specific constituencies, address specific capabilities or hardware considerations, provide for incremental implementation, facilitate usability, etc., but consider carefully the costs/benefits analysis before doing so.
If the technology is subdivided, indicate what subdivisions exist; if it is not, state that in the conformance section.
Why care?
For some specifications (e.g., huge, multi-disciplined), bundling functionality into named or anonymous packages can:
- Provide an additional level of scoping control.
- Improve readability and the ability to find areas of interest.
- Facilitate implementation and interoperability, since implementing the entire, monolithic specification may be impractical and undesirable.
Techniques
- Use profiles. Profiles are subsets of a technology tailored to meet specific functional requirements of application communities. The specification may define individual profiles, and may also define rules for creating new profiles. An individual profile defines the requirements for classes of products that conform to that profile. Rules for profiles define validity criteria for profiles themselves.
- Use functional levels (a.k.a. levels). Functional levels are a hierarchy of nested subsets, ranging from minimal or core functionality to full functionality. Levels are a good way to facilitate incremental development and implementation.
- Use modules. Modules are discrete collections of semantically-related units of functionality that do not necessarily fit in a simple hierarchical structure. Use modules when functionality can be implemented independently of one another e.g., an audio and a video module. Implementers commonly choose multiple modules to implement.
Examples
In CSS and DOM, levels are the result of progressive historical development and technology enrichment realized in a series of specifications.
Requirement 9:
If the technology is subdivided, then indicate which subdivisions are mandatory for conformance.
What does it mean?
Regardless of the subdivision technique (i.e., profile, level or module) used, state whether one or more of the subdivisions is required for conformance.
Why care?
Subdividing the technology affects and can complicate conformance with all the various combination of choices it provides. Thinking about the various possibilities helps to structure the conformance model, taking into account how the subdivision can affect various classes of products. Implementers as well as users need to know what is mandatory, optional, prohibited or conditional with respect to choosing what to implement and still be conforming.
Techniques
In the conformance clause, list the subdivisions that are mandatory for conformance. To help build this list, consider the following questions for each subdivision:
- Can an implementation conform without implementing the subdivision?
- Does the subdivision apply to specific classes of products and not to others?
- Is the subdivision dependent upon other subdivisions (that is, if it is implemented must others also be implemented)?
Examples
Content can be required to conform to one of the subdivisions (e.g., profiles) or it may be conformant to the specification independently of a subdivision. For example, a question might arise for a producer of content: Is an implementation conforming if it generates content that is otherwise valid but does not conform to the subdivision?
XHTML Modularization [XHTML-MOD]
defines minimal requirements for including certain basic modules when designing an XHTML Modularization-conformant document.
Requirement 10:
If the technology is subdivided, then address subdivision constraints.
What does it mean?
This Requirement is a corollary to Requirement 9. Beyond being mandatory or not, subdivisions usually have conformance consequences due to minimal or new requirements, restrictions, interrelationships, and variability. As part of the conformance clause, describe the constraints associated with each subdivision.
Why care?
Creating subdivisions can get complicated, not just for the specification editors but also for implementers who have to choose from the set of subdivisions. Well-designed subdivisions that convey the conditions, constraints, interrelationships, etc. can improve the clarity and understanding of the specification, conformance to the specification, and facilitate implementation and interoperability.
Techniques
In the conformance clause, describe the conditions or constraints on subdivision usage. To help accomplish this, model or graph the subdivisions indicating what applies from the following list:
- Atomicity of the subdivisions: Show whether each subdivision can be used only as a whole or not.
- Mandatory subdivisions: Label the mandatory subdivisions as such.
- Minimal requirements: List the minimal requirements for each subdivision.
- Dependencies among subdivisions: Show the dependencies and interrelationships of the subdivisions. For example, show the modules that require and build on functionally related modules, i.e., modules that require modules from other functional areas.
- Conditions and constraints on subdivisions groups: Indicate conditions and constraints for combined occurrences of subdivision pairs or groups.
- Conditions or constraints associated with specific classes of products: Indicate which conditions and constraints are applicable to specific classes of products.
- Other conditions or constraints beyond these: Indicate any other conditions or constraints.
Good Practice 14:
If the technology is profiled, define rules for creating new profiles.
What does it mean?
If the specification defines profiles of the technology and allows other profiles to be developed outside of the specification itself, then provide the rules for creating these derived profiles. These profile rules provide instructions for building profiles (e.g., requirements on structure, functionality, encoding, etc.). Derived profiles should not contradict predefined profiles, if there are any in the base specification.
Why care? Well-defined rules facilitate the creation of derived profiles that are well specified, implementable, testable, and can foster better interoperability across profiles. If these rules are defined and followed, then the derived profile would conform to the specification.
Techniques
- Create two particular profiles.
- Identify the common requirements in these two profiles.
- Identify the rules that you have followed to create these profiles and write them down.
- Try to create a third profile using the defined rules.
2.4.2 Optionality and Options
Options in specifications provide implementers the freedom to make
choices about:
- Whether or not to support a well-defined feature.
- Which value or behavior to choose from a well-defined enumerated set of possibilities.
- Implementation-dependent values or features.
These choices, also called discretionary items, give implementers of the technology the opportunity to decide from alternatives when building their applications and tools. They describe or allow optionality of behavior, functionality, parameter values, error handling, etc. They may be considered necessary because of environmental conditions (e.g., hardware limitations or software configuration), locality differences (e.g., language or time zones), dependencies on other technologies, or the need for flexibility.
Although there are perceived benefits to providing optional features, there is also a downside: optional features increase the variations that can exist among
implementations. The greatest way to undo the utility of a specification is with too many optional features. Different implementations may use different combinations of optional features. This makes comparisons between
implementations difficult, complicates conformance testing, and
increases the chance of non-interoperable implementations.
Story:
A concise XSLT 1.0 [XSLT10] example: the specification grants implementers separate discretion about all of the following aspects of creating attributes in the output:
- Whether to raise an error when the supplied name is not a valid
QName
.
- Whether to raise an error when attempting to create an attribute after having created children of the element.
- Whether to raise an error when attempting to create an attribute on a node that is not an element.
- Whether to raise an error when the content of an attribute is not plain text.
- Whether to raise an error when two attribute-sets of the same precedence contain an attribute of the same name.
- Whether to raise an error when attempting to create an attribute directly under the root of a result tree fragment.
In each case, one prescribed behavior exists for an implementation that chooses not to raise an error. Thus, the six separate binary choices give rise to 64 different possible behaviors for conformant processors. Typically, an implementer would be content to make a more global choice about raising errors when there is an attempt to create non-well-formed XML results.
Good Practice 15: Use optional features as warranted.
What does it mean? Examine the reason for the optional feature - does it address a real, existing need? Should it really be optional or should it be made a mandatory part of the specification? Be careful not to provide optional features in anticipation of something that sounds like a good idea but whose implementation is improbable - ask the implementers if they ever plan to need this. Think about the implications of both implementing the optional feature and of not implementing it. Do not make something an option just because the Working Group cannot decide on what to do or cannot reach consensus. As the specification progresses, consider removing unimplemented features.
Why care? A concise list of optional features helps to keep the specification focused and greatly increases the likelihood of obtaining interoperable solutions. Ensuring that only necessary optional features are contained in the specification also makes the job of the implementer easier and reduces costs.
Techniques
- Make a list of use cases with the optional feature.
- Look at the optional feature and each class of products. Is the feature something that this class of products would implement? Consider if it really is an option - perhaps, for this class of products it is not really an option but should be mandatory.
- Develop an analyzer or set of tests to determine the need for options. Use the analyzer/tests to capture what implementations are doing – are they doing the same thing or is there variety and is that variety desired?
Story:
As part of its exit criteria for Candidate Recommendation, a Working Group created a set of tests to “test the specification.” The tests were able to show where there was need for optionality (e.g., when diversity among implementations and flexibility were justified) and where it was possible to narrow the choices (e.g., implementations used a much narrower set of values than those permitted).
Good Practice 16:
Clearly identify optional features.
What does it mean? When introducing an optional feature in the specification, label it as such, so that it is easy to find all the optional features defined in the specification. If there are no optional features, state that in the conformance section.
Why care? Options can be useful, but non-judicious use of optional features increases the variability among conforming implementations. In order to minimize the unnecessary optionality, it is a good idea to provide an easy way to identify them. The use of labels for optional features also helps in constructing pro forma conformance claims, comparisons between two implementations, reports to the W3C Director about implementations, etc.
Techniques
There are many ways to tag options. Any technique that distinguishes the optional feature from the required feature is acceptable. Some possibilities are:
- List optional features in a separate section.
- Specify optional features in a different font (be careful of accessibility and printing problems).
- Include a unique designation to identify the optional feature.
Good Practice 17:
Indicate any limitations or constraints on optional features.
What does it mean? Provide as much information as possible to narrow the allowable choices and to increase predictability. For implementation-dependent values or
features, if possible, provide a range or set of permitted values rather than
leaving those values completely open.
Discuss the implications of either using the optional feature or not. It may be helpful to provide rationale for choosing one option over another or for not using the option at all. Consider the unintended consequence of the optional feature - on other optional features, other parts of the specification, and on other specifications.
Why care? Narrowing choices and increasing predictability enhance the likelihood of interoperability since the implementer chooses from a reduced sample space. Narrowing choices, providing more information, and eliminating incorrect choices increases the chances of correct implementations. An enumerated list of values is one way to constrain the choice of optionality.
Techniques
For optional features, especially enumerated lists, make sure to indicate the number of choices/options available for implementation. Specifically, can none, exactly one, or several of the allowable choices be implemented? Does this number depend on other parts of the specification or other chosen options?
Questions to consider include:
- What effect will implementing the optional feature have on a conforming
implementation? On interoperability?
- Is there any effect or negative consequence if the option is not
implemented?
- Is implementation of the option mandatory?
- Is there a default value for the option?
- Are there any dependencies, that is, can the option only be implemented
if certain conditions are true?
- Are the optional features mutually exclusive, that is, can one option override
and void another?
Examples
In XPath 2.0 [XPATH20] and its associated functions, the Working Group intends to require support for collation by Unicode code-point, and allow implementations to implement as many other collations as they wish.
2.4.3 Extensibility and Extensions
To accommodate changes in technology and information on the Web, a
specification can be designed for extensibility. A specification is
extensible when it provides a mechanism to allow an external party to create
extensions. Extensions incorporate additional features beyond those defined in the specification. However, extensions can compromise
interoperability if there are too many differences between implementations.
Features specifically designed to allow new functionality mitigate the impact of extensions. These features provide a “standard way
to be non-standard” by including hooks, conformance rules, or other
mechanisms by which new functionality may be added in a conforming way, designated as an extensibility mechanism.
Requirement 11:
Address extensibility.
What does it mean? Extensions might be encouraged or discouraged by the Working Group. There is a benefit to addressing the value or danger of using extensibility for the given technology. Formalizing the position of the Working Group in a clearly defined section and prose removes ambiguities for the specification users about the possibility of developing extensions or not. This section should at least address whether the specification is extensible or not.
Why care? Implementers will most likely want to extend functionalities if their specific needs are not defined in the specification. Defining clearly how to hook extended functionalities into conforming implementations helps ensure consistency in the definition of extensions. This leads to predictable handling of extensions and minimizes issues such as interoperability problems, minimal support, and harmonious future development.
The Working Group may consider that the technology is complete, self-sufficient and does not need to be extensible. In this case, it is necessary to write this clearly in the specification and to explain why the technology is not considered extensible. The reason might be just for the social benefit of the community to ensure a maximum interoperability.
Techniques
- Create a section in the specification dedicated to extensibility.
- Call it
Extensions
.
- Make a table of contents entry for it.
- Address the following Good Practices in this section.
Good Practice 18:
If extensibility is allowed, define an extension mechanism.
What does it mean? Extensions increase variability between implementations. Defining a mechanism helps to ensure the definition of extensions are consistent. Consistent extension definitions lead to predictable handling of extensions, including the ability to take appropriate actions (e.g., do the extension, ignore, or take a fallback behavior).
Why care? By planning for extensions and designing a specification for extensibility, there is less chance that extensions will interfere with conformance to the base specification and a better chance at achieving interoperability. Conversely, there may be areas in a specification that would not benefit from extensibility and extensions are strictly forbidden (e.g., permissible characters in XML 1.0 names for elements and attributes [XML10], most of the built-in data types in XML Schema Part 2 [XML-SCHEMA-2]). This is an example of strict conformance. Conformance of an implementation that employs only the requirements and/or functionality defined in the specification and no more defines strict conformance .
Extension mechanisms designed into a specification:
- Provide a stable, useful framework to manage the rapid pace of
technological change.
- Reduce the chances that extensions will interfere with conformance and
increasing the chances for achieving interoperability.
- Provide the ability to “test-drive” new functionality that may
migrate into future specifications.
- Enable implementers to include functionality that they consider a customer requirement.
Techniques
Technology and
application needs dictate the best strategy for enabling
extensibility.
Designing for extensibility can become complicated. Points to
consider that can affect design decisions include, but are definitely not limited to, the following topics.
- Address the use of extensions in the conformance section.
- Provide a well-defined template that implementers can use to create extensions.
- Verify that the extension mechanism prevents the creation of extensions that conflict with the semantics of the specification (see Good Practice 19).
- When needed, define the scope of extensions (e.g., are extensions authorized only for certain parts of the technology?).
- As an example, make a fake extension showing implementers the right way to create an extension.
- Indicate whether extensions interact with other extensions.
- Indicate whether extensions may be combined or are mutually exclusive.
- Indicate whether extensions apply to a specification's profiles or modules and not to the core part of the specification.
- Avoid “untested hooks”: if an extensibility mechanism is defined, make sure it is well tested during the implementation phase. Experience has shown that untested extensibility just does not work.
Examples
Mechanism defined within the specification, extension indicator, error handling instructions
XSLT 1.0 [XSLT10] provides extension mechanisms. They allow an XSLT style sheet to determine
whether a XSLT processor by which it is being processed has implementations of particular extensions available. The extension mechanism also allows its implementer to specify what should happen if their extensions are not available.
XSLT 1.0 defines two Boolean functions: function-available (QName)
and element-available (QName)
that must be present in every implementation. These functions inform the XSLT processor that there is an extension. The XSLT processor can therefore return a value of false. The functions provide handling instructions (e.g., signal an error, perform fallback and do not signal error) if the extension is not available.
WSDL 2.0 [WSDL20] defines binding extension elements which are used to provide information specific to a particular binding. It is a two-part extensibility model based on namespace-qualified elements and attributes. It provides the syntax and semantics for signaling extensions. Extension elements can be marked as mandatory, meaning that they must be processed correctly by the WSDL processor - i.e., either agree to fully abide by all the rules and semantics signaled by the extension or immediate cease processing (fault).
Mechanism based on another specification's extension mechanism
CC/PP exchange protocol based on HTTP Extension Framework [CCPP-EXCHANGE] defines a HTTP extension to exchange
CC/PP descriptions effectively. The CC/PP exchange protocol conforms to
HTTP/1.1 and is a generic extension mechanism for HTTP 1.1 [HTTP11] designed to interoperate with existing HTTP applications. The CC/PP exchange protocol uses an extension declaration to indicate that an extension has been applied to a message and possibly to reserve a part of the header namespace. It provides rules for which of the HTTP Extension Framework [HTTP-EXTENSION] extension declaration strengths and extension declaration scopes to use and defines the syntax and semantics of the header fields.
OWL Reference [OWL-REF] is a vocabulary extension of RDF Semantics (See section 6 in [RDF-MT]). OWL imposes additional semantic conditions on RDF called semantic extensions of RDF. These semantic extensions conform to the semantic conditions for simple interpretations described in the RDF Semantics Recommendation. OWL semantics are consistent with RDF semantics, but when it is understood as RDF, OWL is “incomplete” in contrast to the same OWL when understood as OWL. Thus, by understanding OWL, a process learns more than what it learns from RDF alone, but the additional semantics does not contradict the RDF semantics.
Good Practice 20:
Define error-handling for unknown extensions.
What does it mean? For each class of products affected by an error condition, include error-handling instructions for when an extension is not available or understood.
Why care? When using a strict conforming application, users might have to deal with documents and data considered invalid because they contain errors, or documents extended syntactically. Developers need to know the expected behavior of the application in such contexts.
Techniques
There are typically two approaches (see section 4.2.3 Extensibility from Architecture of the World Wide Web, Volume One [WEB-ARCH]):
- The “must Understand” policy, as implemented in SOAP 1.2 by the
mustUnderstand
attribute. In this approach to error-handling, a processor encountering a syntax token not defined in the specification is required to know how to process the said token or must fail for the whole unit where the token appears.
- The “must Ignore” policy, as implemented in SOAP 1.2 by the
mustIgnore
attribute. In this approach, a processor not knowing how to process an unknown syntax token must skip part or the totality of the unit where the token appears.
A good way to handle these two approaches is to have a way in the syntax to distinguish which behavior is expected (e.g., mustUnderstand
/mustIgnore
attributes in SOAP 1.2). Which policy to choose depends on the importance of the
data processing, user experience with applications based on the
said format, etc.
Do not forget to address all the classes of products. For example, an authoring tool and a rendering tool might behave in different ways.
2.4.4 Deprecation
The need for deprecation comes about when there are features (e.g., a function argument, element, attribute) defined in the specification that have become outdated and are being phased out, usually in favor of a specified replacement. It may mean for instance that the feature is still there and functional, but:
- There is a better way of achieving the same thing and the Working Group prefers that this better way be used, or
- The feature is unused and the Working Group wants to clean up the specification and eventually remove the feature.
From a user point of view, a deprecated feature is one that should not be used anymore, since it may be removed from future versions of the specification. Deprecated features are no longer recommended for use and may become obsolete and no longer defined in future versions of the specification.
Requirement 12:
Identify deprecated features.
What does it mean? If the specified technology has already been published in a previous version of the specification, indicate the features from the previous version that are now deprecated or state in the conformance section that no features were deprecated.
Why care? It helps implementers as well as users to know which features may become obsolete in future versions of the technology. Identifying deprecated features gives them the opportunity to adjust their implementations to phase out the relevant features, and to provide new ways to accomplish the same task.
Techniques
- Create a list of all deprecated features.
- Create a dedicated section for it.
- Create an entry and link in the table of contents for this list.
- For each deprecated feature, create a link to the appropriate definition in the specification.
Examples
HTML 4.01 [HTML401]: The specification has a full list of elements and attributes. The deprecation status appears in both lists. There is an entry in the table of contents to these two lists. Each element and attribute has a link to its definition in the specification.
Requirement 13:
Define how each class of products handles each deprecated feature.
What does it mean? By deprecating a feature, the Working Group indicates its desire that the feature disappear from a future version of the specification. The motivation may be to convert an old feature to a newer one or to remove an old, dangerous, redundant or undesirable feature. Regardless of the reason, it is important to define the effect this has on implementations that may encounter this feature (e.g., consumer products such as user agents or producer products such as authoring tools). How will the user agents or producer products tolerate use of the deprecated feature? Will they signal an error or a warning? Typically, use of a deprecated feature would not affect a consumer (e.g. user agent), while a producer (e.g. authoring tool) should issue a warning.
Why care? Defining how deprecated features are handled provides a smoother transition for the users of the specified technology and ensures more consistency of the behavior across implementations. It is also particularly important for implementations that need to support different versions of the specification.
For instance, a specification may require that an implementation
supports both the features of the new and the old specifications, or it may
suggest a conversion mechanism.
Techniques
- Consider the effect of deprecation on all classes of products that implement the specification (e.g., authoring tools, converters, and user agents).
- Define how deprecation affects conformance.
Good Practice 21:
Explain how to avoid using a deprecated feature.
What does it mean? Deprecating a feature implies that its use is discouraged, often because there is a better technique available to achieve the same result. For each deprecated feature, it is necessary to explain how implementers and users can avoid using it. It might be helpful to give additional information providing insight into the motivation for the deprecation.
Why care? Examples and information about each deprecated feature help users smoothly evolve toward the new version of the technology and understand its benefits. This enables a faster adoption of the technology.
Explanations of deprecation help implementers understand the rationale for implementing the new technology and to implement an alternative mechanism, and can be used in tool tips or conversion scenarios to help users with the transition.
Techniques
- For each deprecated feature, give one or more examples showing the old way and the new way.
Examples
The Namespaces XML
1.1 [NAMESPACES11] deprecation of IRI references includes a link to the deprecation ballot results,
providing background information on the proposal to deprecate, what the deprecation
means with respect to conformance to XML 1.0 and namespaces as well as its
effect on other specifications (i.e., DOM, XPath).
HTML 4.01 [HTML401] gives numerous examples on how to avoid the markup that was used in previous versions for deprecated elements.
Good Practice 22:
Identify obsolete features.
What does it mean? If the specified technology has been published in a previous version of the specification, indicate the features from the previous version that are now obsolete, or state in the conformance section that no features were made obsolete.
Why care? Identifying obsolete features gives a clear message to users and implementers that those obsolete features are forbidden and not part of the specification anymore. This helps to avoid the creation of documents that mix the old and new techniques and that would be invalid.
It also helps avoid name clashing. When creating an extension to a technology, implementers are likely to use a syntax token for their extended features name. Providing the name of obsolete features helps implementers avoid using the names of previous features that are now obsolete.
Techniques
- Create a list of all features that are obsolete.
- Create a dedicated section for it.
- Create an entry and link in the table of contents for this list.
- For each deprecated feature, create a link to the appropriate definition in the previous specification.
Examples
The HTML 4.01 [HTML401] specification has a full list of elements and attributes. The obsolete status appears in both lists. There is an entry in the table of contents to these two lists. Each element and attribute has a link to its definition in the specification.
HTML 4.01, Appendix A: Changes lists obsolete elements and suggests an alternative element for use. The following elements are obsolete: LISTING
, PLAINTEXT
, and XMP
. For all of them, authors should use the PRE
element instead.
2.4.5 Error Handling
Good Practice 23:
Define an error handling mechanism.
What does it mean?
For each class of products affected by an error
condition, address error handling. For instance,
for a language, address what effect an error (be it syntactic or
semantic) in the input has on a processor of this language.
For a protocol, address how a party to this protocol should behave when
a bogus message is received. For an A.P.I., indicate what exceptions are raised.
Why care?
There are many reasons a system may fail; to make a technology reliable,
it is crucial to define how it should react to bogus input or conditions.
Defining error handling also makes it possible for a user of the
technology to react appropriately to the error condition.
Techniques
Different methodologies exist to handle errors in a technology:
- Identifying failure points and binding them with well-known error messages allows better recovery and or reporting of these failures. This methodology is particularly useful in protocols.
- The technology can specify the handling of syntax errors (content that cannot be parsed) and semantic errors (meaningless content) separately or together.
- One should keep in mind that extensibility may need new syntax tokens (see Good Practice 20).
- Try to limit the number of types of error defined by the specification. Also, processing errors of the same kind in the same way allows for greater interoperability.
As all editors know, the work is not finished when the writing is completed. In fact, various reviews and checks of all W3C documents are required prior to their publication and advancement. In addition to the W3C Process Document [PROCESS-DOC] and Publication Rules [PUBRULES] and before Last Call reviews, other techniques improve the quality and clarity of the document. Many of these techniques can be an integrated part of the specification development. Ensuring a quality document prior to external reviews can save time and energy in that the Working Group may get fewer comments and issues to resolve.
3.1 Define an internal publication and review process.
Story:
In 2004, QA Working Group documents entered Candidate Recommendation prior to a thorough
quality review, resulting in a huge number of issues to resolve and an
eventual retreat back to Working Draft for major revisions. Many of the
comments could have been prevented, such as inconsistency and incompleteness of the document (e.g., links to supplementary materials that did not exist or were not complete, overlapping and conflicting requirements), undefined terminology, and unimplementable requirements.
Define (formally or not) an internal process for reviewing and developing new parts of the specifications, and how they appear in W3C technical reports.
The more that the specification work is organized, the more chances there are to move smoothly across W3C process, and to have a better final product. Setting up an internal publication/review process avoids recurrent errors in the document and allows wider participation in the editorial work, making it possible to develop the specification faster.
Make it fun to do quality control on the specification by providing tools and templates. For instance, at the start of work on the specification, create guidelines to help Working Group participants submit proposed text for the specification.
Examples
QA Specification Guidelines: For the Good Practices and Requirements of QA Specification Guidelines, a template and a method were developed to make the editing of each part easy for the QA Working Group to discuss and easy for the editor to incorporate in the final document.
3.2 Do a systematic and thorough review.
Not only should the Working Group review each part of the technology before publication, it should also review it during the editing phase. That helps the Working Group identify missing pieces, spelling mistakes, ambiguities and dependencies. When a well-defined review process is established inside the Working Group, reviews during the editing phase are easy to accomplish.
A Working Draft published with incomplete or very raw sections will probably cause the Working Group to receive many comments. At best, the Working Group will spend much time answering them. At worst, the incomplete text will go unnoticed and appear in the final Recommendation. So when publishing a version with incomplete sections, make clear:
- That those sections are incomplete.
- The group's expectations. Does the group want comments and contributions, or should reviewers ignore these sections?
- Create a simple and light review process. For instance, establish a team, where each person focuses on a different aspect of the specification's correctness.
- Organize at least one review cycle before publication (more if possible).
- Organize the review by topic and expertise. For example, each participant can check a different part of the specification. Or organize the review process by expertise - the grammarian checks for consistency, grammar, spelling and readability; the test builder checks requirements for precision and implementability; the conformance expert checks that conformance criteria exist.
Examples
Multiple editors produced the QA Specification Guidelines. A template ([QA-SPEC-TEMPLATE], archived mail) was produced to guide the editors, ensuring that each Requirement and Good Practice was written consistently and addressed the same set of information. Upon completion of a Requirement or Good Practice, its text was circulated to the entire Working Group for comments. At the same time, the Chair assigned review of that text to a specific Working Group participant. This practice ensured that at least one person in the Working Group had responsibility for that text, and that it would not fall through the cracks.
3.3 Accessibility, Internationalization, and Device Independence Considerations
First and foremost, W3C specifications need to frame and define
technologies that meet the requirements of the particular
deliverable, fulfill the charter of the Working Group, and advance
W3C's mission to extend the exchange of
information through the Web to everyone. Thus, accessibility, internationalization and device independence are
general requirements that must be considered in the specification of
all Web technologies. (Specification developers should consult the technical reports index for an up-to-date profile of W3C publications in all areas.)
The W3C Web Accessibility Initiative (WAI) pursues Web accessibility for people with disabilities through technology, guidelines, tools, education and outreach, and research and development. Essential Components of Web Accessibility and the WAI home page are helpful starting points. Some suggestions on user interface formats are in the Working
Draft XML Accessibility Guidelines [XAG] (work in progress).
Similarly, Working Groups should make sure the technologies they define are
compatible with internationalization (i.e., not specific to a
particular language or culture). The W3C internationalization (I18N) home page is a good place to start. Addressing
internationalization in a specification ensures that the
defined formats and protocols do not create barriers for languages,
writing systems, character codes, and other local conventions employed
by end users of the technology. For information on interoperable text manipulation, refer to the Character Model for the World Wide Web [CHARMOD].
Finally, a W3C specification should support device
independence to the maximum extent possible and appropriate, to allow people of the greatest
diversity to interact with it. The benefit of
addressing device independence is the increased
likelihood that a specification and its implementations can be accessed from any device, in any
context, by anyone. A good place to start is the
W3C device independence home page.
A Working Group should designate participants to monitor the application of accessibility, internationalization and device independence to their
specifications at the earliest point possible. These participants can be the points of
contact with the relevant W3C Activities and can seek feedback on their group's
adopted solutions.
The keywords “MUST”, “MUST NOT”, “REQUIRED”, “SHALL”, “SHALL NOT”, “SHOULD”, “SHOULD NOT”, “RECOMMENDED”, “MAY”, and “OPTIONAL” are used as defined in RFC 2119 [RFC2119] in this conformance clause. Occurrences of these words in bold lowercase have normative implications. A specific markup has been added to the text.
The conformance model of the QA Framework: Specification Guidelines is very simple.
- It applies to one class of products – W3C technical reports, with a strong focus on normative specifications. Non-W3C specifications may also utilize it.
- It is monolithic – no modules, levels or profiles are defined.
- It has only one conformance label, called Specification Guidelines conformant specification.
- It has optional features, but the optional features do not affect conformance.
- It allows extensions, but the extensions do not affect conformance.
The conformance requirements of this document are found in the Requirements and in the Good Practices. The Requirements are written in the imperative voice and denote mandatory conformance requirements. They are equivalent to the familiar MUST statements in the RFC2119 style. In addition to Requirements, this document contains Good Practices. Good Practices use the same imperative voice, but are optional. They are equivalent to SHOULD or RECOMMENDED statements in the RFC2119 style. Their implementation or non-implementation does not affect conformance to this Specification Guidelines document, but implementation of as many as possible is recommended, because the quality of the specification will benefit.
For a specification to be Specification Guidelines conformant, all Requirements must be implemented.
One way to satisfy the Requirements and Good Practices is to implement one or more of the suggested techniques given for each Requirement and Good Practice. Note that this is not the only way to satisfy the Requirement or Good Practice. An implementation conformance statement (ICS) helps track implemented Requirements and Good Practices. It takes the form of a checklist [QA-SPEC-ICS]. If all the Requirements are checked on the ICS as being satisfied, then conformance can be claimed as detailed below.
4.2 Normative Parts
The Conformance section, the Normative References section, the Requirements, and the Good Practices are the normative parts of this specification. All the other parts are informative. The following list indicates the normativity of the guidelines subsections.
4.3 Specification Guidelines Extensibility
This specification is extensible. That is, adding conformance-related information and structure to the document in ways beyond what is presented as Requirements in this specification, is allowed and encouraged. Extensions to this specification must not contradict or negate the requirements in this specification.
4.4 Conformance Claims
To claim conformance to the QA Framework: Specification Guidelines, Working Groups must specify:
You can claim conformance to this document by using this conformance claim and replacing the content holders delimited by square brackets by the appropriate values:
On [date of the publication], this specification [name of the specification] published at [URI of the specification], edited by [name of the publishing entity], is a Specification Guidelines conformant specification, 28 April 2005, published at http://www.w3.org/TR/2005/WD-qaframe-spec-20050428/, as detailed in the Implementation Conformance Statement published at [URI of the completed ICS].
5. Acknowledgments
The following QA Working Group and Interest Group participants have
contributed significantly to the content of this document:
- Tim Boland (NIST)
- Jeremy Caroll (HP)
- Patrick Curran (Sun Microsystems)
- Dimitris Dimitriadis (Ontologicon)
- Karl Dubost (W3C)
- Dominique Hazaël-Massieux (W3C)
- Lofton Henderson (CGM Open)
- Björn Höhrmann
- Richard T. Kennedy (Boeing)
- Susan Lesch (W3C)
- David Marston (IBM Research)
- Lynne Rosenthal (NIST)
- Mark Skall (NIST)
- Andrew Thackrah (Open Group)
- Olivier Théreaux (W3C).
6. References
Normative References
- RFC2119
- IETF RFC 2119: Key words for use in RFCs to Indicate Requirement Levels, S. Bradner, March 1997. Available at
http://www.ietf.org/rfc/rfc2119.txt .
-
CCPP-EXCHANGE
- CC/PP exchange protocol based on HTTP Extension Framework, Hidetaka Ohto, Johan Hjelm, Editors, W3C Note, 24 June 1999, http://www.w3.org/1999/06/NOTE-CCPPexchange-19990624 . Latest version available at http://www.w3.org/TR/NOTE-CCPPexchange .
-
CCPP-VOCAB
- Composite Capability/Preference Profiles (CC/PP): Structure and Vocabularies 1.0, L. Tran, F. Reynolds, M. H. Butler, C. Woodrow, J. Hjelm, H. Ohto, G. Klyne, Editors, W3C Recommendation, 15 January 2004, http://www.w3.org/TR/2004/REC-CCPP-struct-vocab-20040115/ . Latest version available at http://www.w3.org/TR/CCPP-struct-vocab/ .
- CHARMOD
-
Character Model for the World Wide Web 1.0: Fundamentals, F. Yergeau, R. Ishida, M. Wolf, M. J. Dürst, T. Texin, Editors, W3C Recommendation, 15 February 2005, http://www.w3.org/TR/2005/REC-charmod-20050215/ . Latest version available at http://www.w3.org/TR/charmod/ .
- CONF-TEMPLATE
- Specification Guidelines Conformance Clause Template, Lofton Henderson, Lynne Rosenthal, 30 August 2004, available at http://www.w3.org/QA/2004/08/SpecGL-template-root.html .
-
CSS20
- Cascading Style Sheets, level 2 (CSS2) Specification, H. Lie, I. Jacobs, C. Lilley, B. Bos, Editors, W3C Recommendation, 12 May 1998, http://www.w3.org/TR/1998/REC-CSS2-19980512/ . Latest version available at http://www.w3.org/TR/REC-CSS2/ .
-
CSS21
- Cascading Style Sheets, level 2 revision 1, T. Çelik, I. Hickson, H. Lie, B. Bos, Editors, W3C Candidate Recommendation (work in progress), 25 February 2004, http://www.w3.org/TR/2004/CR-CSS21-20040225 . Latest version available at http://www.w3.org/TR/CSS21 .
-
CSS3-SYNTAX
- CSS3 module: Syntax, L. Baron, Editor, W3C Working Draft (work in progress), 13 August 2003, http://www.w3.org/TR/2003/WD-css3-syntax-20030813/ . Latest version available at http://www.w3.org/TR/css3-syntax .
-
CSS-TEST-DOC
- CSS Test Suite Documentation, Tantek Çelı̇k, Ian Hickson, 29 January 2003, http://www.w3.org/Style/CSS/Test/testsuitedocumentation-20030129.html .
Latest version available at http://www.w3.org/Style/CSS/Test/testsuitedocumentation.html .
-
DOM-CORE-3
- Document Object Model (DOM) Level 3 Core Specification, P. Le Hégaret, G. Nicol, L. Wood, M. Champion, J. Robie, S. Byrne, A. Le Hors, Editors, W3C Recommendation, 7 April 2004, http://www.w3.org/TR/2004/REC-DOM-Level-3-Core-20040407/ . Latest version available at http://www.w3.org/TR/DOM-Level-3-Core/ .
- EARL
- Evaluation and Report Language (EARL) 1.0, W. Chisholm, S. B. Palmer, Editors, W3C Working Draft (work in progress), 6 December 2002, http://www.w3.org/TR/2002/WD-EARL10-20021206/ . Latest version available at http://www.w3.org/TR/EARL10/ .
-
EDITOR
- W3C Editors' Home Page, W3C Communications Team, Available at http://www.w3.org/2003/Editors/ .
-
EXT-SPECGL
-
QA WIKI
Extension Speclite, Available at http://esw.w3.org/topic/ExtensionSpeclite .
-
HTML401
- HTML 4.01 Specification, A. Le Hors, D. Raggett, I. Jacobs, Editors, W3C Recommendation, 24 December 1999, http://www.w3.org/TR/1999/REC-html401-19991224/ . Latest version available at http://www.w3.org/TR/html401/ .
-
HTML401-TEST
- HTML 4.01 Test Suite, Available at http://www.w3.org/MarkUp/Test/HTML401/ .
-
HTTP-EXTENSION
- IETF An HTTP Extension Framework, H. Nielsen, P. Leach, S. Lawrence, February 2000. Available at http://www.ietf.org/rfc/rfc2774.txt .
- HTTP11
- IETF RFC 2616:
Hypertext Transfer Protocol — HTTP/1.1, J. Gettys, J. Mogul, H.
Frystyk, L. Masinter, P. Leach, T. Berners-Lee, June 1999. Available at
http://www.ietf.org/rfc/rfc2616.txt .
- IETF-FORMAL
- Guidelines for the use of formal languages in IETF specifications, IESG Statement (work in progress), October 2001. Available at http://www.ietf.org/IESG/STATEMENTS/pseudo-code-in-specs.txt .
- ISO-GUIDE
- ISO/IEC Guide 2:2004 Standardization and related activities - General vocabulary. (See http://www.iso.ch/iso/en/CatalogueDetailPage.CatalogueDetail?CSNUMBER=39976 for the latest version.)
-
MANUAL-STYLE
- W3C Manual of Style Susan Lesch et al., Available at http://www.w3.org/2001/06/manual/ .
-
MATHML20
- Mathematical Markup Language (MathML) Version 2.0 (Second Edition)
, P. Ion, R. Miner, D. Carlisle, N. Poppelier, Editors, W3C Recommendation, 21 October 2003, http://www.w3.org/TR/2003/REC-MathML2-20031021/ . Latest version available at http://www.w3.org/TR/MathML2/ .
-
NAMESPACES11
- Namespaces in XML 1.1, R. Tobin, T. Bray, A. Layman, D. Hollander, Editors, W3C Recommendation, 4 February 2004, http://www.w3.org/TR/2004/REC-xml-names11-20040204/ . Latest version available at http://www.w3.org/TR/xml-names11/ .
-
OWL-REF
- OWL Web Ontology Language Reference, M. Dean, G. Schreiber, Editors, W3C Recommendation, 10 February 2004, http://www.w3.org/TR/2004/REC-owl-ref-20040210/ . Latest version available at http://www.w3.org/TR/owl-ref/ .
-
OWL-TEST
- OWL Web Ontology Language Test Cases, J. De Roo, J. J. Carroll, Editors, W3C Recommendation, 10 February 2004, http://www.w3.org/TR/2004/REC-owl-test-20040210/ . Latest version available at http://www.w3.org/TR/owl-test/ .
- PROCESS-DOC
- World Wide Web Consortium Process Document, Ian Jacobs, 5 February 2004, http://www.w3.org/2004/02/Process-20040205/ Latest version available at http://www.w3.org/Consortium/Process/ .
- PUBRULES
- World Wide Web Consortium Publication Rules, 2 February 2004, http://www.w3.org/2004/02/02-pubrules Latest version available at http://www.w3.org/Guide/pubrules .
- QA-GLOSSARY
- Comprehensive glossary of QA terminology.
(Under construction, at http://www.w3.org/QA/glossary.)
- QA-HANDBOOK
-
The QA Handbook, L. Henderson, Editor, W3C Working Group Note (work in progress), 22 November 2004, http://www.w3.org/TR/2004/NOTE-qa-handbook-20041122/ . Latest version available at http://www.w3.org/TR/qa-handbook/ .
- QA-SPEC-ICS
-
QA Specification Guidelines ICS, K. Dubost, L. Rosenthal, D. Hazaël-Massieux, L. Henderson, 17 August 2005, http://www.w3.org/TR/2005/REC-qaframe-spec-20050817/specgl-ics.html
- QA-SPEC-TEMPLATE
-
QA Specification Guidelines Template, Karl Dubost, 10 June 2004, http://lists.w3.org/Archives/Public/www-qa-wg/2004Jun/0023.html
-
RDF-MT
- RDF Semantics, P. Hayes, Editor, W3C Recommendation, 10 February 2004, http://www.w3.org/TR/2004/REC-rdf-mt-20040210/ . Latest version available at http://www.w3.org/TR/rdf-mt/ .
-
RUBY
- Ruby Annotation, T. Texin, M. Suignard, M. Ishikawa, M. Sawicki, M. J. Dürst, Editors, W3C Recommendation, 31 May 2001, http://www.w3.org/TR/2001/REC-ruby-20010531/ . Latest version available at http://www.w3.org/TR/ruby/ .
-
SMIL20
- Synchronized Multimedia Integration Language (SMIL 2.0) - [Second Edition], E. Hodge, P. Hoschka, K. Kubota, J. van Ossenbruggen, E. Hyche, M. Jourdan, L. Rutledge, B. Saccocio, W. ten Kate, P. Schmitz, R. Lanphier, N. Layaïda, J. Ayars, T. Michel, D. Bulterman, D. Newman, A. Cohen, K. Day, Editors, W3C Recommendation, 7 August 2001, second edition published on 7 January 2005, http://www.w3.org/TR/2005/REC-SMIL2-20050107/ . Latest version available at http://www.w3.org/TR/SMIL/ .
-
SOAP12-TA
- SOAP
version 1.2 Test Assertions, Available at http://www.w3.org/TR/2003/REC-soap12-testcollection-20030624/ .
-
SVG-MOBILE
- Mobile SVG Profile: SVG Tiny, Version 1.2, O. Andersson, J. Ferraiolo, V. Hardy, D. Jackson, A. Quint, Editors, W3C Working Draft (work in progress), 13 April 2005, http://www.w3.org/TR/2005/WD-SVGMobile12-20050413/ . Latest version available at http://www.w3.org/TR/SVGMobile12/ .
-
SVG-TINY
-
Mobile SVG Profiles: SVG Tiny and SVG Basic
, T. Capin, Editor, W3C Recommendation, 14 January 2003, http://www.w3.org/TR/2003/REC-SVGMobile-20030114/ . Latest version available at http://www.w3.org/TR/SVGMobile/ .
-
SVG11
- Scalable Vector Graphics (SVG) 1.1 Specification, 藤沢 (Fujisawa Jun), J. Ferraiolo, D. Jackson, Editors, W3C Recommendation, 14 January 2003, http://www.w3.org/TR/2003/REC-SVG11-20030114/ . Latest version available at http://www.w3.org/TR/SVG11/ .
-
VIS
- Variability in Specification, D., L. Rosenthal, W3C Working Draft, 29 June 2005, http://www.w3.org/TR/2005/WD-spec-variability-20050629/ . Latest version available at http://www.w3.org/TR/spec-variability/ .
-
W3C-GLOSSARY
- W3C Glossary and Dictionary, http://www.w3.org/2003/glossary/
-
WCAG10
- Web Content Accessibility Guidelines 1.0, G. Vanderheiden, W. Chisholm, I. Jacobs, Editors, W3C Recommendation, 5 May 1999, http://www.w3.org/TR/1999/WAI-WEBCONTENT-19990505/ . Latest version available at http://www.w3.org/TR/WAI-WEBCONTENT/ .
-
WEB-ARCH
- Architecture of the World Wide Web, Volume One, N. Walsh, I. Jacobs, Editors, W3C Recommendation, 15 December 2004, http://www.w3.org/TR/2004/REC-webarch-20041215/ . Latest version available at http://www.w3.org/TR/webarch/ .
-
WEBCGM10
- WebCGM 1.0 Second Release, R. Platon, J. Gebhardt, L. Henderson, D. Weidenbrueck, D. Cruikshank, Editors, W3C Recommendation, 17 December 2001, http://www.w3.org/TR/2001/REC-WebCGM-20011217/ . Latest version available at http://www.w3.org/TR/REC-WebCGM/ .
-
WIKI-FORMAL-LANGUAGE
- QA WIKI Formal Language vs Prose, Available at http://esw.w3.org/topic/FormalLanguageVsProse .
-
WIKI-GOOD-BAD
- QA WIKI Extensibility Good Or Bad, Available at http://esw.w3.org/topic/ExtensibilityGoodOrBad .
-
WIKI-NORMATIVE-REF
- QA WIKI Normative References, Available at esw.w3.org/topic/NormativeReferences .
-
WIKI-MEANING-BEHAVIOR
- QA WIKI Meaning versus Behavior, Available at http://esw.w3.org/topic/MeaningVsBehavior .
-
WIKI-RFC-KEYWORDS
- QA WIKI RFC Keywords, Available at http://esw.w3.org/topic/RfcKeywords .
-
WIKI-TESTABLE-NOT
- QA WIKI Testable Or Not, Available at http://esw.w3.org/topic/TestableOrNot .
-
WSDL20
- Web Services Description Language (WSDL) Version 2.0 Part 1: Core Language, J. C. Schlimmer, R. Chinnici, M. Gudgin, S. Weerawarana, J. Moreau, Editors, W3C Working Draft (work in progress), 3 August 2004, http://www.w3.org/TR/2004/WD-wsdl20-20040803/ . Latest version available at http://www.w3.org/TR/wsdl20/ .
- XAG
- XML Accessibility Guidelines, C. McCathieNevile, S. B. Palmer, D. Dardailler, Editors, W3C Working Draft (work in progress), 3 October 2002, http://www.w3.org/TR/2002/WD-xag-20021003 . Latest version available at http://www.w3.org/TR/xag .
-
XHTML-MOD
- Modularization of XHTML™, M. Altheim, F. Boumphrey, S. McCarron, S. Schnitzenbaumer, T. Wugofski, S. Dooley, Editors, W3C Recommendation, 10 April 2001, http://www.w3.org/TR/2001/REC-xhtml-modularization-20010410/ . Latest version available at http://www.w3.org/TR/xhtml-modularization/ .
-
XHTML10
- XHTML™ 1.0 The Extensible HyperText Markup Language (Second Edition), S. Pemberton, Editor, W3C Recommendation, 1 August 2002, http://www.w3.org/TR/2002/REC-xhtml1-20020801/ . Latest version available at http://www.w3.org/TR/xhtml1/ .
-
XML-SCHEMA-1
- XML Schema Part 1: Structures Second Edition, D. Beech, M. Maloney, H. S. Thompson, N. Mendelsohn, Editors, W3C Recommendation, 28 October 2004, http://www.w3.org/TR/2004/REC-xmlschema-1-20041028/ . Latest version available at http://www.w3.org/TR/xmlschema-1/ .
-
XML-SCHEMA-2
- XML Schema Part 2: Datatypes Second Edition, P. V. Biron, A. Malhotra, Editors, W3C Recommendation, 28 October 2004, http://www.w3.org/TR/2004/REC-xmlschema-2-20041028/ . Latest version available at http://www.w3.org/TR/xmlschema-2/ .
-
XML-TEST
- Extensible Markup Language (XML) Conformance Test Suites, Available at http://www.w3.org/XML/Test/ .
-
XML10
- Extensible Markup Language (XML) 1.0 (Third Edition), E. Maler, J. Paoli, F. Yergeau, T. Bray, C. M. Sperberg-McQueen, Editors, W3C Recommendation, 4 February 2004, http://www.w3.org/TR/2004/REC-xml-20040204/ . Latest version available at http://www.w3.org/TR/REC-xml/ .
-
XMLSPEC
- The XML Spec Schema and Stylesheets, Available at http://www.w3.org/2002/xmlspec/ .
-
XPATH20
- XML Path Language (XPath) 2.0
, A. Berglund, S. Boag, D. Chamberlin, M. F. Fernández, M. Kay, J. Robie, J. Siméon, Editors, W3C Working Draft (work in progress), 4 April 2005, http://www.w3.org/TR/2005/WD-xpath20-20050404/ . Latest version available at http://www.w3.org/TR/xpath20/ .
-
XQUERY-SEMANTICS
- XQuery 1.0 and XPath 2.0 Formal Semantics, M. F. Fernández, K. Rose, D. Draper, M. Rys, J. Siméon, P. Wadler, P. Fankhauser, A. Malhotra, Editors, W3C Working Draft (work in progress), 4 April 2005, http://www.w3.org/TR/2005/WD-xquery-semantics-20050404/ . Latest version available at http://www.w3.org/TR/xquery-semantics/ .
-
XSLT10
- XSL Transformations (XSLT) Version 1.0
, J. Clark, Editor, W3C Recommendation, 16 November 1999, http://www.w3.org/TR/1999/REC-xslt-19991116 . Latest version available at http://www.w3.org/TR/xslt .
Further Reading
The following references have been inspirational to the ideas captured in this document.
- Making Better Standards, ETSI Protocol and Testing Competence Centre, http://portal.etsi.org/mbs/ .
- What is a good standard?, B. Bos, 6 March 2003, http://www.w3.org/People/Bos/DesignGuide/introduction .
- The essentials of a specification, T. Berners-Lee, 24 May 1999, http://www.w3.org/1999/09/specification .
- IETF RFC 2360: Guide for Internet Standards Writers, G. Scott, Editor, June 1998, http://www.ietf.org/rfc/rfc2360.txt .
7. Glossary
- class of products
- The generic name for the group of products or services that would
implement, for the same purpose, the specification, (i.e., target of
the specification). A specification may identify several classes of
products.
- conformance
- Fulfillment by a product, process, systems, or service of a specified
set of requirements.
- conformance clause
- A section of the specification that defines the requirements,
criteria, or conditions to be satisfied by an implementation in order to
claim conformance.
- deprecated feature
- An existing feature that has become outdated
and is in the process of being phased out,
usually in favor of a specified replacement.
Deprecated features are no longer recommended
for use and may cease to exist in future
versions of the specification.
- dimensions of variability (DoV)
- The ways in which different products that are conformant to a
specification may vary among themselves.
- discretionary item
- Deliberate and explicit grants of discretion by the specification to
the implementations that describe or allow optionality of behavior,
functionality, parameter values, error handling, etc.
- extensible
- The ability of a specification to accept extensions in a defined way.
A specification is extensible if it provides a mechanism for any party
to create extensions.
- extension
- The ability to incorporate additional functionality beyond what is
defined in the specification. It broadens the possibility of the
technology.
- implementation
- An implementation is a realization of a technology in accordance to the principles defined in the technical specifications for this technology. This implementation can be a document, product, application, process, service, system, or other entity.
- implementation conformance statement (ICS)
- A questionnaire or checklist for providing information about an implementation to a specification, by presenting in a uniform manner the implemented capabilities (e.g., functions, features) and options as well as limitations of the implementation.
- informative
- Text in a specification whose purpose is informational or assistive in the understanding or use of the specification, and which contains no conformance requirements or test assertions.
- level
- A technology subset that is one of a hierarchy of nested subsets, ranging from minimal or core functionality to full or complete functionally.
- module
- A collection of semantically related features that represents a unit of functionality.
- normative
- Text in a specification which is prescriptive or contains conformance requirements.
- obsolete feature
- An existing or deprecated feature that has ceased to
exist and that is listed for historical purpose.
- profile
- A subset of a technology that is tailored to meet specific functional requirements of a particular application community.
- specification
- Document that prescribes requirements to be fulfilled by a product, process, or service.
- strict conformance
- Conformance of an implementation that employs only the requirements
and/or functionality defined in the specification and no more (i.e., no
extensions to the specification are implemented).
- test assertion
- A measurable or testable statement of behavior, action, or condition. It is derived from the specification's requirements.
- testability
- A proposition is testable if there is such a procedure that assesses the truth-value of a proposition with a high confidence level.