|
| 1 | +--- |
| 2 | +layout: page |
| 3 | +title: Work In Progress Feedback |
| 4 | +permalink: /work-in-progress |
| 5 | +--- |
| 6 | + |
| 7 | +* TOC |
| 8 | +{:toc} |
| 9 | + |
| 10 | +The next draft (informally known as **draft-07**, formal IETF draft names to be determined) |
| 11 | +is now feature-frozen and entering the final feedback month before publication. The feedback |
| 12 | +period will last from October 20th to November 20th, 2017. |
| 13 | + |
| 14 | +The timeline may be compressed if, after at least two weeks, there is a clear consensus that |
| 15 | +the drafts are solid and it would be best to publish sooner rather than later. |
| 16 | + |
| 17 | +The following sorts of feedback are particularly desired: |
| 18 | + |
| 19 | +* Clarity, readability, and accessibility to new readers |
| 20 | +* Contradictions, inconsistencies and other bugs |
| 21 | +* Anything so egregious that implementation would be infeasible or impossible |
| 22 | + |
| 23 | +New features or major changes to existing features will be deferred to a future draft, |
| 24 | +and work on the next draft will begin immediately after this one is published. |
| 25 | + |
| 26 | +## Pre-Built Review Documents |
| 27 | + |
| 28 | +To encourage as many reviewers as possible, pre-built documents are available. These may |
| 29 | +slightly lag those in the GitHub repository, although all efforts will be made to keep them |
| 30 | +in sync during the review period. After the review period, these will be removed. In particular, |
| 31 | +using "WORK IN PROGRESS" meta-schemas **is not allowed** and **will break** as soon as the files |
| 32 | +are moved to their permanent homes. |
| 33 | + |
| 34 | +* Specifications: |
| 35 | + * [WIP: JSON Schema (core)](/work-in-progress/WIP-jsonschema-core.html) |
| 36 | + * [WIP: JSON Schema Validation](/work-in-progress/WIP-jsonschema-validation.html) |
| 37 | + * [WIP: JSON Schema Hyper-Schema](/work-in-progress/WIP-jsonschema-hyperschema.html) |
| 38 | + * [WIP: Relative JSON Pointer](/work-in-progress/WIP-relative-json-pointer.html) |
| 39 | +* Meta-schemas: |
| 40 | + * [WIP: schema.json](/work-in-progress/WIP-schema.json) (core and validation) |
| 41 | + * [WIP: links.json](/work-in-progress/WIP-links.json) (individual link description object) |
| 42 | + * [WIP: hyper-schema.json](/work-in-progress/WIP-hyper-schema.json) (hyper-schema, references |
| 43 | + schema and links) |
| 44 | +* Output schema: |
| 45 | + * [WIP: hyper-schema-output.json](/work-in-progress/WIP-hyper-schema-output.json) (format used by the proposed hyper-schema test suite, and used in examples in the specification) |
| 46 | + |
| 47 | + |
| 48 | +## Providing Feedback and Tracking Progress in GitHub |
| 49 | + |
| 50 | +* The active sources are on the |
| 51 | +["master" branch of json-schema-org/json-schema-spec](https://github.com/json-schema-org/json-schema-spec) |
| 52 | +* The [draft-07 milestone](https://github.com/json-schema-org/json-schema-spec/milestone/5) |
| 53 | + tracks all issues and PRs for this draft |
| 54 | +* Check the [open PRs](https://github.com/json-schema-org/json-schema-spec/pulls) |
| 55 | + to see what is already being changed from other feedback |
| 56 | +* [file an issue](https://github.com/json-schema-org/json-schema-spec/issues/new?milestone=draft-07) |
| 57 | + or [join the mailing list](https://groups.google.com/forum/#!forum/json-schema) to submit feedback |
| 58 | + |
| 59 | +## Summary of Changes |
| 60 | + |
| 61 | +The primary focus of this draft has been JSON Hyper-Schema, which has been given a top-to-bottom |
| 62 | +rewrite in addition to numerous new features. As part of this, we have (with the original |
| 63 | +author's permission), revived the Relative JSON Pointer proposal to be submitted alongside |
| 64 | +of hyper-schema. |
| 65 | + |
| 66 | +In the course of that rewrite, several concepts that apply across all JSON Schema specifications |
| 67 | +became more clear, so in addition to new keywords in both Core and Validation, some of the |
| 68 | +introductory and other text has been reworked to fit into the new conceptual model. |
| 69 | + |
| 70 | +We are **particularly interested** in feedback on whether the wording and concepts is an |
| 71 | +improvement in terms of how easy it is to understand and learn the specifications. |
| 72 | + |
| 73 | +Note that _all drafts have Changelog appendicies_, for a concise list of notable changes. |
| 74 | + |
| 75 | +### Changes to Concepts |
| 76 | + |
| 77 | +These are properly explained in the documents as noted. They are listed here to |
| 78 | +highlight their importance: If you read the drafts and do not understand these |
| 79 | +concepts, please file an issue or let us know on the mailing list. |
| 80 | + |
| 81 | +* _applicability_ (defined in the validation spec) |
| 82 | +* _assertions_ (defined in the validation spec, also mentioned in core) |
| 83 | +* `true` and `false` as trivial assertions (explained in core) |
| 84 | +* _annotations_ (defined in the validation spec) |
| 85 | +* _generic user agent_ (defined in hyper-schema) |
| 86 | +* _client application_ and _client input_ (defined in hyper-schema) |
| 87 | + |
| 88 | +### Changes to Specification Boundaries |
| 89 | + |
| 90 | +The `readOnly` and `media` keywords, previously in Hyper-Schema, are often used (or people |
| 91 | +ask about using them) outside of Hyper-Schema. As a result, they have been moved to the |
| 92 | +validation spec: |
| 93 | + |
| 94 | +* `readOnly` is now a metadata keyword in the validation spec |
| 95 | +* `media` and its `type` and `binaryEncoding` keywords get their own validation spec section as `contentMediaType` and `contentEncoding` |
| 96 | + |
| 97 | +Hyper-schema now solely describes the Link Description Object (LDO), plus the two keywords |
| 98 | +(`base` and `links`) necessary to connect the LDO to schemas. |
| 99 | + |
| 100 | +### Changes to the Core Specification |
| 101 | + |
| 102 | +* `application/schema-instance+json` optional instance media type |
| 103 | +* Proposed "schema" link relation type in place of using "profile" |
| 104 | +* Added `$comment` (also added to Hyper-Schema's LDO) |
| 105 | +* Better wording around `$id` and fragments |
| 106 | +* Note the challenges of extending meta-schemas more clearly |
| 107 | + |
| 108 | +### Changes to the Validation Specification |
| 109 | + |
| 110 | +Only `if`/`then`/`else` is a mandatory new implementation requirement. Everything else |
| 111 | +is either an annotation (no defined requirements) or gives implementations the option |
| 112 | +to **not** implement validation (format and content keywords). |
| 113 | + |
| 114 | +* Added `if`, `then`, and `else` |
| 115 | + * Note: imperative vs declarative [exhaustively discussed](https://github.com/json-schema-org/json-schema-spec/issues/180) |
| 116 | + * Note: we [may remove the schema form of `dependencies`](https://github.com/json-schema-org/json-schema-spec/issues/442) |
| 117 | +* Added many new formats, clarified the "json-pointer" format |
| 118 | +* Added `writeOnly` alongside `readOnly` (moved from Hyper-Schema) |
| 119 | +* Moved the hyper-schema `media` object to the `content*` keywords in validation |
| 120 | + |
| 121 | +### Changes to the Hyper-Schema specification |
| 122 | + |
| 123 | + |
| 124 | +Basically everything is different. It's probably best to just read it top to bottom |
| 125 | +and pretend you've never heard of it before. |
| 126 | + |
| 127 | +* Added overview explaining the general purpose and scope |
| 128 | +* Aligned LDO with how links are described in [RFC 5988bis](https://mnot.github.io/I-D/rfc5988bis/) |
| 129 | +* Context adjustment with `anchor` and `anchorPointers` |
| 130 | +* Pseudocode specification for URI Template resolution |
| 131 | +* `templatePointers` and `templateRequired` added to URI Template resolution process |
| 132 | +* `mediaType` and `submissionEncType` are now `targetMediaType` and `submissionMediaType` |
| 133 | +* `targetHints` and `headerSchema` for working with HTTP request and response headers |
| 134 | +* HTTP guidance has its own section |
| 135 | +* API usage has an appendix, including a subsection on static docs and code |
| 136 | +* Collections and items are recognizable based on link relation types |
| 137 | + |
| 138 | +## Known Issues |
| 139 | + |
| 140 | +* Hyper-Schema needs a lot more examples (suggestions encouraged!) |
| 141 | +* Hyper-Schema examples would be better if they fit together to tell a single story |
| 142 | +* Hyper-Schema needs to be consistent about cross-references |
| 143 | + |
| 144 | +The primary author of this draft (and this page) notoriously struggles to write |
| 145 | +effective examples. Help on this aspect of the spec would be very much appreciated. |
0 commit comments