CBOR Working group C. Bormann Internet-Draft Universität Bremen TZI Intended status: Informational 10 March 2023 Expires: 11 September 2023 CDDL 2.0 — a draft plan draft-bormann-cbor-cddl-2-draft-02 Abstract The Concise Data Definition Language (CDDL) today is defined by RFC 8610 and RFC 9165. The latter (as well as some more application specific specifications such as RFC 9090) have used the extension point provided in RFC 8610, the control operator. As CDDL is used in larger projects, feature requirements become known that cannot be easily mapped into this single extension point. Hence, there is a need for evolution of the base CDDL specification itself. The present document provides a roadmap towards a "CDDL 2.0". It is based on draft-bormann-cbor-cddl-freezer, but is more selective in what potential features it takes up and more detailed in their discussion. It is intended to serve as a basis for prototypical implementations of CDDL 2.0. What specific documents spawn from the present one or whether this document is evolved into a single CDDL 2.0 specification. About This Document This note is to be removed before publishing as an RFC. Status information for this document may be found at https://datatracker.ietf.org/doc/draft-bormann-cbor-cddl-2-draft/. Discussion of this document takes place on the cbor Working Group mailing list (mailto:cbor@ietf.org), which is archived at https://mailarchive.ietf.org/arch/browse/cbor/. Subscribe at https://www.ietf.org/mailman/listinfo/cbor/. Source for this draft and an issue tracker can be found at https://github.com/cbor-wg/cddl-2. Status of This Memo This Internet-Draft is submitted in full conformance with the provisions of BCP 78 and BCP 79. Bormann Expires 11 September 2023 [Page 1] Internet-Draft CDDL 2.0 March 2023 Internet-Drafts are working documents of the Internet Engineering Task Force (IETF). Note that other groups may also distribute working documents as Internet-Drafts. The list of current Internet- Drafts is at https://datatracker.ietf.org/drafts/current/. Internet-Drafts are draft documents valid for a maximum of six months and may be updated, replaced, or obsoleted by other documents at any time. It is inappropriate to use Internet-Drafts as reference material or to cite them other than as "work in progress." This Internet-Draft will expire on 11 September 2023. Copyright Notice Copyright (c) 2023 IETF Trust and the persons identified as the document authors. All rights reserved. This document is subject to BCP 78 and the IETF Trust's Legal Provisions Relating to IETF Documents (https://trustee.ietf.org/ license-info) in effect on the date of publication of this document. Please review these documents carefully, as they describe your rights and restrictions with respect to this document. Code Components extracted from this document must include Revised BSD License text as described in Section 4.e of the Trust Legal Provisions and are provided without warranty as described in the Revised BSD License. Table of Contents 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3 1.1. CDDL 1.1 + 2 plan (standards track) . . . . . . . . . . . 3 1.2. Other documents . . . . . . . . . . . . . . . . . . . . . 3 2. Mending syntax deficits . . . . . . . . . . . . . . . . . . . 4 2.1. Tag-oriented Literals . . . . . . . . . . . . . . . . . . 4 3. Processing model: Beyond Validation . . . . . . . . . . . . . 4 4. Module superstructure . . . . . . . . . . . . . . . . . . . . 5 4.1. Cross-universe references . . . . . . . . . . . . . . . . 5 4.2. ABNF is a lot like CDDL . . . . . . . . . . . . . . . . . 5 5. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 5 6. Security considerations . . . . . . . . . . . . . . . . . . . 5 7. References . . . . . . . . . . . . . . . . . . . . . . . . . 5 7.1. Normative References . . . . . . . . . . . . . . . . . . 6 7.2. Informative References . . . . . . . . . . . . . . . . . 6 Appendix A. Fridge . . . . . . . . . . . . . . . . . . . . . . . 7 A.1. Tag-oriented Literals . . . . . . . . . . . . . . . . . . 7 A.2. Cross-universe references . . . . . . . . . . . . . . . . 8 A.2.1. IANA references . . . . . . . . . . . . . . . . . . . 8 Acknowledgements . . . . . . . . . . . . . . . . . . . . . . . . 8 Author's Address . . . . . . . . . . . . . . . . . . . . . . . . 9 Bormann Expires 11 September 2023 [Page 2] Internet-Draft CDDL 2.0 March 2023 1. Introduction (Please see abstract.) Note that the existing extension point can be exercised for new features in parallel to the work described here. One such draft, [I-D.bormann-cbor-cddl-more-control], is planned to form the first set of specifications going forward from the CDDL-2 project together with [I-D.bormann-cbor-update-8610-grammar]. The rest of this introduction gives a rough overview over what could be the development plan for CDDL 1.1, 2.0, 2.5. 1.1. CDDL 1.1 + 2 plan (standards track) * Done before *IETF 117*: CDDL 1.1: [I-D.bormann-cbor-update-8610-grammar], _Grammar_ fixes: Empty files (enabling CDDL 2), non-literal tags, errata fixes (implemented) * Done before *IETF 117*: Parallel to CDDL 1.1: More _control_ operators [I-D.bormann-cbor-cddl-more-control]: Additional control operators, another iteration like RFC 9165 (implemented) * Done before *IETF 118*: CDDL 2.0: [I-D.bormann-cbor-cddl-modules] (import/include implemented; potentially further directives to be added) * Done *2024*: CDDL 2.5: Section 3 of the present document ("_annotations_", plus some functionality enabled by that). The requirements are clear, the specific form this takes needs to be worked out. Enables, e.g., Section 5 of [I-D.bormann-cbor-cddl-freezer] (co-occurrence). 1.2. Other documents Not on the main line of development, but important ancillary work: * (Informational, Mid-2023): Section 5 of [I-D.bormann-cbor-cddl-freezer]: CDDL-in-JSON format(s) for interchange of CDDL model information between tools. * (Informational, with [I-D.bormann-cbor-cddl-modules]): [I-D.bormann-cbor-rfc-cddl-models] (builds standard collection of referenceable models). * (BCP?): [I-D.bormann-cbor-draft-numbers] (BCP for handling assigned numbers during draft stage) Bormann Expires 11 September 2023 [Page 3] Internet-Draft CDDL 2.0 March 2023 More explorative at this point: * (Standards-Track?) The remaining Section 2 of this document: application-oriented literals in CDDL; develop with [I-D.bormann-cbor-edn-literals]. * (Informational or Standards-Track?): [I-D.bormann-cbor-cddl-csv] (using CDDL to model CSV documents). 2. Mending syntax deficits The previous content of this section formed the basis for [I-D.bormann-cbor-update-8610-grammar], except for Section 2.1. 2.1. Tag-oriented Literals Incomplete, see Appendix A.1. 3. Processing model: Beyond Validation _Proposal Status_: experiments with implementations ongoing _Compatibility_: backwards compatible The basic (implicit) processing model for CDDL 1.0 applies a CDDL data model to a data item and returns a Boolean that indicates whether the data item matches that model ("_validation_"). Section 4 of [RFC9165] extends this model with named "_features_". A validation can indicate which features were used. Validation could also be parameterized with information about what features are allowed to be used, enabling variants (see Section 4 of [RFC9165] and [useful] for examples). The cddl tool (Appendix F of [RFC8610]) also supports experimental forms of "annotating" a validated data item with information about which rules were used to support validation, currently entirely based on the information that is in a standard CDDL 1.0 data model. This leads to a more general concept of "_annotation_", where the data model specification supports "annotating" the validated instance by optionally supplying information in the model. (The annotated result is a special case of a "post-schema validation instance" [PSVI], here one where the data item itself is only augmented, not changed, by the process.) Bormann Expires 11 September 2023 [Page 4] Internet-Draft CDDL 2.0 March 2023 Annotations could in turn provide input to further validation steps, as is often done with Schematron validation in Relax-NG; with an appropriate evaluation language this can be used for checking co- occurrence constraints (Section 5 of [I-D.bormann-cbor-cddl-freezer]). Finally, annotations are a first step to _transformation_, i.e., describing how a validated data item should be interpreted as a transformed data item by performing certain computations. This generally requires even more support from an evaluation language, simple transformations such as adding in default values may not need much support though. At this time, existing experimental implementations do not lead to a clear choice for what processing model enhancements should be in CDDL 2.0. This document proposes to continue the experimentation and document good approaches. 4. Module superstructure The previous content of this section formed the basis for [I-D.bormann-cbor-cddl-modules]. Additional work might be started on the ideas outlined in the subsections of this section. 4.1. Cross-universe references See Appendix A.2. 4.2. ABNF is a lot like CDDL Many of the constructs defined here for CDDL also could be used with ABNF specifications. ABNF would definitely benefit from a standard way to import snippets from existing RFCs. Since CDDL contains ABNF support (Section 3 of [RFC9165]), it would be natural to make some of the functionality discussed in this section available for ABNF as well. 5. IANA Considerations (Insert new registry for application specific literals here, if adopted.) 6. Security considerations The security considerations of [RFC8610] apply. 7. References Bormann Expires 11 September 2023 [Page 5] Internet-Draft CDDL 2.0 March 2023 7.1. Normative References [RFC8610] Birkholz, H., Vigano, C., and C. Bormann, "Concise Data Definition Language (CDDL): A Notational Convention to Express Concise Binary Object Representation (CBOR) and JSON Data Structures", RFC 8610, DOI 10.17487/RFC8610, June 2019, . [RFC9165] Bormann, C., "Additional Control Operators for the Concise Data Definition Language (CDDL)", RFC 9165, DOI 10.17487/RFC9165, December 2021, . 7.2. Informative References [I-D.bormann-cbor-cddl-csv] Bormann, C., "Using CDDL for CSVs", Work in Progress, Internet-Draft, draft-bormann-cbor-cddl-csv-02, 27 February 2023, . [I-D.bormann-cbor-cddl-freezer] Bormann, C., "A feature freezer for the Concise Data Definition Language (CDDL)", Work in Progress, Internet- Draft, draft-bormann-cbor-cddl-freezer-10, 24 October 2022, . [I-D.bormann-cbor-cddl-modules] Bormann, C., "CDDL Module Structure", Work in Progress, Internet-Draft, draft-bormann-cbor-cddl-modules-00, 10 March 2023, . [I-D.bormann-cbor-cddl-more-control] Bormann, C., "More Control Operators for CDDL", Work in Progress, Internet-Draft, draft-bormann-cbor-cddl-more- control-01, 9 March 2023, . [I-D.bormann-cbor-draft-numbers] Bormann, C., "Managing CBOR numbers in Internet-Drafts", Work in Progress, Internet-Draft, draft-bormann-cbor- draft-numbers-00, 22 February 2023, . Bormann Expires 11 September 2023 [Page 6] Internet-Draft CDDL 2.0 March 2023 [I-D.bormann-cbor-edn-literals] Bormann, C., "Application-Oriented Literals in CBOR Extended Diagnostic Notation", Work in Progress, Internet- Draft, draft-bormann-cbor-edn-literals-01, 24 October 2022, . [I-D.bormann-cbor-rfc-cddl-models] Bormann, C., "CDDL models for some existing RFCs", Work in Progress, Internet-Draft, draft-bormann-cbor-rfc-cddl- models-01, 25 February 2023, . [I-D.bormann-cbor-update-8610-grammar] Bormann, C., "Updates to the CDDL grammar of RFC 8610", Work in Progress, Internet-Draft, draft-bormann-cbor- update-8610-grammar-00, 9 March 2023, . [PSVI] "Use Cases for XML Schema PSVI API", 24 June 2002, . [useful] "Useful CDDL", n.d., . Appendix A. Fridge This appendix contains sections that may not make it to a 2.0, but might be part of a followup. A.1. Tag-oriented Literals _Proposal Status_: rough idea, porting from EDN _Compatibility_: backward (not forward) Some CBOR tags often would be most natural to use in a CDDL spec with a literal syntax that is tailored to their semantics instead of their serialization in CBOR. There is currently no way to add such syntaxes, no defined extension point either. The proposal "Application-Oriented Literals in CBOR Extended Diagnostic Notation" [I-D.bormann-cbor-edn-literals] defines application-oriented literals, e.g., of the form dt'2019-07-21T19:53Z' Bormann Expires 11 September 2023 [Page 7] Internet-Draft CDDL 2.0 March 2023 for datetime items. With additional considerations for unambiguous syntax, a similar literal form could be included in CDDL. This proposal opens a name space for the prefix that indicates an application specific literal. A registry could be provided to make this name space a genuine extension point. (This is currently the production bsqual in Appendix B of [RFC8610].) The syntax provided in [I-D.bormann-cbor-edn-literals] does not enable the use of CDDL types — it has the same flaw that is being fixed for tag numbers in Section 3.2 of [I-D.bormann-cbor-update-8610-grammar]. A.2. Cross-universe references Often, a CDDL specification needs to import from specifications in a different language or platform. A.2.1. IANA references In many cases, CDDL specifications make use of values that are specified in IANA registries. The .iana control operator can be used to reference such a set of values. The reference needs to be able to point to a draft, the registry of which has not been established yet, as well as to an established IANA registry. An example of such a usage might be: cose-algorithm = int .iana ["cose", "algorithms", "value"] Unfortunately, the vocabulary employed in IANA registries has not been designed for machine references. In this case, the potential values would come from applying the XPath expression //iana:registry[@id='algorithms']/iana:record/iana:value to https://www.iana.org/assignments/cose/cose.xml, plus some filtering on the records returned that only leaves actual allocations. Additional functionality may be needed for filtering with respect to other columns of the registry record, e.g., in the case of this example. Acknowledgements TBD Bormann Expires 11 September 2023 [Page 8] Internet-Draft CDDL 2.0 March 2023 Author's Address Carsten Bormann Universität Bremen TZI Postfach 330440 D-28359 Bremen Germany Phone: +49-421-218-63921 Email: cabo@tzi.org Bormann Expires 11 September 2023 [Page 9]