CARVIEW |
You are here
1EdTech Versioning Framework
Spec Version 1.0
Document Version: | 1 |
Date Issued: | October 23rd, 2023 |
Status: | This document is made available for adoption by the public community at large. |
This version: | https://www.imsglobal.org/spec/versions/v1p0/ |
Latest version: | https://www.imsglobal.org/spec/versions/latest/ |
Errata: | https://www.imsglobal.org/spec/versions/v1p0/errata/ |
IPR and Distribution Notice
Recipients of this document are requested to submit, with their comments, notification of any relevant patent claims or other intellectual property rights of which they may be aware that might be infringed by any implementation of the specification set forth in this document, and to provide supporting documentation.
1EdTech takes no position regarding the validity or scope of any intellectual property or other rights that might be claimed to pertain implementation or use of the technology described in this document or the extent to which any license under such rights might or might not be available; neither does it represent that it has made any effort to identify any such rights. Information on 1EdTech's procedures with respect to rights in 1EdTech specifications can be found at the 1EdTech Intellectual Property Rights webpage: https://www.imsglobal.org/ipr/imsipr_policyFinal.pdf .
Use of this specification to develop products or services is governed by the license with 1EdTech found on the 1EdTech website: https://www.imsglobal.org/speclicense.html.
Permission is granted to all parties to use excerpts from this document as needed in producing requests for proposals.
The limited permissions granted above are perpetual and will not be revoked by 1EdTech or its successors or assigns.
THIS SPECIFICATION IS BEING OFFERED WITHOUT ANY WARRANTY WHATSOEVER, AND IN PARTICULAR, ANY WARRANTY OF NONINFRINGEMENT IS EXPRESSLY DISCLAIMED. ANY USE OF THIS SPECIFICATION SHALL BE MADE ENTIRELY AT THE IMPLEMENTER'S OWN RISK, AND NEITHER THE CONSORTIUM, NOR ANY OF ITS MEMBERS OR SUBMITTERS, SHALL HAVE ANY LIABILITY WHATSOEVER TO ANY IMPLEMENTER OR THIRD PARTY FOR ANY DAMAGES OF ANY NATURE WHATSOEVER, DIRECTLY OR INDIRECTLY, ARISING FROM THE USE OF THIS SPECIFICATION.
Public contributions, comments and questions can be posted here: https://www.imsglobal.org/forums/ims-glc-public-forums-and-resources .
© 2023 1EdTech™ Consortium, Inc. All Rights Reserved.
Trademark information: https://www.imsglobal.org/copyright.html
Abstract
1EdTech/IMS Global published its first specification in 1999. To date some one hundred new specifications and new versions of specifications have been published. Apart from the actual specification documentation, 1EdTech release many other artifacts to support the adoption of those specifications. These artifacts are also subject to revision. In many cases, education technology systems support more than one version of a specification. 1EdTech Ecosystems are composed, simultaneously, of many specifications and several versions and profiles of those specifications. Therefore, a clear and consistent versioning scheme is essential to enable the EdTech sector to track, exploit and audit expected interoperability capabilities enabled by the use of the 1EdTech specifications and related artifacts.
The set of principles for versioning within 1EdTech are based upon Semantic Versioning [SEMVER]. The [SEMVER] document addresses versioning for Public APIs. Within 1EdTech, the associated principles of Semantic Versioning have been applied more broadly and will be used when versioning specifications, documents, specification artifacts, reference implementation software releases, etc. The versioning nomenclature uses:
- MAJOR version when incompatible changes are made;
- MINOR version when functionality is added in a backwards compatible manner;
- PATCH version when backwards compatible bug fixes are made.
For 1EdTech, the versioning framework addresses the following perspectives:
- Specification - the version of the specification itself;
- Specification Documentation - the version of the documentation that contains the definition of the specification in the context of the version of the specification;
- Other Specification Artifacts - the version of the artifacts created to support the adoption of the specification in the context of the version of the specification;
- 1EdTech Common Data Model - the versioning of the definitive set of common data and service models that provide the foundation of the 1EdTech specifications;
- Software - versioning of the set of software components, tools and systems that are used to support the adoption and adaptation of the 1EdTech specifications.
1. Introduction
1.1 Scope and Context
1EdTech published its first specification in 1999. To date some one hundred new specifications and new versions of specifications have been published. Apart from the actual specification documentation, 1EdTech release many other artifacts to support the adoption of those specifications. These artifacts are also subject to revision. In many cases, EdTech systems support more than one version of a specification. 1EdTech Ecosystems are composed, simultaneously, of many specifications and several versions and profiles of those specifications. Therefore, a clear and consistent versioning scheme is essential to enable the EdTech sector to track, exploit and audit expected interoperability capabilities enabled by the use of the 1EdTech specifications and related artifacts.
Versioning must be addressed from several perspectives, namely:
- Specification - the version of the specification itself;
- Specification Documentation - the version of the documentation that contains the definition of the specification in the context of the version of the specification;
- Other Specification Artifacts - the version of the artifacts created to support the adoption of the specification in the context of the version of the specification;
- 1EdTech Common Data Model (CDM) - the versioning of the definitive set of common data and service models that provide the foundation of the 1EdTech specifications;
- Software - versioning of the set of software components, tools and systems that are used to support the adoption and adaptation of the 1EdTech specifications.
This Versioning Framework document MUST be cited, and used, in the appropriate artifacts created as part of the 1EdTech specification development process and other related processes. In some circumstances it may be appropriate to not follow the defined versioning mechanisms: in such cases a clear justification MUST be supplied alongside the citation of this document.
1.2 Conformance Statements
As well as sections marked as non-normative, all authoring guidelines, diagrams, examples, and notes in this specification are non-normative. Everything else in this specification is normative.
The key words MAY, MUST, MUST NOT, NOT REQUIRED, OPTIONAL, RECOMMENDED, REQUIRED, SHALL, SHALL NOT, SHOULD, and SHOULD NOT in this document are to be interpreted as described in [RFC2119].
An implementation of this specification that fails to implement a MUST/REQUIRED/SHALL requirement or fails to abide by a MUST NOT/SHALL NOT prohibition is considered nonconformant. SHOULD/SHOULD NOT/RECOMMENDED statements constitute a best practice. Ignoring a best practice does not violate conformance but a decision to disregard such guidance should be carefully considered. MAY/OPTIONAL statements indicate that implementers are entirely free to choose whether or not to implement the option.
1.3 Structure of this Document
The structure of the rest of this document is:
2. SEMANTIC VERSIONING | Introduction and definition of the core principles to be used for versioning. These principles are based upon Semantic Versioning [SEMVER]. |
3. VERSIONING OF SPECIFICATIONS | Description of the application of the versioning principles to the release of 1EdTech Specifications. |
4. VERSIONING OF DOCUMENTS | Description of the application of the versioning principles to the release of 1EdTech Specification documents and to non-specification documents. |
5. VERSIONING OF OTHER SPECIFICATION ARTEFACTS | Description of the application of the versioning principles to the release of artifacts released as part of an 1EdTech Specification e.g. OpenAPI files, XSD files, etc. |
6. VERSIONING IN THE COMMON DATA MODEL | Description of the application of the versioning principles to the Common Data Model. |
7. VERSIONING OF SOFTWARE | Description of the application of the versioning principles to the software released by 1EdTech e.g. conformance testing software, etc. |
APPENDIX A – REVISION HISTORY | History of the various published versions of this document. This includes details of the changes made with respect to the previously published version. |
APPENDIX B – REFERENCES | The details of the set of documents cited within this document. |
APPENDIX C – LIST OF CONTRIBUTORS | The people who were responsible for the creation of this document. |
1.4 Key Terms
- Profile
- A refinement of a 1EdTech specification such that the data model properties have added constraints and extensions are used as permitted by the original specification. Examples of added constraints includes changing the multiplicity from one-to-many (1..*) to only one (1), changing a data-type of 'string' to a list of enumerated string values, etc. The form of the extensions is dependent upon the binding technology being used. An essential property of a profile is that an instance of any profile is a valid instance of the base specification: the inverse is NOT true.
- Semantic Versioning
- A simple set of rules and requirements that dictate how version numbers are assigned and incremented. The Semantic Versioning specification was originally authored by Tom Preston-Werner, inventor of Gravatar and cofounder of GitHub.
1.5 Acronyms
- API
- Application Programming Interface
- CASE
- Competencies & Academic Standards Exchange
- CDM
- Common Data Model
- IETF
- Internet Engineering Task Force
- JSON
- Java Script Object Notation
- JSON-LD
- Java Script Object Notation Link Data
- LTI
- Learning Tools Interoperability
- OASIS
- Organization for the Advancement of Structured Information Standards
- QTI
- Question & Test Interoperability
- REST
- Representational State Transfer
- RFC
- Request for Comment
- URL
- Uniform Resource Locator
- VDEX
- Vocabulary Definition & Exchange
- WSDL
- Web Services Description Language
- WS-I
- Web Services Interoperability Consortium
- XML
- Extensible Markup Language
- XSD
- XML Schema Definition
- YAML
- Yet Another Mark-up Language
2. Semantic Versioning
The set of principles for versioning within 1EdTech are based upon Semantic Versioning [SEMVER]. The [SEMVER] document addresses versioning for Public APIs. Within 1EdTech, the associated principles of Semantic Versioning have been applied more broadly and will be used when versioning specifications, documents, specification artifacts, reference implementation software releases, etc. The versioning nomenclature uses:
- MAJOR version when incompatible changes are made;
- MINOR version when functionality is added in a backwards compatible manner;
- PATCH version when backwards compatible bug fixes are made.
The associated set of rules for constructing the actual version, taken directly from [SEMVER], are:
- A normal version number MUST take the form X.Y.Z where X, Y, and Z are non-negative integers, and MUST NOT contain leading zeroes. X is the major version, Y is the minor version, and Z is the patch version. Each element MUST increase numerically. For example: 1.9.0 -> 1.10.0 -> 1.11.0;
- Once a versioned package has been released, the contents of that version MUST NOT be modified. Any modifications MUST be released as a new version;
- Version 1.0.0 defines the initial Final Release. The way in which the version number is incremented after this release is dependent on how it changes. Major version zero (0.y.z) is for pre-Final Release development;
- Patch version Z (x.y.Z | x > 0) MUST be incremented if only backwards compatible bug fixes are introduced. A bug fix is defined as an internal change that fixes incorrect behavior;
- Minor version Y (x.Y.z | x > 0) MUST be incremented if new, backwards compatible functionality is introduced to the release. It MUST be incremented if any functionality is marked as deprecated. It MAY include patch level changes. Patch version MUST be reset to 0 when minor version is incremented;
- Major version X (X.y.z | X > 0) MUST be incremented if any backwards incompatible changes are introduced to the final release. It MAY also include minor and patch level changes. Patch and minor version MUST be reset to 0 when major version is incremented.
NOTE: In the 1EdTech context, the appropriate modifications to the above set of rules have been made. For example, a patch version of '0' MUST NOT be used unless the artifact is machine-readable e.g. an XML Schema, an OpenAPI file, etc.
3. Versioning of Specifications
3.1 Versioning
Versioning of specifications will use the following semantic versioning principles:
- A specification MUST have major and minor version numbers;
- A specification MUST NOT have a patch version of '0' i.e. the patch version MUST ONLY be used when the value is greater than '0';
- The first major release will be versioned as '1.0' e.g. Comprehensive Learner Record 1.0;
- Subsequent major releases will be versioned as '2.0', '3.0', etc. Maintenance of backwards compatibility is NOT REQUIRED when releasing a major release;
- A minor release MUST be used when new backwards compatible functionality is added and/or features are marked as deprecated. Examples of this are OneRoster 1.1 and 1.2;
- A patch release MUST be used when backward compatible bug fixes are introduced. Examples of this are QTI 2.2.1, QTI 2.2.2, etc.
- In the case where both minor and patch changes occur in the same release then the minor version is incremented and the patch number dropped.
A new version of a specification MUST ONLY occur when there is a change in functionality. Editorial changes in the associated documentation MUST NOT change the specification version i.e. it is the document version that is changed.
Specification development includes the phases of 'Base Document, 'Candidate Final' and 'Final Release'. The phase of release is NOT reflected in the version of the specification. Instead this will be denoted by the 'Status' field of the associated artifact.
3.2 Versioning of Profiles of Specifications
Profiling is the process by which an 1EdTech specification is tailored to fit the requirements of a specific community. A community may be a collection of organizations in a market sector and/or geographically based. For example 1EdTech is supporting the development of a OneRoster 1.2 profile for use in K-12/Schools sector in Norway. A profile is created to enable more precise formal definition of Conformance & Certification i.e. to move from the generic practice enabled by the 1EdTech specification, to best practice enforced by the profile for the specific community. By definition, a profile increases the set of conformance requirements.
A profile MUST be aligned to a base specification. More than one version of a profile MAY exist and the profile itself will be subject to maintenance and development. Therefore, versioning a profile will follow the same rules as for the base specification itself i.e. two version identifiers MUST, and a third, MAY be used. There MUST be a separate version for the profile. For example the first version of the European Profile of the OneRoster 1.2 Specification has the title of OneRoster 1.2 European Profile 1.0
.
There is no naming convention for profiles except for use of the word 'Profile' in name of the profile.
3.3 Conformance & Certification
Whenever a new version of a specification, or a new version of a profile of a specification, is released there are significant implications for Certification and Conformance. The points of note for certification are:
- Major Release - a new certification system will be deployed. Support of the new version will be OPTIONAL. 1EdTech will maintain certification for all major versions that have not been deprecated;
- Minor Release - a new certification system will be deployed. Support of the new version will be OPTIONAL. 1EdTech will maintain certification for all minor release versions that have not been deprecated;
- Patch Release - the relevant certification system will be upgraded. Support of the new version will be REQUIRED. 1EdTech will NOT maintain certification for previous patch releases.
Vendors MUST follow the appropriate certification as part of their normal development cycle and the 1EdTech re-certification requirements.
4. Versioning of Documents
4.1 Specification-based Documents
For documents published as part of a specification e.g. the OneRoster Service Model, two versions MUST be used for the:
- Specification being defined;
- Document itself.
The version of the specification is taken from the specification itself. The version for the final release document uses a single incrementing integer starting at 1.
An example of the versioning of a document as part of the file name is: onerosterv1p2_rostering_infomodelv1.html
for document version 1 of the OneRoster 1.2 Rostering Service. Note that the dot notation is replaced by 'p' notation i.e. 1.2
is mapped to 1p2
and the character 'v' precedes the actual version number. This dual versioning enables the document itself to be revised independent of a change to the actual specification. It is not unusual for an 'Implementation Guide' to undergo many revisions as new recommendations are added; over time experience in the usage of a specification increases and so new insights must be documented.
For pre-Final Release documents the document versioning takes the format 0.Y where 'Y' is an integer that is >1. Again the dot notation is replaced by 'p' notation in file names.
4.2 Profile-based Documents
As discussed in Versioning of Profiles in Specifications the base 1EdTech specification may be profiled to meet the specific needs of a community. If the name of the profile document introduces a profile-specific component then it MUST include a version number. The same general rules as specified for the versioning of specifications MUST be applied i.e. two version identifiers MUST, and a third, MAY be used.
For example, the European profile for the 1EdTech OneRoster 1.2 exists and the corresponding profiled document has the file name: imsonerosterv1p2_europeanprofilev1p0_v1.html
. The profile is named 'europeanprofile' and this is the first version of that profile. It MUST be noted that the final 'v1' is the version for that HTML document.
4.3 Non-Specification-based Documents
For documents that are not published as part of a specification, for example this document and the 1EdTech Security Framework, only the document version is REQUIRED. The principles and format for the document version are the same as for the equivalent component for specification documents.
5. Versioning of Other Specification Artifacts
For artifacts published as part of a specification e.g. the XSDs for the 1EdTech Question & Test Interoperability (QTI) specification, two version identifiers MUST, and a third, MAY be used:
- The version of specification being defined MUST be included;
- The version of the artifact itself MUST be included;
- The version of the third-party technology used to describe the artifact MAY be included.
An example of the versioning of an artifact as part of the file name is: imsqti_asiv3p0_v1p0.xsd
for XSD version 1.0 of the QTI Assessment, Section & Item (ASI) 3.0 specification. Note that the dot notation is replaced by 'p' notation i.e. 3.0
is mapped to 3p0
and the character 'v' precedes the actual version number. This dual versioning enables the artifact itself to be revised independent of a change to the actual specification. It is not unusual for restructuring of an artifact to occur to provide more powerful validation capabilities.
The version of the specification is taken from the specification itself. The version for the artifact follows the semantic versioning principles:
- An artifact MUST have major, minor and patch version numbers;
- The first major release will be versioned as '1.0.0';
- Subsequent major releases will be versioned as '2.0.0', '3.0.0', etc. A change is major release MUST occur when there has been a significant change in the structure and/or content of the artifact. Such a change would be required if the specification remains unchanged but a total rewrite of the artifact has been completed;
- A minor release MUST be used when new parts have been added to the artifact or when one or more parts have undergone significant revision;
- A patch release MUST be used when minor editorial changes are introduced. Such changes include spelling corrections to comments etc.
- In the case where both minor and patch changes occur in the same release then the minor version is incremented and the patch number becomes '0'.
5.1 OpenAPI Files
When defining service-based specifications with REST/JSON bindings, 1EdTech make use of OpenAPI files as defined by [OAS2] and [OAS3]. 1EdTech use a profiled version of the OpenAPI syntax as produced through the 1EdTech Model Driven Specification approach. The OpenAPI specification itself is under revision and at present 1EdTech create both version 2 and version 3 OpenAPI artifacts (version 3.1 is almost ready for general adoption and version 3.2 is undergoing initial development). Therefore, OpenAPI artifacts MUST use the format of three version numbers:
- For the specification being defined;
- For the version of OpenAPI being used;
- For the version of the artifact itself (apart from the file type extension, this MUST be the last set of characters in the file name).
The version for the OpenAPI follows the semantic versioning principles of:
- An artifact's technology MUST have a major version number;
- An artifact's technology MAY have a minor version number;
- An artifact's technology MUST NOT have a patch version number;
- An artifact's technology MUST reflect the version of the technology being used.
An example of the versioning of an OpenAPI artifact as part of the file name is: onerosterv1p2rostersservice_openapi2_v1p0p0.json
or onerosterv1p2rostersservice_openapi3_v1p0p0.yaml
for OpenAPI version 2 and 3 respectively. Note that any dot notation is replaced by 'p' notation and the character 'v' does not precede the actual version number. This triple versioning enables the artifact itself to be made available in multiple versions of the technology.
5.1.1 Endpoint Versioning
When defining the endpoints using OpenAPI, use is made of the 'baseURL' substring. 1EdTech uses a naming convention for the ‘baseURL’ part of the URLs defined for endpoints. This ‘baseURL’ naming convention has three parts:
- The substring ‘1et’ to identify the endpoint as specified by 1EdTech (older specifications and versions will, instead, use 'ims');
- The short name of the specification for which the endpoint is being defined e.g. ‘or’ for OneRoster, ‘ob’ for Open Badges, etc. The naming convention is defined in the [SNAMES] document. This naming convention covers specifications that have sub components e.g. LTI, etc.
- The version of the endpoint taken as per the version of the specification e.g. ‘v1p0’, 'v2p1', etc. 1EdTech use the major and minor versioning as per Semantic Versioning.
For example, in the case of the OpenBadges 2.1 endpoints this means that the ‘baseURL’ is: ‘/ims/ob/v2p1’. Therefore in OB 2.1 the endpoints have a URL format of ‘…hostname…/ims/ob/v2p1/assertions’ etc. The justifications for this approach are:
- Versioning of the URL endpoints is well established best practice. Major and minor numbering is used by 1EdTech because not all minor revisions maintain backwards compatibility;
- It helps to avoid endpoint name clashes i.e. when the same endpoint URL leaf name is used by more than one 1EdTech specification. The ‘baseURL’ approach makes it easier to avoid endpoint name clashes i.e. when the same endpoint URL leaf name is used by more than one 1EdTech specification;
- It enables the Consumer to control and predict the payloads that MUST be supplied;
- It provides a reference place for the location of service discovery information.
5.2 XML Schema Files
When defining data model-only specifications with XML-based bindings, 1EdTech make use of XML Schema Definition (XSD) files [XSD]. Version 1.1 of XSD, the latest, was published in 2004. No revisions are expected to this specification and so there will be no artifact technology-based version. Therefore, XSD artifacts MUST use the format of two version numbers:
- For the specification being defined;
- For the version of the artifact itself (apart from the file type extension, this MUST be the last set of characters in the file name).
The version of the specification is taken from the specification itself. The version for the artifact follows the semantic versioning principles given at the start of Section 5.
Note that the dot notation is replaced by 'p' notation i.e. 1.0.0
is mapped to 1p0
and the character 'v' precedes the actual version number. An example of XSD file versioning is for the 1EdTech Question and Test Interoperability 3.0 specification of: imsqti_asiv3p0_v1p0p0.xsd
for the first release of that file.
A key feature of XSDs is the use of namespaces to enable the combination of multiple XSDs without causing tag clashes. Namespaces MUST be versioned with respect to the specification only. Versioning of namespaces will use the following semantic versioning principles:
- A namespace MUST have major and minor version numbers;
- A namespace MUST NOT have a patch release version;
- With the exclusion of the patch version number, the version of the namespace is taken from the specification itself.
5.3 JSON Schema Files
JSON Schema is a vocabulary to enable the annotation and validation of JSON documents [JSONSD]. 1EdTech use standalone JSON Schema files to enable the validation of individual JSON payloads exchanged in the REST/JSON-based bindings for an 1EdTech service specification. The standardization of this technology is being undertaken actively by the IETF, with the latest version having a $schema keyword value ofhttps://json-schema.org/draft/2020-12/schema
: OpenAPI version 3.1 is aligned with this version of JSON Schema. New versions are expected to be published and so the JSON Schema artifacts MUST use the format of three version numbers:
- For the specification being defined;
- For the version of JSON Schema being used with [JSONSD] denoted as version 1 (further permitted values will be defined, when appropriate, in this document);
- For the version of the artifact itself (apart from the file type extension, this MUST be the last set of characters in the file name).
The version for the JSON Schema follows the semantic versioning principles of:
- An artifact's technology MUST have a major version number;
- An artifact's technology MAY have a minor version number;
- An artifact's technology MUST NOT have a patch version number;
- An artifact's technology MUST reflect the version of the technology being used.
The version of the specification is taken from the specification itself. The version for the artifact follows the semantic versioning principles given at the start of Section 5.
Note that the dot notation is replaced by 'p' notation i.e. 1.0.0
is mapped to 1p0p0
and the character 'v' precedes the actual version number. An example of JSON Schema file versioning is for the 1EdTech OneRoster 1.2 specification of: onerosterresourcesservicev1p2-getallresources-200-responsepayload-jsonschema1_v1p0p0.json
for the first release of that file (this file is used to validate response payloads for the 'getAllResources' endpoint returned with a HTTP code of 200
.
5.4 JSON-LD Context Files
When defining service and data model specifications with JSON Linked Data (LD) bindings, 1EdTech make use of JSON-LD Context Files [JSONLD]. Version 1.1 of JSON-LD, the latest, was published in 2020. JSON-LD context files enable the definition of locally meaningful names which can then be used by importing systems to understand the data structures being described. No revisions are expected to this specification and so there will be no artifact technology-based version. Therefore, JSON-LD artifacts MUST use the format of two version numbers:
- For the specification being defined;
- For the version of the artifact itself (apart from the file type extension, this MUST be the last set of characters in the file name).
The version of the specification is taken from the specification itself. The version for the artifact follows the semantic versioning principles given at the start of Section 5.
Note that the dot notation is replaced by 'p' notation i.e. 1.0.0
is mapped to 1p0p0
and the character 'v' precedes the actual version number. An example of a JSON-LD context file is for the 1EdTech Competencies & Academic Standards Exchange (CASE) 1.0 specification of: imscasev1p0_context_v1p0p0.jsonld
for the first release of that file.
5.5 Web Services Description Language (WSDL) Files
When defining service-based specifications with SOAP/XML-based bindings, 1EdTech make use of Web Services Description Language (WSDL) files [WSDL]. Version 2.0 of WSDL, the latest, was published as a W3C Recommendation in 2007. No revisions are expected to this specification and so there will be no artifact technology-based version. 1EdTech specifications MUST make use of WSDL 1.1 and NOT WSDL 2.0 (1EdTech did not migrate to using and/or supporting WSDL 2.0). It should be noted that 1EdTech made use of the various profiles for WSDL published by the Web Services Interoperability (WS-I) Consortium (now published under the auspices of the OASIS). Therefore, WSDL-based artifacts MUST use the format of two version numbers:
- For the specification being defined;
- For the version of the artifact itself (apart from the file type extension, this MUST be the last set of characters in the file name).
The version of the specification is taken from the specification itself. The version for the artifact follows the semantic versioning principles given at the start of Section 5.
Note that the dot notation is replaced by 'p' notation i.e. 1.0.0
is mapped to 1p0p0
and the character 'v' precedes the actual version number. An example of WSDL file versioning is for the 1EdTech Group Management Service 2.0 specification of: GroupManagementServicev2p0_SyncWSDL_v1p0p0.wsdl
for the first release of that file.
A key feature of WSDL is the use of namespaces to enable the combination of multiple XSDs without causing tag clashes. Namespaces MUST be versioned with respect to the specification only. Versioning of namespaces will use the following semantic versioning principles:
- A namespace MUST have major and minor version numbers;
- A namespace MUST NOT have a patch release version;
- With the exclusion of the patch version number, the version of the namespace is taken from the specification itself.
5.6 Vocabulary (VDEX) Files
The 1EdTech Vocabulary Definition Exchange (VDEX) 1.0 specification, published in February 2004, defines a grammar for the exchange of value lists of various classes: collections often denoted "vocabulary". Specifically, VDEX defines a grammar for the exchange of simple machine-readable lists of values, or terms, together with information that may aid a human being in understanding the meaning or applicability of the various terms. VDEX can also express strictly hierarchical schemes in a compact manner while allowing for more loose networks of relationship to be expressed if required. Several 1EdTech specifications use VDEX to make vocabularies available in an independent machine readable format. There is only one version of VDEX. Therefore, VDEX-based artifacts MUST use the format of two version numbers:
- For the specification being defined;
- For the version of the artifact itself (apart from the file type extension, this MUST be the last set of characters in the file name).
The version of the specification is taken from the specification itself. The version for the artifact follows the semantic versioning principles given at the start of Section 5.
Note that the dot notation is replaced by 'p' notation i.e. 1.0.0
is mapped to 1p0p0
and the character 'v' precedes the actual version number. An example of vdex file versioning is for the 1EdTech QTI Usage Data & Item Statistics 3.0 specification of: imsqti_usagedatav3p0_itemstatisticsglossary_v1p0p0.xml
for the first release of that file. The same versioning MUST be used for any associated human-readable forms e.g. an HTML page of: imsqti_usagedatav3p0_itemstatisticsglossary_v1p0p0.html
.
5.7 Miscellaneous
5.7.1 Reference Test Instance Set Versioning
1EdTech provide Reference Test Instance Sets as part of the process for the Certification of systems that support the importing of data. The reference test sets are subject to rapid evolution. Therefore three types of versioning will be combined:
- The version of the specification, taken from the specification itself and the corresponding versioning rules;
- The version of each reference test instance file using a date-based convention with the format of YYYYMMDD where 'YYYY' is the year, 'MM' the month (value space of 01-12) and 'DD' the day (value space of 01-31);
- The release version of the test set starting a '1' and being incremented by one on each release for that date.
An example of this versioning is for the OneRoster 1.2 CSV Reference Test Instance Set of OneRosterv1p2CSV_Conformance_TestSet_20200718v1
with version 1 (v1) released on 20200718.
5.8 Profile-based Artifacts
As discussed in Versioning of Profiles in Specifications the base 1EdTech specification may be profiled to meet the specific needs of a community. If the file name of the artifact introduces a profile-specific component then it MUST include a version number. The same general rules as specified for the versioning of other specification artifacts MUST be applied i.e. two version identifiers MUST, and a third, MAY be used.
An example of XSD file versioning for the 1EdTech Question and Test Interoperability 3.0 specification is: imsqti_asiv3p0_v1p0p0.xsd
for the first release of that file. An SBAC profile for the QTI 3.0 specifications exists and the corresponding profiled XSD has the file name: imsqti_asiv3p0_sbacv1p0_v1p0p0.xsd
. The profile is named 'sbac' and this is the first version of that profile. It MUST be noted that the final 'v1p0' is the version for that XSD.
6. Versioning in the Common Data Model
The Common Data Model (CDM) is the repository for the definition of ALL of the data models defined in the set of 1EdTech specifications. The primary advantage when using this approach is that the consistency of the data models across the set of specifications is improved significantly. Each version of a 1EdTech specification makes use of a subset of the contents in the CDM. The data models in the CDM are, themselves subject to change and revision. Therefore versioning of the CDM is required to ensure that the changes in the relationship between a specification and the CDM can be traced over a prolonged period i.e. at least as long as the usage of the specification and version of the specification.
Versioning of the CDM, is in fact, versioning of the data model nodes in the CDM i.e. it is the components of the CDM that are versioned and NOT the CDM as a single entity. The versioning of the CDM nodes is NOT dependent on the version of the specification and/or version of the corresponding documentation. The CDM node versioning is to enable traceability from the specification documentation back to the source nodes. This means it is NOT possible to know which nodes of the CDM are used in which specification by observing the version of the CDM node within the CDM.
Versioning of the CDM nodes is based upon a date string. The format of that string is: "YYYYMMDD" where:
- "YYYY" - the year e.g. 2022;
- "MM" - the month with a range of "01" (January) to "12" (December);
- "DD" - the day with a range of "01" to "28" | "29" | "30" | "31" depending on the Month.
The new version is assigned to the node on the date of making the node available, in its new or modified version, in the CDM. At that time the node can then be included in a specification.
7. Versioning of Software
7.1 Conformance Test System Software Release Versioning
For Conformance Test System software, two versions MUST be used:
- For the specification being defined;
- For the version of the software itself.
The version of the specification is taken from the specification itself. The version for the software follows the semantic versioning principles:
- The software release MUST have major, minor and patch version numbers;
- The first major release will be versioned as '1.0.0' e.g. OneRoster 1.2 Service Provider Conformance Test System 1.0.0;
- Subsequent major releases will be versioned as '2.0.0', '3.0.0', etc. Maintenance of backwards compatibility is NOT REQUIRED when releasing a major release;
- A minor release MUST be used when new backwards compatible functionality is added and/or features are marked as deprecated. Examples of this are OneRoster 1.2 Service Provider Conformance Test System 1.1, etc.
- A patch release MUST be used when backward compatible bug fixes are introduced. Examples of this are OneRoster 1.2 Service Provider Conformance Test System 1.1.1, etc.
- In the case where both minor and patch changes occur in the same release then the minor version is incremented and the patch number becomes '0'.
7.1.1 Versioning of Profiles of the Conformance Test System Software
As discussed in Versioning of Profiles in Specifications the base 1EdTech specification may be profiled to meet the specific needs of a community. If the name of the profile document introduces a profile-specific component then it MUST include a version number. The same general rules as specified for the versioning of specifications MUST be applied i.e. two version identifiers MUST, and a third, MAY be used.
A profile MUST be aligned to a base specification. More than one version of a profile MAY exist and the profile itself will be subject to maintenance and development. Therefore, versioning the software for the Conformance Test System of a profile will follow the same rules as for the base specification itself i.e. two version identifiers MUST, and a third, MAY be used. There MUST be a separate version for the profile. For example the first version of the Conformance Test System for the European Profile of the OneRoster 1.2 Specification has the title of OR1p2-EuropeanProfilev1p0-SPCTSv1p0p0
.
There is no naming convention for profiles the Conformance Test System except for use of the word 'Profile' in name of the profile.
7.2 Reference Implementation Release Versioning
For Reference Implementation software, two versions MUST be used:
- For the specification being defined;
- For the version of the software itself.
The version of the specification is taken from the specification itself. The version for the software follows the semantic versioning principles:
- The software release MUST have major, minor and patch version numbers;
- The first major release will be versioned as '1.0' e.g. LTI Advantage Reference Implementation 1.0;
- Subsequent major releases will be versioned as '2.0', '3.0', etc. Maintenance of backwards compatibility is NOT REQUIRED when releasing a major release;
- A minor release MUST be used when new backwards compatible functionality is added and/or features are marked as deprecated. Examples of this are LTI Advantage Reference Implementation 1.1.0;
- A patch release MUST be used when backward compatible bug fixes are introduced. Examples of this are LTI Advantage Reference Implementation 1.1.1, QTI 2.2.2, etc.
- In the case where both minor and patch changes occur in the same release then the minor version is incremented and the patch number dropped.
Note that, by definition, a Reference Implementation SHOULD be able to support the operation of the equivalent specification profiles as well as the base specification. Therefore, no separate versioning, and naming convention, is required for the support of profiles.
7.3 Other Software Release Versioning
All non-specification related software will follow semantic versioning principles:
- The software release MUST have major, minor and patch version numbers;
- The first major release will be versioned as '1.0.0';
- Subsequent major releases will be versioned as '2.0.0', '3.0.0', etc. Maintenance of backwards compatibility is NOT REQUIRED when releasing a major release;
- A minor release MUST be used when new backwards compatible functionality is added and/or features are marked as deprecated i.e. 1.1, 1.2, etc.
- A patch release MUST be used when backward compatible bug fixes are introduced i.e. 1.1.1, 1.1.2, etc.
- In the case where both minor and patch changes occur in the same release then the minor version is incremented and the patch number becomes '0'.
7.4 API Versioning
As stated previously, the [SEMVER] document addresses versioning for Public APIs. Therefore, this will be adopted for versioning of all 1EdTech private and public APIs. In summary:
- An API MUST have major, minor and patch version numbers;
- The first major release will be versioned as '1.0' e.g. REST API 1.0;
- Subsequent major releases will be versioned as '2.0.0', '3.0.0', etc. Maintenance of backwards compatibility is NOT REQUIRED when releasing a major release;
- A minor release MUST be used when new backwards compatible functionality is added and/or features are marked as deprecated;
- A patch release MUST be used when backward compatible bug fixes are introduced. Examples of this are REST API 1.0.1, REST API 1.0.2, etc.
- In the case where both minor and patch changes occur in the same release then the minor version is incremented and the patch number becomes '0'.
A new version of an API MUST ONLY occur when there is a change in functionality. Editorial changes in the associated documentation MUST NOT change the API version i.e. it is the document version that is changed.
A. Revision History
This section is non-normative.
A.1 Version History
Version No. | Release Date | Comments |
---|---|---|
Final Release 1.0 | 23rd October, 2023 | The first Final Release of this document. This document becomes one of the key frameworks, defining versioning, for the development of 1EdTech specifications and other artifacts. |
B. References
B.1 Normative references
- [JSONLD]
- JSON-LD 1.1: A JSON-based Serialization for Linked Data. World Wide Web Consortium (W3C). July 2020. URL: https://www.w3.org/TR/json-ld11/s
- [JSONSD]
- JSON Schema: A Media Type for Describing JSON Documents (draft-bhutton-json-schema-01). IETF. December 2022. URL: https://datatracker.ietf.org/doc/html/draft-bhutton-json-schema-01
- [OAS2]
- OpenAPI Specification (version 2). OpenAPI Initiative (Linux Foundation). September 2014. URL: https://github.com/OAI/OpenAPI-Specification/blob/master/versions/2.0.md
- [OAS3]
- OpenAPI Specification (version 3). OpenAPI Initiative (Linux Foundation). July 2017. URL: https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.0.md
- [RFC2119]
- Key words for use in RFCs to Indicate Requirement Levels. S. Bradner. IETF. March 1997. Best Current Practice. URL: https://www.rfc-editor.org/rfc/rfc2119
- [SEMVER]
- Semantic Versioning 2.0.0. World Wide Web Consortium (W3C). URL: https://semver.org
- [SNAMES]
- Specification URLs and 'shortnames'. 1EdTech Consortium Inc. URL: https://github.com/1EdTech/spec-central/blob/master/urls-names.md
- [WSDL]
- Web Service Definition Language (WSDL). W3C. 15 March 2001. W3C Note. URL: https://www.w3.org/TR/wsdl
- [XSD]
- W3C XML Schema Definition Language (XSD) 1.1. World Wide Web Consortium (W3C). April 2012. URL: https://www.w3.org/XML/Schema
C. List of Contributors
The following individuals contributed to the development of this document:
Name | Organization | Role |
---|---|---|
Marcus Gylling | 1EdTech Consortium | |
Viktor Haag | D2L | |
Mark Leuba | 1EdTech Consortium | |
Bracken Mosbacker | 1EdTech Consortium | |
Colin Smythe | 1EdTech Consortium | Editor |
© 2001-2023 1EdTech Consortium Inc. All Rights Reserved. Privacy Policy