Skip to content

Commit f26adf6

Browse files
authored
Merge pull request #770 from package-url/Update-documentation-to-match-ECMA-427
Update docs/standard documentation to match ECMA-427 PDF. Added docs/README-docs.md to document the process for matching our markdown file content to the PDF with some formatting differences. Merging without other approvals after thorough review by @johnmhoran.
2 parents 7d058c0 + 1ebda1a commit f26adf6

16 files changed

+360
-1019
lines changed

PURL-SPECIFICATION.rst

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
The contents of this file: purl-spec/PURL-SPECIFICATION.rst have been moved
2-
to markdown files in `purl-spec/docs/ <docs/>`__. See the file: `purl-specification.md <purl-specification.md>`__ at
3-
the root of this repository for the most current version of content equivalent
4-
to PURL-SPECIFICATION.rst as generated from the current documentation files in
5-
purl-spec/docs/ .
2+
to markdown files in `purl-spec/docs/ <docs/>`__. See also the Package-URL
3+
Specification 1st Edition standard at:
4+
https://ecma-international.org/publications-and-standards/standards/ecma-427/.

docs/README-docs.md

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
This README explains the organization of documentation files for the PURL
2+
specification.
3+
4+
## ECMA-427 documentation
5+
The `purl-spec/docs/standard` folder has markdown files with text that match
6+
the content of [ECMA-427](https://ecma-international.org/publications-and-standards/standards/ecma-427/)
7+
which is the first edition of the Package-URL Specification standard. These
8+
files map to ECMA-427 document as follows:
9+
10+
- Introduction: `introduction.md`
11+
- About this specification: `about.md`
12+
- Clause 1 Scope: `scope.md`
13+
- Clause 2 Conformance: `conformance.md`
14+
- Clause 3 Normative references: `references.md`
15+
- Clause 4 Overview: `overview.md`
16+
- Clause 5 Package-URL specification: `specification.md`
17+
- Clause 6 Package-URL Type Definition Schema: `type-definition-schema.md`
18+
19+
ECMA-427 is the official documention for the 1st edition of the Package-URL
20+
(PURL) Specification standard. The source for this documentation is located
21+
at: https://github.com/Ecma-TC54/ECMA-427/blob/main/spec.html. The text from
22+
this HTML file is processed with several Ecma tools to produce a PDF file that
23+
is available from: https://tc54.org/purl/. We validated the text in the files
24+
in the `purl-spec/docs/standard` folder against the PDF.
25+
26+
The text stored in
27+
purl-spec/docs/standard/` matches the official text with following exceptions:
28+
- The text does not include the clause numbering from ECMA-427. This
29+
numbering is automatically added by the Ecma tools for publishing an Ecma
30+
standard.
31+
- `docs/standard/type-definition-schema.md` only has the introductory text
32+
from ECMA-427 Clause 6 because Clause 6 presents the PURL Type Definition
33+
Schema in a "human-friendly" format that is difficult to reproduce in
34+
markdown. The equivalent information is in this repository in JSON Schema
35+
format: at `purl-spec/schemas/purl-type-definition.schema-1.0.json`
36+
- There are some minor formatting differences such as the examples in Clause 5
37+
and the use of italics instead of intra-document links.
38+
39+
The purpose of keeping a copy of the ECMA-427 text here is to make it easier
40+
to track any proposed changes to the PURL specification that will affect
41+
the ECMA-427 Standard. Any such changes need to be tracked and approved for
42+
a future 2nd edition of the ECMA-427 Standard.
43+
44+
## PURL specification documentation
45+
The other files in the `purl-spec/docs` folder are also specification
46+
documentation, but they are not part of the ECMA-427 1st edition Standard.
47+
Most of the documents provide information to support implementation of the
48+
PURL Specification in other software or databases.
49+

docs/purl-spec-toc.md

Lines changed: 0 additions & 24 deletions
This file was deleted.

docs/standard/about.md

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,22 @@
11
# About this Specification
22

3-
The document at [https://tc54.org/ecmaXXX/](https://tc54.org/ecmaXXX/) is the
3+
The document at [https://tc54.org/ecm427/](https://tc54.org/ecma427/) is the
44
most accurate and up-to-date Package-URL specification.
55

6-
This document is available as [a single page](https://ecma-tc54.github.io/ECMA-xxx-PURL/)
7-
and as [multiple pages](https://ecma-tc54.github.io/ECMA-xxx-PURL/multipage/).
6+
This document is available as [a single page](https://ecma-tc54.github.io/ECMA-427/)
7+
and as [multiple pages](https://ecma-tc54.github.io/ECMA-427/multipage/).
88

99
# Contributing to this Specification
1010

1111
This specification is developed on GitHub with the help of the Package-URL
1212
community. There are a number of ways to contribute to the development of
1313
this specification:
1414

15-
* GitHub Repository: [https://github.com/Ecma-TC54/ECMA-xxx-PURL](https://github.com/Ecma-TC54/ECMA-xxx-PURL)
16-
* Issues: [All Issues](https://github.com/Ecma-TC54/ECMA-xxx-PURL/issues),
17-
[File a New Issue](https://github.com/Ecma-TC54/ECMA-xxx-PURL/issues/new)
18-
* Pull Requests: [All Pull Requests](https://github.com/Ecma-TC54/ECMA-xxx-PURL/pulls),
19-
[Create a New Pull Request](https://github.com/Ecma-TC54/ECMA-xxx-PURL/pulls/new)
15+
* GitHub Repository: [https://github.com/Ecma-TC54/ECMA-xxx-PURL](https://github.com/Ecma-TC54/ECMA-427)
16+
* Issues: [All Issues](https://github.com/Ecma-TC54/ECMA-427/issues),
17+
[File a New Issue](https://github.com/Ecma-TC54/ECMA-427/issues/new)
18+
* Pull Requests: [All Pull Requests](https://github.com/Ecma-TC54/ECMA-427/pulls),
19+
[Create a New Pull Request](https://github.com/Ecma-TC54/ECMA-427/pulls/new)
2020
* Editors:
2121
* [John Horan](mailto:jmhoran@aboutcode.org)
2222
* [Michael Herzog](mailto:mjherzog@aboutcode.org)
@@ -25,5 +25,5 @@ this specification:
2525
* Community:
2626
* Chat: [Slack Channel](https://cyclonedx.slack.com/archives/C06KTE3BWEB)
2727

28-
Refer to the [colophon](https://ecma-tc54.github.io/ECMA-xxx-PURL/#sec-colophon)
28+
Refer to the [colophon](https://ecma-tc54.github.io/ECMA-427/#sec-colophon)
2929
for more information on how this document was created.

docs/standard/characters-and-encoding.md

Lines changed: 0 additions & 64 deletions
This file was deleted.

docs/standard/components.md

Lines changed: 0 additions & 117 deletions
This file was deleted.

docs/standard/conformance.md

Lines changed: 16 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -1,51 +1,29 @@
1-
# 2 Conformance
1+
# Conformance
22

3-
## 2.1 Requirements Terminology
4-
5-
In this standard, the words that are used to define the significance of each
6-
requirement are detailed below. These words are used in accordance with their
7-
definitions in [RFC 2119](https://www.ietf.org/rfc/rfc2119.txt), and their
8-
respective meanings are reproduced below:
9-
10-
* Must: This word, or the adjective “required” and the auxiliary verb
11-
"shall", means that the item is an absolute requirement of the standard.
12-
* Should: This word, or the adjective “recommended”, means that there might
13-
exist valid reasons in particular circumstances to ignore this item, but
14-
the full implications should be understood and the case carefully weighed
15-
before making an implementation decision.
16-
* May: This word, or the adjective “optional”, means that this item is truly
17-
optional.
18-
19-
The words "must not", "shall not", "should not", and "not recommended", are
20-
the negative forms of "must", "shall", "should", and "recommended",
21-
respectively. There is no negative form of "may".
22-
23-
## 2.2 Implementation Conformance
24-
25-
A conforming implementation of Package-URL (PURL) must fully implement and
26-
support all elements defined within this specification, including the syntax,
3+
A conforming implementation of Package-URL (PURL) shall fully implement and
4+
support all elements defined within this Standard, including the syntax,
275
components, and semantic requirements for constructing and interpreting valid
286
PURLs.
297

30-
A conforming implementation of PURL must adhere to the syntax defined in this
31-
specification, ensuring that all PURLs are parsed, constructed, and validated
32-
according to the prescribed rules. The implementation must provide full
8+
A conforming implementation of PURL shall adhere to the syntax defined in this
9+
Standard, ensuring that all PURLs are parsed, constructed, and validated
10+
according to the prescribed rules. The implementation shall provide full
3311
support for ecosystem-agnostic behaviour, enabling PURLs to function
3412
consistently and reliably across diverse environments.
3513

36-
All required components of a PURL, such as the scheme, type, and name, must
14+
All required components of a PURL, such as the scheme, type, and name, shall
3715
be present and validated according to the rules defined in this
38-
specification. Additionally, optional components, including qualifiers and
39-
subpaths, must be handled appropriately if provided, in full compliance with
16+
Standard. Additionally, optional components, including qualifiers and
17+
subpaths, shall be handled appropriately if provided, in full compliance with
4018
their specified behaviours.
4119

42-
Implementations must ensure that equivalent PURLs are consistently resolved
20+
Implementations shall ensure that equivalent PURLs are consistently resolved
4321
to the same canonical representation. This includes strict adherence to
44-
normalisation and equivalence rules. Furthermore, implementations must
22+
normalisation and equivalence rules. Furthermore, implementations shall
4523
process URI encoding and decoding for PURL components according to the
4624
standards outlined in RFC 3986.
4725

48-
Invalid PURLs that fail to conform to the specification must be identified
26+
Invalid PURLs that fail to conform to the specification shall be identified
4927
and rejected by any conforming implementation. This guarantees the integrity
5028
and reliability of PURLs in all supported contexts.
5129

@@ -56,19 +34,8 @@ implementations may offer auxiliary tools or features, such as utilities for
5634
constructing or validating PURLs, provided they align with the standard's
5735
requirements.
5836

59-
A conforming implementation must not redefine or alter the core syntax,
60-
components, or semantics defined by this specification. Any prohibited
61-
extensions explicitly identified in the specification must not be
37+
A conforming implementation shall not redefine or alter the core syntax,
38+
components, or semantics defined by this Standard. Any prohibited
39+
extensions explicitly identified in the specification shall not be
6240
implemented. Furthermore, behaviours that compromise the interoperability of
63-
PURLs across tools, platforms, or ecosystems are strictly disallowed.
64-
65-
A conforming implementation of Package-URL may choose to implement or not
66-
implement Normative Optional subclauses. If any Normative Optional behaviour
67-
is implemented, all of the behaviour in the containing Normative Optional
68-
clause must be implemented. A Normative Optional clause is denoted in this
69-
specification with the words "Normative Optional" in a coloured box, as shown
70-
below.
71-
72-
## 2.3 Example Normative Optional Clause Heading
73-
74-
Example clause contents.
41+
PURLs across tools, platforms, or ecosystems are strictly disallowed.

0 commit comments

Comments
 (0)