Differences between the two Registry proposals

This document compares the proposal for Registries written by David Signer in the w3c wiki (hereafter DSWK) with the one written by fantasai and Florian Rivoal in Pull Request 335 against the Process (hereafter FFPR).

FFPR equivalents to DSWK clauses

This table lists all the text in DSWK, and compares it with corresponding clauses in FFPR.

Text from the wiki Commentary Text from the Process branch
Definition

A Registry is a data set that documents logically independent 'atoms'; conceptually a table with independent rows, and rules for the values in the columns (e.g. that values in a column be drawn from a defined set).

Roughly equivalent Registries

A registry documents a data set consisting of one or more associated registry tables, each table representing an updatable collection of logically independent, consistently-structured registry entries.

There are four conceptual elements in a Registry:
  1. Registries are always owned by, or incorporated directly into, a Referencing Document (though the registry may be referenced by other documents as well, fo course). (Roughly, the spec. that has some aspect (e.g. a field, an attribute value) for which registration of new values needs to be possible.)
  2. Registries are defined by a Registry Definition. Contains the definition of and requirements for the registry values.
  3. Published Registry values. The formal published location, which URLs referring to registry values (e.g. notably from the Referencing Document) point to.
Roughly equivalent A registry has three associated components:
  • one or more registry tables, holding the data set represented by the registry
  • the rules of the registry, defining how the registry tables are structured and maintained
  • one or more referencing specifications, which make use of the registry
  1. Registry values management. This is where the registry values are maintained, and so on.
This concept is equivalent to the Editors Draft, which isn't a concept discussed in the Process, so doesn't need to be mentioned in the Process. N/A
Published Registry values MUST be in /TR (the place we publish all formal publications of the W3C), Roughly equivalent. (The formal definition of a technical report is something published on TR. No need to redefine TR.) Registries can be published either as a stand-alone technical report called a registry report, or incorporated as part of a W3C Recommendation as a registry section.
and are purely documentational and contain no requirements on implementers. Roughly equivalent. FFPR defines interaction with the Patent Policy more explicitly. A registry report or registry section, is purely documentational, contains no requirements on implementers, and is not subject to the licensing commitments of the W3C Patent Policy.

They are updated following the (approved) process for that registry as defined in the Registry definition.


Hence changes to the Registry other than managing entries are all controlled by the update process for the Registry definition.

FFPR very explicitly allows updating the values in the registry without invoking all the Process machinery of updating a REC track document (provided the rules of the registry are followed); DSWK wording is unclear about these interactions. Updating Registry Tables

As long as they are in accordance with the rules of the registry, changes to the contents of a registry table (.e. Class 5 changes) can be made by re-publishing the technical report that contains the affected table, without needing to satisfy any other requirements for the publication (not even Working Group consensus, unless this is required by the rules of the registry). Such registry changes do not trigger new Advisory Committee Reviews, nor new Exclusion Opportunities, and do not require Director’s approval, even for technical reports at maturities where this would normally be expected. Such publications can be made even in the absence of a Working Group chartered to maintain the registry when the custodian is another entity.

The W3C may publish a list of W3C Registries. Doing this is nice, but W3C is allowed to do this even if it's not listed in the Process, so this sentence seems unnecessary. N/A
Combined Publication

We are currently discussing which of these elements can be combined. Examples include: 1+2) Referencing Document + Registry Definition, and have a pointer to the Published Registry. (This is like the IETF, where RFCs typically document a technology, and say which fields are open to registration, and under what conditions, but the registry values themselves are at IANA). (Some do not like this practice, others do).

2+3) Registry Definition + Published Registry. This would be the case where it makes sense to define a registry as a stand-alone Recommendation in its own right.

1+2+3) Referencing Document + Registry Definition + Published Registry. This would be suitable for ’small’ tables for which the current values and the definitions can easily be inlined into the spec. (“thing-type: a value drawn from the thing-type registry; current values and the procedures for registering a new thing-type can be found in Annex G”). You could insert the Published Registry as an iframe, for example.

  • This is not Process text, just a discussion of possibilities for Issue 354
  • The possibility outlined for 2+3 suggests that the full REC track would be used, even though some aspects of it aren't relevant; FFPR started with this position, but currently defines a separate track in order to a) avoid invoking the Patent Policy and all of its machinery, including Calls for Exclusions, on a document that it can't apply to and b) simplify the track by removing the CR phase, which checks an implementation requirement that doesn't exist on registries
  • 1+2+3 is allowed by the earlier allowance for including a registry section in a REC ("Registries can be … incorporated as part of a W3C Recommendation as a registry section").

