Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Draft boilerplate text #243

Merged
merged 9 commits into from
Jul 21, 2023
4 changes: 4 additions & 0 deletions .pr-preview.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
{
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This file should be named as boilerplate/registry/.pr-preview.json instead of placed at the top directory?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I didn't know that could work. There's an index.html in the top directory too, which is for the TTWG homepage. I've added .pr-preview.json to the location you suggested as well. But I think PR Preview only does one preview per repo, as far as I know. tobie/pr-preview#18 is open to support multiple specs per repo, but as you can see from the response to my comment, it's awaiting resource.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ah, I thought this boilerplate/registry directory was for ready-to-copy respec template to create new repository (e.g. making new repository like w3c/tt-profile-registry). If so, this file should be at the same directory as this template, but not at the top of this repository. OR, If this PR is really to put at the top of this repository with pointing index.html, I propose to use html for type, instead of respec.
As pointed, pr-preview does handle only one file in each repository, yes.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

That's a good point, having the .pr-preview.json file there does no harm, I think, and means there is something ready to copy. I think it's fine to leave it there and keep the type as respec, while understanding that PR Preview won't actually work with it in the current location.

"src_file": "index.html",
"type": "respec"
}
4 changes: 4 additions & 0 deletions boilerplate/registry/.pr-preview.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
{
"src_file": "index.html",
"type": "respec"
}
7 changes: 7 additions & 0 deletions boilerplate/registry/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
See https://github.com/w3c/ttwg/discussions/241 for
the motivation and discussion of this boilerplate registry document
for TTWG use.

