Skip to content

bitol-io/open-data-contract-standard

 
 

Repository files navigation

OpenSSF Best Practices

Open Data Contract Standard (ODCS)

Welcome!

Thanks for your interest and for taking the time to come here! ❤️

Executive summary

This standard describes a structure for a data contract. It's current version is v2.2.2. It is available for you as an Apache 2.0 license. Contributions are welcome!

Discover the open standard

Discover the Open Data Contract Standard. This file contains some explanations and several examples. More examples can be found here.

What is a Data Contract?

The basics of a data contract

A data contract defines the agreement between a data producer and consumers. A data contract contains several sections:

  • Fundamentals.
  • Schema.
  • Data quality.
  • Service-level agreement (SLA).
  • Security & stakeholders.
  • Custom properties.

Data contract schema

Figure 1: illustration of a data contract, its principal contributors, sections, and usage.

JSON Schema

JSON Schema for ODCS can be found here. You can import this schema into your IDE for validation of your YAML files. Links below show how you can import the schema:

Contributing to the project

Check out the CONTRIBUTING file.

Articles

If you spot an article about the Open Data Contract Standard, make a pull request!

Vendors

Vendors who natively support the Open Data Contract Standard.

A non-exhaustive list of organizations offering solutions natively compatible with ODCS, such as data catalogs, and data quality platforms.

More

History

Formerly known as the data contract template, this standard is used to implement Data Mesh at PayPal. Starting with v2.2.0, it is maintained by a 501c6 non-profit organization called AIDA User Group (Artificial Intelligence, Data, and Analytics User Group). On November 30th, 2023, AIDA User Group and the Linux Foundation AI & Data joined forces to create Bitol. Bitol englobes ODCS and future standards & tools.

How does PayPal use Data Contracts?

PayPal uses data contracts in many ways, but this article from the PayPal Technology blog gives a good introduction.

Mkdocs mike versioning

To start with using mike as a tool for versioning the documentation, the following was run:

pip install mike
cd open-data-contract-standard                    #ensure you are inside the repo
mike deploy --push --update-aliases v2.2.1 latest #set latest version to v2.2.1
mike set-default --push latest                    #by default, users will go to latest

Deploying a new version

Given that the Github action here it set to trigger when a new tag version is created, all that is required is to:

  1. Create a new release
  2. Put in new tag version for release (follows pattern v*)
  3. Once release is created with new tag version, the Github action gets kicked off and mike will deploy the latest documentation linked to latest version tag

Delete version

If a version tag was pushed that was incorrect, it can be deleted via:

mike deploy --push --update-aliases <previous tag version> latest #set latest version to previous tag version
mike delete <incorrect tag> --push