See Maturity Levels of Registry Reports which is a simplified form of the REC track, for the 2+3 case.

1+2+3 is handled by Updating Registry Tables together with Registry Reports

Referencing Document requirements

The Referencing Document

  1. MUST contain all normative statements and information that affect implementations and the conformance of implementations. It must not be possible that a change to the Registry values affect the conformance of implementations to the Referencing document; if there are values that must be implemented, or any other such restrictions, they must be documented in the document without reference to the registry.
The Process specifies requirements on the technical report in question, not specifications that reference it, so FFPR says that the registry must not contain ... but makes no requirements about the referencing document. A registry report or registry section, is purely documentational, contains no requirements on implementers, and is not subject to the licensing commitments of the W3C Patent Policy.
  1. may either contain the registry or have a reference to the registry, where to view it
Both proposals allow incorporation into the referencing documents; as for cross references, they are always allowed. Registries can be ... incorporated as part of a W3C Recommendation as a registry section.
Registry Definition requirements
  1. contain a section defining the registry that must
    1. state that it is a Registry per the W3C Process,
    2. identify the Custodian. The Custodian can be the W3C group that owns the Referencing Document, the team if no such W3C group exists, or some other entity.
    3. define the fields of its table of items,
    4. define the policy and procedure for changes (additions, and deletions or modifications if they are permitted); how to request a registration, what information is required, and what criteria must be met
  2. contain all requirements and normative language related to the registry; the rules for values (logically, the column values) in each entry (e.g. uniqueness, matching to a value from some other specification or registry, etc.)
  3. contain documentation on the policy and mechanisms for changes to existing entries:
    1. can entries be retired (deleted) or deprecated?
    2. can entries be changed after being published?
    3. if entries can be deleted, can any code-points be re-used, or are they 'reserved' indefinitely?
  4. provide the location of the published Registry values, and the Registry management.
  5. provide any restrictions on links to other publications, e.g. that the specification be
    1. publicly available (as opposed to company-private, for example)
    2. freely available (no cost)
    3. published by a recognized standards body
    4. a W3C publication
  6. document any requirements of evidence of implementability, implementation, interoperability, etc.
Roughly equivalent. DSWK includes more examples, which should go into /Guide in either case, the technical report must: Clearly label the registry report/section and its tables as such, including a link to this section of the Process.
The rules of the registry define what each registry table is and how it is maintained. They must:
  • Define the scope and purpose of the registry table.
  • Define the fields of the registry table and their constraints (e.g. values must be drawn from a defined set, or be unique, or only reference publicly available resources, etc.)
  • Define the method and critera by which changes are proposed, approved, and incorporated. (For example, a registry could define that changes to registry entries can be proposed using a particular web form or email address, that registry entries can be added but not changed, or that they do or do not need to be approved by any member of a particular Working Group.)
  • Identify the custodian of the registry table: the entity to which requests for registry changes must be sent, and which is responsible for evaluating whether such requests satisfy the criteria defined in the rules of the registry.

    The custodian may be the Working Group, the Team, or a delegated entity. The custodian for all registry tables in a single registry should generally be the same entity.

Registry definitions are approved through the same, or stronger, process as the Referencing Document for that registry (i.e. and specifically, if the Referencing Document is a W3C Recommendation, then the Registry Definition is also a Recommendation, while a W3C Referencing Document that is a Note may, of course, have a Registry Definition that is a Recommendation).
  • Generally speaking, documents referencing a technical report should not be determining the status of the technical report or the process that governs its evolution. This is backwards, and also raises weird questions like, what if you have multiple ones, what if some are not W3C documents, what if the first one is a Note but then later a REC wants to reference it too…
  • Allowing Registry definitions in Notes seems pointless: the values can only be updated according to the rules, but the rules can change at anytime. It pretty much boils down to the registry being a Note. We need a registry process for when Notes aren't good enough, otherwise just use a Note and put "Registry" in the title.
N/A
If the defined process is followed, changes to the values, and publication to the registry values, should be automatic and rapid. We agree that there should be tooling for publishing things, and that publication tooling should be automatic and rapid. This is not unique to the Registries, and belongs in a Tooling Policy, not in the Process. N/A
Published Registry values requirements