The boilerplate is a Respec document,
though the text content can be reused
within any other document.
297 changes: 297 additions & 0 deletions boilerplate/registry/index.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,297 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>TTWG Registry Boilerplate</title>
<script
src="https://www.w3.org/Tools/respec/respec-w3c"
class="remove"
defer
></script>
<script class="remove">
// All config options at https://respec.org/docs/
var respecConfig = {
specStatus: "RY",
editors: [{ name: "Nigel Megitt", w3cid: "64750", mailto: "nigel.megitt@bbc.co.uk", url: "", company: "British Broadcasting Corporation", companyURL: "https://www.bbc.co.uk" }],
github: "w3c/ttwg",
shortName: "ttwgreg",
edDraftURI: "https://w3c.github.io/ttwg/boilerplate/registry",
group: "wg/timed-text",
wgPublicList: "public-tt",
xref: ["w3c-process"],
localBiblio: {
ttwg: {
title: "Timed Text Working Group",
href: "https://www.w3.org/AudioVideo/TT/"
}
}
};
</script>
</head>
<body>
<section id="abstract">
<p>This is a boilerplate Registry Definition as required by [[w3c-process]] for <a>w3c registries</a>.</p>
<p>The intent is that this boilerplate can form the basis of <a>w3c registries</a> for
the W3C <dfn data-abbr="TTWG"><a href="https://www.w3.org/AudioVideo/TT/">Timed Text Working Group</a></dfn>.</p>
<p>See discussion <a href="https://github.com/w3c/ttwg/discussions/241">w3c/ttwg#241</a> for
details of the assumptions made to generate this document.</p>
</section>
<section id="sotd">
<p>This document is intended to be the basis of other <a>w3c registries</a>
published by TTWG and is not intended to be published as a <a>w3c registry</a> itself.
The following SOTD text is auto-generated by the Respec tool to reflect
what an actual <a>registry definition</a> document would contain.</p>
</section>
<section class="informative">
<h2>Introduction</h2>
<p>Replace the text in this section with some
informative introductory text about this Registry.</p>
<p>This document is intended to be used as the basis for <a>w3c registries</a> for
the W3C <a>TTWG</a>.
The [[w3c-process]] sets out requirements for such <a>w3c registries</a>,
and defines core concepts like
<dfn data-cite="w3c-process#registry-definition">registry definition</dfn>
and <dfn data-cite="w3c-process#registry-table">registry table</dfn>.</p>
<p><a>Registry definitions</a> need to fulfil certain criteria,
including specifying custodianship, the change process,
and defining the <a>registry table</a> itself.</p>
<p>The text in the <a href="#registry-definition"></a> section can be
used to meet those criteria and allow more rapid creation of
registries without having to create new text each time.</p>
<p>This document also includes appendix <a href="#application-checklist"></a>
to facilitate adoption.</p>
</section>
<section id="registry-definition">
<h2>Registry Definition</h2>
<p>This section specifies the <a>registry definition</a>, consisting of
the custodianship, change process and
the core requirements of a <a>registry table</a>.
</p>
<section id="custodianship">
<h3>Custodianship</h3>
<p>The <dfn data-cite="w3c-process#custodian">custodian</dfn> of this <a>w3c registry</a> is the <a>TTWG</a>.
If the <a>TTWG</a> is unable to fulfil the role of <a>custodian</a>,
for example if it has been <a data-cite="w3c-process#GeneralTermination">closed</a>,
the <a>custodian</a> in lieu is the <a>W3C Team</a>.
</p>
<p class="issue" data-number="244"></p>
</section>
<section id="change-process">
<h3>Change Process</h3>
<section id="requesting-a-change">
<h4>Requesting a change</h4>
<p>Changes to this <a>W3C Registry</a> MUST be requested (the <dfn>change request</dfn>)
using any one of the following options:</p>
<ul>
<li>Open an issue on the <a>registry table</a>'s version control system;</li>
<li>Send an email to the <a>TTWG</a>'s public email reflector
<a href="mailto:public-tt@w3.org">public-tt@w3.org</a></li>
</ul>
<p>The <a>change request</a> MUST include enough information for the <a>custodian</a>
to be able to identify all of:</p>
<ul>
<li>The <a>registry table</a>;</li>
<li>The <a>registry entries</a> being proposed for addition;</li>
<li>The <a>provisional</a> <a>registry entries</a> for which changes are being proposed;</li>
<li>The <a>registry entries</a> being proposed for a <a>status</a> change;</li>
<li>Details of the requested changes for each <a>registry entry</a>;</li>
<li>The motivation for making the requested changes;</li>
<li>Any other supporting information, for example real world usage statistics;</li>
</ul>
<p>The proposer of the change MAY open a pull request (or equivalent) on
the <a>registry table</a>'s version control system, with that pull request
containing the proposed changes. If a pull request is opened then
a corresponding issue MUST also be opened and
the pull request MUST be linked to that issue.</p>
<aside class="note">A pull request representing the proposals made in the <a>change request</a>
is required before <a>TTWG</a> review can proceed.</aside>
</section>
<section id="change-request-assessment">
<h4>Change request assessment process</h4>
<p>The process for assessing a <a>change request</a> depends on the <a>custodian</a>.</p>
<section id="ttwg-change-request-assessment">
<h5>Custodian is TTWG</h5>
<p>If the <a>custodian</a> is the <a>TTWG</a>:</p>
<ul>
<li>If the change proposer did not open a pull request
on the <a>registry table</a>'s version control system,
then assessment is paused until a TTWG member
has opened such a pull request,
which MUST represent the requested changes
and MUST be linked to a related issue.</li>
<li>The TTWG follows its Decision Policy to review
the proposal in the pull request.</li>
<li>At the end of the Decision Review Period
if a TTWG Chair declares that there is consensus to approve,
the <a>change request</a> is approved.</li>
<li>In the absence of consensus to approve the expectation is
that a discussion will happen, to include the
change requester.
The result of this discussion can be any one of:
<ol>
<li>the <a>change request</a> is abandoned;</li>
<li>the <a>change request</a> is modified for another review;</li>
<li>if the discussion resolves the objections,
and a TTWG Chair declares consensus to approve,
the <a>change request</a> can be approved.</li>
</ol>
</li>
</ul>
<p>An approved <a>change request</a> is enacted by merging its
related pull request into the <a>registry table</a>'s version control system
and publishing the updated version of the <a>registry table</a>.</p>
</section>
<section id="team-change-request-assessment">
<h5>Custodian is the W3C Team</h5>
<p>If the <a>custodian</a> is the <a>W3C Team</a>,
the Team MUST seek <a>wide review</a> of the <a>change request</a> and
offer a review period of at least 4 weeks,
before assessing from the responses received
if there is consensus amongst the respondents.</p>
<p>The Team MAY require a pull request on the <a>registry table</a>'s
version control system to be
opened as the basis of the review.
</p>
<p>If there is such consensus,
the Team MUST make the proposed changes.</p>
</section>
</section>
</section>
<h3>Registry Table(s)</h3>
<p>This section defines constraints on <a>registry tables</a>.
Each <a>registry table</a> consists of a set of
<dfn data-cite="w3c-process#registry-entry" data-lt="registry entry|registry entries">registry entries</dfn>.</p>
<p>The <a>registry table</a> MUST provide a link to the version control system against
which any issues and pull requests can be opened.</p>
<section id="registry-entries">
<h4>Registry Entries</h4>
<p>Each <a>registry entry</a> has a <a>status</a>, a unique <dfn>key</dfn>, and
if appropriate, other <dfn>fields</dfn>, for example any notes,
a description, or a reference to some other
defining entity.
</p>
<p>The <a>registry table</a> definition MUST define
the <a>fields</a> and the <a>key</a> to be used
in each <a>registry entry</a>.</p>
<aside class="note">It is possible to use any <a>field</a>
or combination of <a>fields</a> as the <a>key</a>.
For example a <a>field</a> called "4 Character Code"
might be used as the <a>key</a>.
Another example is two fields called "Short name" and
"Revision number" which, in combination,
might be used as the <a>key</a>.
</aside>

