|
| 1 | +[](https://www.bestpractices.dev/projects/8149) |
| 2 | + |
| 3 | +# Open Data Contract Standard (ODCS) |
| 4 | + |
| 5 | +Welcome! |
| 6 | + |
| 7 | +Thanks for your interest and for taking the time to come here! ❤️ |
| 8 | + |
| 9 | +## Executive summary |
| 10 | +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! |
| 11 | + |
| 12 | +## Discover the open standard |
| 13 | +Discover the [Open Data Contract Standard](standard.md). This file contains some explanations and several examples. More [examples](examples/index.md) can be found here. |
| 14 | + |
| 15 | +## What is a Data Contract? |
| 16 | + |
| 17 | +### The basics of a data contract |
| 18 | +A data contract defines the agreement between a data producer and consumers. A data contract contains several sections: |
| 19 | +* Fundamentals. |
| 20 | +* Schema. |
| 21 | +* Data quality. |
| 22 | +* Service-level agreement (SLA). |
| 23 | +* Security & stakeholders. |
| 24 | +* Custom properties. |
| 25 | + |
| 26 | + |
| 27 | + |
| 28 | +*Figure 1: illustration of a data contract, its principal contributors, sections, and usage.* |
| 29 | + |
| 30 | +### JSON Schema |
| 31 | + |
| 32 | +JSON Schema for ODCS can be found [here](https://github.com/bitol-io/open-data-contract-standard/blob/main/schema/odcs-json-schema.json). You can import this schema into your IDE for |
| 33 | +validation of your YAML files. Links below show how you can import the schema: |
| 34 | + |
| 35 | +- [IntelliJ](https://www.jetbrains.com/help/idea/json.html#ws_json_schema_add_custom) |
| 36 | +- [VS Code](https://code.visualstudio.com/languages/json#_json-schemas-and-settings) |
| 37 | + |
| 38 | +## Contributing to the project |
| 39 | +Check out the [CONTRIBUTING](./contributing.md) file. |
| 40 | + |
| 41 | +## Articles |
| 42 | + * 2024-02-06 - [Getting started with ODCS](https://medium.com/abeadata/getting-started-with-odcs-3ba790707879) |
| 43 | + * 2023-12-08 - [Why the Need for Standardizing Data Contracts?](https://medium.com/abeadata/why-the-need-for-standardizing-data-contracts-133bc3491148) |
| 44 | + * 2023-11-30 - [Linux Foundation AI & Data - Bitol Joins LF AI & Data as New Sandbox Project](https://lfaidata.foundation/blog/2023/11/30/bitol-joins-lf-ai-data-as-new-sandbox-project/) |
| 45 | + * 2023-11-30 - [AIDAUG - Bitol Joins LF AI & Data as New Sandbox Project](https://aidausergroup.org/2023/11/30/bitol-joins-lf-ai-data-as-new-sandbox-project/) |
| 46 | + * 2023-10-01 - [Data Contracts: A Bridge Connecting Two Worlds](https://medium.com/@atanas.iliev.ai/data-contracts-a-bridge-connecting-two-worlds-404eff1d970d) |
| 47 | + * 2023-09-10 - [Data Contracts 101](https://medium.com/p/568a9adbf9a9) |
| 48 | + * 2023-08-10 - [Welcome to the Open Data Contract Standard](https://jgp.ai/2023/08/09/welcome-to-the-open-data-contract-standard/) |
| 49 | + * 2023-05-11 - [Data Contracts – Everything You Need to Know](https://www.montecarlodata.com/blog-data-contracts-explained/) |
| 50 | + * 2023-05-07 - [Data Engineering Weekly #130 - Data Contract in the Wild with PayPal’s Data Contract Template](https://www.dataengineeringweekly.com/p/data-engineering-weekly-130) |
| 51 | + * 2023-05-06 - [PayPal เปิด Data Contract เป็น Open Source Template ให้ไปใช้งานกัน](https://discuss.dataengineercafe.io/t/paypal-data-contract-open-source-template/581/1) |
| 52 | + * 2023-05-05 - [Jonathan Neo (j__neo ) on Reddit](https://www.reddit.com/r/dataengineering/comments/137glbo/comment/jixw5hj/?utm_source=reddit&utm_medium=web2x&context=3) |
| 53 | + * 2023-05-01 - [PayPal open sources its data contract template](https://jgp.ai/2023/05/01/paypal-open-sources-its-data-contract-template/) |
| 54 | + |
| 55 | +If you spot an article about the Open Data Contract Standard, make a pull request! |
| 56 | + |
| 57 | +## Vendors |
| 58 | + |
| 59 | +Vendors who natively support the Open Data Contract Standard. |
| 60 | + |
| 61 | +A non-exhaustive list of organizations offering solutions natively compatible with ODCS, such as data catalogs, and data quality platforms. |
| 62 | + |
| 63 | +* [DQC.ai | DQ PLATFORM](https://www.dqc.ai/dqc-platform) - [Enhancing Data Quality with ODCS: A Standard Ensured by the DQ Platform |
| 64 | +](https://www.dqc.ai/post/enhancing-data-quality-with-odcs-a-standard-ensured-by-the-dq-platform) |
| 65 | + |
| 66 | +## More |
| 67 | + |
| 68 | +### History |
| 69 | +Formerly known as the data contract template, this standard is used to implement Data Mesh at [PayPal](https://about.pypl.com/). 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)](https://aidaug.org). On November 30th, 2023, [AIDA User Group](https://aidaug.org) and the [Linux Foundation AI & Data](https://lfaidata.foundation/) joined forces to create [Bitol](https://bitol.io). Bitol englobes ODCS and future standards & tools. |
| 70 | + |
| 71 | +### How does PayPal use Data Contracts? |
| 72 | +PayPal uses data contracts in many ways, but this [article](https://medium.com/paypal-tech/the-next-generation-of-data-platforms-is-the-data-mesh-b7df4b825522) from the [PayPal Technology blog](https://medium.com/paypal-tech) gives a good introduction. |
| 73 | + |
| 74 | +### Mkdocs mike versioning |
| 75 | +To start with using [mike](https://github.com/jimporter/mike) as a tool for versioning the documentation, the following was run: |
| 76 | + |
| 77 | +```bash |
| 78 | +pip install mike |
| 79 | +cd open-data-contract-standard #ensure you are inside the repo |
| 80 | +mike deploy --push --update-aliases v2.2.1 latest #set latest version to v2.2.1 |
| 81 | +mike set-default --push latest #by default, users will go to latest |
| 82 | +``` |
| 83 | + |
| 84 | +#### Deploying a new version |
| 85 | +Given that the Github action [here](https://github.com/bitol-io/open-data-contract-standard/blob/main/.github/workflows/docs-site-deploy.yaml) it set to trigger when a new tag version is |
| 86 | +created, all that is required is to: |
| 87 | +1. [Create a new release](https://github.com/bitol-io/open-data-contract-standard/releases) |
| 88 | +2. Put in new tag version for release (follows pattern v*) |
| 89 | +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 |
| 90 | + |
| 91 | +#### Delete version |
| 92 | +If a version tag was pushed that was incorrect, it can be deleted via: |
| 93 | + |
| 94 | +```bash |
| 95 | +mike deploy --push --update-aliases <previous tag version> latest #set latest version to previous tag version |
| 96 | +mike delete <incorrect tag> --push |
| 97 | +``` |
0 commit comments