{"adoption": {"forks": 201, "observed_at": "2026-08-28T04:05:01.949594+00:00", "stars": 1549}, "canonical_url": "https://ross.abutalabs.com/products/substrait", "card": {"archived": false, "artifact_type": "library", "description": "A cross platform way to express data transformation, relational algebra, standardized record expression and plans.", "domain": ["databases", "apis", "big-data"], "enriched": true, "function": ["serialization", "parser", "developer-tools"], "health_score": 100, "homepage": "https://substrait.io", "language": "Python", "license": "Apache-2.0", "license_family": "permissive", "maturity": "active", "member_repos": ["substrait-io/substrait"], "name": "substrait-io/substrait", "platform": ["cross-platform", "python"], "pushed_at": "2026-08-25T15:25:52+00:00", "repo": "substrait-io/substrait", "stars": 1549, "tags": ["relational-algebra", "query-plan", "execution-plan", "specification", "interoperability", "query-engine", "data-engineering"], "topics": ["execution-plan", "query-plan", "relational-algebra", "specification"], "urls": [], "use_cases": ["pass a query plan from a SQL parser to an execution engine", "serialize SQL views for consistent use across Spark and Trino", "submit the same plan to DataFusion and Postgres", "build a pluggable query plan visualizer", "run pandas-style compute inside another execution engine", "standardize plan interchange between query engines"], "what_it_is": "Substrait is a cross-language specification and tooling for describing data compute operations as standardized relational algebra query plans, with human-readable text and compact binary representations. It lets systems like SQL parsers, execution engines, and query optimizers exchange plans without custom integrations.", "when_to_avoid": ["you just need a single-engine query optimizer with no cross-system interchange", "you need a full SQL parser or execution engine rather than a plan format", "your systems already share a proprietary plan format and interoperability is not a goal"], "when_to_choose": ["you need interoperable query plans across multiple engines or languages", "you are building a SQL frontend or execution engine and want an open plan format", "you want to swap execution engines without rewriting plan generation"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/substrait", "repo": "substrait-io/substrait", "role": "main", "score": 99}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:05:01.949594+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T04:30:24.694071+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "2926184328c1d3bb3fb59c5482619ade2b256034114cedceca005a92ff9e1ab0", "fetched_at": "2026-08-28T04:05:01.949594+00:00", "kind": "readme", "missing": false, "url": "https://github.com/substrait-io/substrait"}, {"content_hash": "3704b30ab5993f6c5b3813072a38f4dc738fe2e06cbb2c2be352a596282315b7", "fetched_at": "2026-08-29T11:31:14.764605+00:00", "kind": "homepage", "missing": false, "url": "https://substrait.io"}, {"content_hash": "62c1a4d897c57a64a071b945f58b2a39fc4a62cb945c092a601ebfc61f1876d7", "fetched_at": "2026-08-29T11:31:14.774048+00:00", "kind": "site_page", "missing": false, "url": "https://substrait.io/about"}, {"content_hash": "399877c44605fa91b37bf84734ce54c72ce67bf9e5a5c7d9c2e244592b6de6f3", "fetched_at": "2026-08-29T11:31:14.782934+00:00", "kind": "site_page", "missing": false, "url": "https://substrait.io/faq"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:05:01.949594+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T04:30:24.694071+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "2926184328c1d3bb3fb59c5482619ade2b256034114cedceca005a92ff9e1ab0", "fetched_at": "2026-08-28T04:05:01.949594+00:00", "kind": "readme", "missing": false, "url": "https://github.com/substrait-io/substrait"}, {"content_hash": "3704b30ab5993f6c5b3813072a38f4dc738fe2e06cbb2c2be352a596282315b7", "fetched_at": "2026-08-29T11:31:14.764605+00:00", "kind": "homepage", "missing": false, "url": "https://substrait.io"}, {"content_hash": "62c1a4d897c57a64a071b945f58b2a39fc4a62cb945c092a601ebfc61f1876d7", "fetched_at": "2026-08-29T11:31:14.774048+00:00", "kind": "site_page", "missing": false, "url": "https://substrait.io/about"}, {"content_hash": "399877c44605fa91b37bf84734ce54c72ce67bf9e5a5c7d9c2e244592b6de6f3", "fetched_at": "2026-08-29T11:31:14.782934+00:00", "kind": "site_page", "missing": false, "url": "https://substrait.io/faq"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T04:30:24.694071+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "2926184328c1d3bb3fb59c5482619ade2b256034114cedceca005a92ff9e1ab0", "fetched_at": "2026-08-28T04:05:01.949594+00:00", "kind": "readme", "missing": false, "url": "https://github.com/substrait-io/substrait"}, {"content_hash": "3704b30ab5993f6c5b3813072a38f4dc738fe2e06cbb2c2be352a596282315b7", "fetched_at": "2026-08-29T11:31:14.764605+00:00", "kind": "homepage", "missing": false, "url": "https://substrait.io"}, {"content_hash": "62c1a4d897c57a64a071b945f58b2a39fc4a62cb945c092a601ebfc61f1876d7", "fetched_at": "2026-08-29T11:31:14.774048+00:00", "kind": "site_page", "missing": false, "url": "https://substrait.io/about"}, {"content_hash": "399877c44605fa91b37bf84734ce54c72ce67bf9e5a5c7d9c2e244592b6de6f3", "fetched_at": "2026-08-29T11:31:14.782934+00:00", "kind": "site_page", "missing": false, "url": "https://substrait.io/faq"}], "taxonomy_version": 1}, "health_score": {"inputs": ["days_since_push", "days_since_release", "archived"], "kind": "computed", "method": "health_v1"}, "homepage": {"kind": "observed", "observed_at": "2026-08-28T04:05:01.949594+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:05:01.949594+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:05:01.949594+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T04:30:24.694071+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "2926184328c1d3bb3fb59c5482619ade2b256034114cedceca005a92ff9e1ab0", "fetched_at": "2026-08-28T04:05:01.949594+00:00", "kind": "readme", "missing": false, "url": "https://github.com/substrait-io/substrait"}, {"content_hash": "3704b30ab5993f6c5b3813072a38f4dc738fe2e06cbb2c2be352a596282315b7", "fetched_at": "2026-08-29T11:31:14.764605+00:00", "kind": "homepage", "missing": false, "url": "https://substrait.io"}, {"content_hash": "62c1a4d897c57a64a071b945f58b2a39fc4a62cb945c092a601ebfc61f1876d7", "fetched_at": "2026-08-29T11:31:14.774048+00:00", "kind": "site_page", "missing": false, "url": "https://substrait.io/about"}, {"content_hash": "399877c44605fa91b37bf84734ce54c72ce67bf9e5a5c7d9c2e244592b6de6f3", "fetched_at": "2026-08-29T11:31:14.782934+00:00", "kind": "site_page", "missing": false, "url": "https://substrait.io/faq"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:05:01.949594+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:05:01.949594+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T04:30:24.694071+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "2926184328c1d3bb3fb59c5482619ade2b256034114cedceca005a92ff9e1ab0", "fetched_at": "2026-08-28T04:05:01.949594+00:00", "kind": "readme", "missing": false, "url": "https://github.com/substrait-io/substrait"}, {"content_hash": "3704b30ab5993f6c5b3813072a38f4dc738fe2e06cbb2c2be352a596282315b7", "fetched_at": "2026-08-29T11:31:14.764605+00:00", "kind": "homepage", "missing": false, "url": "https://substrait.io"}, {"content_hash": "62c1a4d897c57a64a071b945f58b2a39fc4a62cb945c092a601ebfc61f1876d7", "fetched_at": "2026-08-29T11:31:14.774048+00:00", "kind": "site_page", "missing": false, "url": "https://substrait.io/about"}, {"content_hash": "399877c44605fa91b37bf84734ce54c72ce67bf9e5a5c7d9c2e244592b6de6f3", "fetched_at": "2026-08-29T11:31:14.782934+00:00", "kind": "site_page", "missing": false, "url": "https://substrait.io/faq"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:05:01.949594+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:05:01.949594+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:05:01.949594+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T04:30:24.694071+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "2926184328c1d3bb3fb59c5482619ade2b256034114cedceca005a92ff9e1ab0", "fetched_at": "2026-08-28T04:05:01.949594+00:00", "kind": "readme", "missing": false, "url": "https://github.com/substrait-io/substrait"}, {"content_hash": "3704b30ab5993f6c5b3813072a38f4dc738fe2e06cbb2c2be352a596282315b7", "fetched_at": "2026-08-29T11:31:14.764605+00:00", "kind": "homepage", "missing": false, "url": "https://substrait.io"}, {"content_hash": "62c1a4d897c57a64a071b945f58b2a39fc4a62cb945c092a601ebfc61f1876d7", "fetched_at": "2026-08-29T11:31:14.774048+00:00", "kind": "site_page", "missing": false, "url": "https://substrait.io/about"}, {"content_hash": "399877c44605fa91b37bf84734ce54c72ce67bf9e5a5c7d9c2e244592b6de6f3", "fetched_at": "2026-08-29T11:31:14.782934+00:00", "kind": "site_page", "missing": false, "url": "https://substrait.io/faq"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:05:01.949594+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:05:01.949594+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T04:30:24.694071+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "2926184328c1d3bb3fb59c5482619ade2b256034114cedceca005a92ff9e1ab0", "fetched_at": "2026-08-28T04:05:01.949594+00:00", "kind": "readme", "missing": false, "url": "https://github.com/substrait-io/substrait"}, {"content_hash": "3704b30ab5993f6c5b3813072a38f4dc738fe2e06cbb2c2be352a596282315b7", "fetched_at": "2026-08-29T11:31:14.764605+00:00", "kind": "homepage", "missing": false, "url": "https://substrait.io"}, {"content_hash": "62c1a4d897c57a64a071b945f58b2a39fc4a62cb945c092a601ebfc61f1876d7", "fetched_at": "2026-08-29T11:31:14.774048+00:00", "kind": "site_page", "missing": false, "url": "https://substrait.io/about"}, {"content_hash": "399877c44605fa91b37bf84734ce54c72ce67bf9e5a5c7d9c2e244592b6de6f3", "fetched_at": "2026-08-29T11:31:14.782934+00:00", "kind": "site_page", "missing": false, "url": "https://substrait.io/faq"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T04:30:24.694071+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "2926184328c1d3bb3fb59c5482619ade2b256034114cedceca005a92ff9e1ab0", "fetched_at": "2026-08-28T04:05:01.949594+00:00", "kind": "readme", "missing": false, "url": "https://github.com/substrait-io/substrait"}, {"content_hash": "3704b30ab5993f6c5b3813072a38f4dc738fe2e06cbb2c2be352a596282315b7", "fetched_at": "2026-08-29T11:31:14.764605+00:00", "kind": "homepage", "missing": false, "url": "https://substrait.io"}, {"content_hash": "62c1a4d897c57a64a071b945f58b2a39fc4a62cb945c092a601ebfc61f1876d7", "fetched_at": "2026-08-29T11:31:14.774048+00:00", "kind": "site_page", "missing": false, "url": "https://substrait.io/about"}, {"content_hash": "399877c44605fa91b37bf84734ce54c72ce67bf9e5a5c7d9c2e244592b6de6f3", "fetched_at": "2026-08-29T11:31:14.782934+00:00", "kind": "site_page", "missing": false, "url": "https://substrait.io/faq"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T04:30:24.694071+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "2926184328c1d3bb3fb59c5482619ade2b256034114cedceca005a92ff9e1ab0", "fetched_at": "2026-08-28T04:05:01.949594+00:00", "kind": "readme", "missing": false, "url": "https://github.com/substrait-io/substrait"}, {"content_hash": "3704b30ab5993f6c5b3813072a38f4dc738fe2e06cbb2c2be352a596282315b7", "fetched_at": "2026-08-29T11:31:14.764605+00:00", "kind": "homepage", "missing": false, "url": "https://substrait.io"}, {"content_hash": "62c1a4d897c57a64a071b945f58b2a39fc4a62cb945c092a601ebfc61f1876d7", "fetched_at": "2026-08-29T11:31:14.774048+00:00", "kind": "site_page", "missing": false, "url": "https://substrait.io/about"}, {"content_hash": "399877c44605fa91b37bf84734ce54c72ce67bf9e5a5c7d9c2e244592b6de6f3", "fetched_at": "2026-08-29T11:31:14.782934+00:00", "kind": "site_page", "missing": false, "url": "https://substrait.io/faq"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T04:30:24.694071+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "2926184328c1d3bb3fb59c5482619ade2b256034114cedceca005a92ff9e1ab0", "fetched_at": "2026-08-28T04:05:01.949594+00:00", "kind": "readme", "missing": false, "url": "https://github.com/substrait-io/substrait"}, {"content_hash": "3704b30ab5993f6c5b3813072a38f4dc738fe2e06cbb2c2be352a596282315b7", "fetched_at": "2026-08-29T11:31:14.764605+00:00", "kind": "homepage", "missing": false, "url": "https://substrait.io"}, {"content_hash": "62c1a4d897c57a64a071b945f58b2a39fc4a62cb945c092a601ebfc61f1876d7", "fetched_at": "2026-08-29T11:31:14.774048+00:00", "kind": "site_page", "missing": false, "url": "https://substrait.io/about"}, {"content_hash": "399877c44605fa91b37bf84734ce54c72ce67bf9e5a5c7d9c2e244592b6de6f3", "fetched_at": "2026-08-29T11:31:14.782934+00:00", "kind": "site_page", "missing": false, "url": "https://substrait.io/faq"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 99, "longevity": 100, "rhythm": 99}, "computed_at": "2026-09-03T02:20:16.233290+00:00", "flags": [], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 1828, "days_push": 8, "days_rel": 10, "gap_med": 7.0, "n_releases_24m": 55}, "score": 99, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}