{"repo":"grafana/thema","free":true,"listed":false,"github":"https://github.com/grafana/thema","clone":"git clone https://github.com/grafana/thema.git","description":"A CUE-based framework for portable, evolvable schema","language":"Go","stars":236,"topics":["openapi","openapi3","cue","cuelang","grafana","schema","versioning","packaging","logic-programming","config"],"license":"Apache-2.0","category":"api-integrations-sdks","readme_excerpt":"Thema [!WARNING] This repository is no longer actively maintained or supported. If you are interested in continuing the development of this project, feel free to fork the repository and customize it to your needs. Thema is a system for writing schemas. Much like JSON Schema or OpenAPI, it is general-purpose and its most obvious application is as an IDL. However, those systems treat changing schemas as out of scope: a single version of a schema for some object is the atomic unit, and versioning is left to opaque strings in external systems like git or HTTP. Thema, by contrast, makes schema change a first-class system property: the atomic unit is the set of schema for some object, iteratively appended to over time as requirements evolve. Thema's approach is novel, so an analogy to the familiar may help. \"Branching by abstraction\" suggests that you refactor large applications not with long-running VCS branches and big-bang merges, but by letting old and new code live side-by-side on main , and choosing between them with logical gates, like feature flags. Thema is \"schema versioning by abstraction\": all versions of a schema live side-by-side on main , within logical structures Thema defines. This holistic view allows Thema to act like a typechecker, but for change-safety between schema versions: either schema versions must be backwards compatible, or there must exist logic to translate a valid instance of schema from one schema version to the next. CUE, the language in which Them","default_branch":null,"files":null,"tree":[],"storefront":"/r/grafana","claimed":false,"request_supported":{"post":"https://gitbuyer.com/r/grafana/thema/request-supported","requests":0},"note":"indexed from public GitHub; nothing is for sale on this page. Clone it from GitHub. Paid listings live at /search."}