<section id="registry-entry-status">
<h5>Status</h5>
<p>The <a>registry entry</a> <dfn>status</dfn> field reflects the maturity of that entry.
Permitted values are:</p>
<pre>
Provisional
Final
Deprecated
</pre>
<p>No other values are permitted.</p>
<section id="provisional-entry">
<h6>Provisional</h6>
<p><a>Registry entries</a> with a <a>status</a> of <dfn><code>Provisional</code></dfn> MAY be changed or deleted.
Their <a>status</a> may be changed to <a><code>Final</code></a> or <a><code>Deprecated</code></a>.</p>
<p><a>Registry entry</a> <a>keys</a> in <a><code>Provisional</code></a> entries
that were later deleted MAY be reused.</p>
<p>Newly created <a>registry entries</a> SHOULD have <a>status</a> <a><code>Provisional</code></a>.</p>
</section>
<section id="final-entry">
<h6>Final</h6>
<p><a>Registry entries</a> with a <a>status</a> of <dfn><code>Final</code></dfn> MUST NOT be deleted or changed.
Their <a>status</a> MAY be changed to <a><code>Deprecated</code></a>.</p>
<p><a>Registry entry</a> <a>keys</a> in <a><code>Final</code></a> entries MUST NOT be reused.</p>
<p>Newly created <a>registry entries</a> MAY have <a>status</a> <a><code>Final</code></a>.</p>
</section>
<section id="deprecated-entry">
<h6>Deprecated</h6>
<p><a>Registry entries</a> with a <a>status</a> of <dfn><code>Deprecated</code></dfn> MUST NOT be deleted or changed.
Their <a>status</a> MAY be changed to <a><code>Final</code></a>
unless that would result in a duplicate <a>key</a> within the set of entries whose
<a>status</a> is either <a><code>Provisional</code></a> or <a><code>Final</code></a>.</p>
<p><a>Registry entry</a> <a>keys</a> in <a><code>Deprecated</code></a> entries
that were previously <code>Provisional</code> and never <a><code>Final</code></a>
MAY be reused.</p>
<p><a>Registry entry</a> <a>keys</a> in <a><code>Deprecated</code></a> entries
that were previously <a><code>Final</code></a> MUST NOT be reused.</p>
<p>Newly created <a>registry entries</a> MUST NOT have <a>status</a> <a><code>Deprecated</code></a>.</p>
</section>
</section>
</section>
</section>
<section id="registry-table">
<h2>Registry Table(s)</h2>
<p>This section contains the <a>registry table</a>, i.e. the set of <a>registry entries</a>.</p>
<table class="simple">
<thead>
<th>Key</th>
<th>Status</th>
<th>Other fields</th>
<th>Notes</th>
</thead>
<tbody>
<tr>
<td>abc1</td>
<td>Provisional</td>
<td></td>
<td>This key reuses one that was deprecated without being Final</td>
</tr>
<tr>
<td>abc2</td>
<td>Final</td>
<td></td>
<td>This entry cannot be changed, but it can be Deprecated.</td>
</tr>
<tr>
<td>abc1</td>
<td>Deprecated</td>
<td></td>
<td>This was never made Final, and now it cannot be, because its key has been reused.</td>
</tr>
</tbody>
</table>
</section>
<section id="conformance">
<p>
No conformance requirements are permitted in <a>registry tables</a>.
If there are conformance requirements associated with
<a>registry entries</a>, then they must be defined in the
referencing specification.
</p>
<section id="referencing-specifications">
<h3>Referencing Specifications</h3>
<p>Although the formal definition of a Registry includes
the referencing specifications,
there is no need to list those referencing specifications
in the Registry itself; doing so is optional.
Listing referencing specifications carries an
additional maintenance overhead.
</p>
</section>
</section>

<section id="index" class="appendix">
<!-- All the terms will magically appear here -->
</section>

<section class="appendix" id="application-checklist">
<h2>Checklist for applying this boilerplate to a real Registry</h2>
<p>When adopting this boilerplate for use in a Registry,
the following checklist may be helpful:</p>
<ul>
<li>Make a copy of this boilerplate and work on it in the appropriate repository;</li>
<li>Write introductory text explaining the Registry, it's purpose and expected usage;</li>
<li>Check that the custodianship rules are correct;</li>
<li>Check that the change process is correct;</li>
<li>Define the registry entry <a>fields</a>;</li>
<li>Define which of the <a>fields</a> is/are used as the <a>key</a>;</li>
<li>Create a table and populate it with any known values;</li>
<li>Update any referencing specifications to link to it.</li>
</ul>
</section>
</body>
</html>