The Registry values

  1. must only be updated when conforming to the rules in the associated Registry Definition.
FFPR more detailed As long as (and only if) they are in accordance with the rules of the registry, changes to the contents of a registry table (.e. Class 5 changes) can be made by re-publishing the technical report that contains the affected table, without needing to satisfy any other requirements for the publication (not even Working Group consensus, unless this is required by the rules of the registry). Such registry changes do not trigger new Advisory Committee Reviews, nor new Exclusion Opportunities, and do not require Director’s approval, even for technical reports at maturities where this would normally be expected. Such publications can be made even in the absence of a Working Group chartered to maintain the registry when the custodian is another entity.
  1. must not contain any normative statements (must, should, etc.).
effectively equivalent A registry report or registry section, is purely documentational, contains no requirements on implementers
  1. if it is not embedded in the referencing document or registry definition, must contain a link back to the registry definition (which contains the rules etc.) and should contain a link back to the referencing document (for which it is a registry), if that document is separate;
  2. may contain informative material, including descriptions of the various values ('columns') and their meaning
  3. must contain or reference the information on how to request updates (a new entry or any other permitted changes).
  1. current FFPR doesn't allow splitting values from definitions. If it did allow, it would need an equivalent
  2. Needing repeat information that exists in the registry definition in the values because they have been split into separate publications is a clear indication that they should not have been split (and is a good way for things to get out of sync), so this should not be necessary / allowed.
  3. Ditto.
N/A
  1. may contain a machine-readable copy (e.g. CSV file) which MUST match the human-readable copy of the same version of the Published registry
FFPR allows machine-readable copy in place of as well as in addition to the human-readable copy, and additionally requires that the rules define the format. …include the entire contents of each registry table, either inline in the report (e.g. formatted as a table, or list, or other appropriate representation), or in a machine-readable file published as part of the technical report, or (preferably) both.
Registry management requirements

(Note that this probably should apply to the development of any W3C publication. The general rules are currently unstated.)

The Registry management must be a location that is suitable for development of a W3C publication. The rules are currently unstated but probably should be stated for the general case, and not specifically for registries. Registry management must

  • have the ability to file bug reports (aka issues)
  • support history tracking (so we can see what was changed when, by whom, etc.)
  • have backups maintained by the W3C (so if there is a disc crash or the service goes down, we don't lose)
  • must be setup in such a way that review (cross-functional, wide, AC, review for example) can be managed using automatic notifications, e.g. sending notifications and periodic summaries to interested populations;
  • be such that the development tool/site are to be accessible (a) to those needing accessible access and (b) to our community internationally.

(A scrapable Wiki may be suitable here, while a Wiki is probably not suitable for document management generally.)

Agreed, this is not unique to the Registries; it belongs in a Tooling Policy, not in the Process. N/A

Missing from DSWK

The following statements are found in FFPR, but have no equivalent in DSWK.

Text from the wiki Commentary Text from the Process branch
N/A FFPR makes sure that if machine readable formats are used, they are well defined. Include, if the registry table is provided in a machine-readable file, a definition of the format of that file.
N/A Offered as a convenience to users. Could be removed if found to be exessively constraining, as the Team could provide this even if it wasn't required to; however, it was added because it was listed as a clear requirement by proponents of a W3C registries process, including David Singer. The Team must make available a means for interested parties to be notified of any updates to a registry table.
N/A Additional process text to allow for automation is not needed, since there's no reason it would be banned. Instead FFPR just highlights the possibility in a note. Note: Since the Process does not impose requirements on changes to the contents of a registry table other than those imposed by the rules of the registry, acceptance of proposed registry changes on behalf of the custodian and publication of an updated registry report that contains only registry changes since the previous publication can be automated if satisfaction of those rules can be automatically verified.
N/A Clarification on whether it is possible/desirable for different tables in the same registry to have different custodians. Could easily be changed in case of disagreement on this topic. The custodian for all registry tables in a single registry should generally be the same entity.
N/A If W3C would like to use the full Recommendation track, thus having less Process text, but more process in practice, we will think it:s a poor trade-off, but won't object. :) Dropping this section would result in the entire proposal fitting within two A4 pages. Seciton "6.4.4. Maturity Levels of Registry Reports"