Skip to content

Document our deprecation policy #1265

Closed
@Julian

Description

@Julian

(I don't see this mentioned elsewhere, but if it is, feel free to redirect).

We now have at least a few examples of explicitly deprecated keywords (or more broadly behavior).

The easiest list of examples are in the current metaschema, and specifically include:

  • definitions
  • dependencies
  • $recursiveAnchor
  • $recursiveRef

We don't, as far as I can tell, provide any real information about what downstream users should expect about the length of this deprecation. Other than the metaschema inclusion, their presence is indicated in an appendix to the validation spec.

It says, e.g.:

implementations SHOULD assume that "$defs" and "definitions" have the same behavior when that meta-schema is used

though note similar language isn't present for the other 3 examples (and the recursive* examples aren't even mentioned).

It would be nice to:

  1. have an explicit policy, even if we don't necessarily decide on a completely standard time (e.g. "all deprecations last 2 releases" might or might not be unrealistic, but we should at least say "all deprecations indicate some information about their expected length" somewhere, and be collected in some explicit location)
  2. ensure we have the agreed-upon info from the policy about each existing deprecation

Note that this issue is not intended to discuss or document any backwards compatibility concerns beyond those that already exist (a la e.g. #1242), or even to discuss the practice of deprecation itself and how often we do it "in abstract". It is strictly about clarifying the policy for those things we now explicitly have deprecated in the specifications, and documenting what expectations downstream implementers and users should have about how long those deprecations will last, as well as then hopefully following the same written policy for future deprecations.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions