Skip to content

Latest commit

 

History

History
49 lines (39 loc) · 2.49 KB

File metadata and controls

49 lines (39 loc) · 2.49 KB

Versioning

Context

The OpenLineage spec gets versioned and published.

Requirements:

  • The OpenLineage spec and related libraries are in the OpenLineage repo.
  • The OpenLineage spec version changes only when the spec itself changes.
  • The libraries in the repo change more frequently than the spec (including when the spec changes).
  • We want to version the OpenLineage spec independently of the API spec.
  • The mechanism to version and publish the OpenLineage core spec applies to publishing custom facets.

Mechanism

  • The spec defines its current version using the “$id” field:
  • The $id urls uses a SEMVER compliant version, following the SCHEMAVER semantics MODEL-REVISION-ADDITION
    • MODEL when you make a breaking schema change which will prevent interaction with any historical data
    • REVISION when you introduce a schema change which may prevent interaction with some historical data
    • ADDITION when you make a schema change that is compatible with all historical data

Implementation Plan

  • CI verifies that:
    • The $id field has the right domain prefix.
    • The version changes when the spec changes: When resolving “$id”, the build fails if the spec is not exactly the same.
    • The version does not change when the spec does not change. We can verify that the current version of the spec is not already published with a different version.
    • Libraries are generating events with the current version.
    • The spec is backward-compatible (only add optional fields) and consistent with the versioning semantics.
  • git pre commit: Increments the versions automatically when the spec changes.
  • Spec publication:
    • CI publishes to github pages when the $id changes on main (when this particular URL does not exist yet).
    • CI tags main with OpenLineage.json-{version}.

SPDX-License-Identifier: Apache-2.0
Copyright 2018-2024 contributors to the OpenLineage project