{"adoption": {"forks": 183, "observed_at": "2026-08-28T04:05:37.910956+00:00", "stars": 1799}, "canonical_url": "https://ross.abutalabs.com/products/tangle", "card": {"archived": false, "artifact_type": "library", "description": "a JavaScript library for reactive documents", "domain": ["web-development", "frontend", "education", "data-visualization"], "enriched": true, "function": ["state-management", "templating"], "health_score": 20, "homepage": "http://worrydream.com/Tangle/", "language": "JavaScript", "license": null, "license_family": "other", "maturity": "abandoned", "member_repos": ["worrydream/Tangle"], "name": "worrydream/Tangle", "platform": ["browser"], "pushed_at": "2011-11-24T04:25:39+00:00", "repo": "worrydream/Tangle", "stars": 1799, "tags": ["reactive-documents", "explorable-explanations", "interactive-writing", "data-binding", "javascript"], "topics": [], "urls": [], "use_cases": ["create interactive explorable explanations", "let readers play with parameters in an article", "build reactive essays with adjustable numbers", "embed live calculations in web documents", "make interactive tutorials with HTML and CSS", "visualize how changing inputs affects results inline"], "what_it_is": "Tangle is a JavaScript library for creating reactive documents where readers can interactively adjust variables and see the text update immediately. It lets authors write normal HTML/CSS with special data attributes plus a small JavaScript model to define how variables are computed.", "when_to_avoid": ["you need a modern maintained framework with active support", "you're building a full web application rather than a document", "you need TypeScript, tooling, or npm ecosystem integration"], "when_to_choose": ["you want Bret Victor-style explorable explanations in a plain HTML page", "you need a tiny, dependency-light way to bind variables to document text", "you're writing educational content with interactive parameters"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/tangle", "repo": "worrydream/Tangle", "role": "main", "score": 32}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:05:37.910956+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T03:22:18.581698+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "939a62d464b47d112d9e4363189f45d138cd5b68e2921b14480e15ffa6e43ed7", "fetched_at": "2026-08-29T11:01:27.181021+00:00", "kind": "homepage", "missing": false, "url": "http://worrydream.com/Tangle/"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:05:37.910956+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T03:22:18.581698+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "939a62d464b47d112d9e4363189f45d138cd5b68e2921b14480e15ffa6e43ed7", "fetched_at": "2026-08-29T11:01:27.181021+00:00", "kind": "homepage", "missing": false, "url": "http://worrydream.com/Tangle/"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T03:22:18.581698+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "939a62d464b47d112d9e4363189f45d138cd5b68e2921b14480e15ffa6e43ed7", "fetched_at": "2026-08-29T11:01:27.181021+00:00", "kind": "homepage", "missing": false, "url": "http://worrydream.com/Tangle/"}], "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:37.910956+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:05:37.910956+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:05:37.910956+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T03:22:18.581698+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "939a62d464b47d112d9e4363189f45d138cd5b68e2921b14480e15ffa6e43ed7", "fetched_at": "2026-08-29T11:01:27.181021+00:00", "kind": "homepage", "missing": false, "url": "http://worrydream.com/Tangle/"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:05:37.910956+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:05:37.910956+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T03:22:18.581698+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "939a62d464b47d112d9e4363189f45d138cd5b68e2921b14480e15ffa6e43ed7", "fetched_at": "2026-08-29T11:01:27.181021+00:00", "kind": "homepage", "missing": false, "url": "http://worrydream.com/Tangle/"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:05:37.910956+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:05:37.910956+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:05:37.910956+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T03:22:18.581698+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "939a62d464b47d112d9e4363189f45d138cd5b68e2921b14480e15ffa6e43ed7", "fetched_at": "2026-08-29T11:01:27.181021+00:00", "kind": "homepage", "missing": false, "url": "http://worrydream.com/Tangle/"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:05:37.910956+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:05:37.910956+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T03:22:18.581698+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "939a62d464b47d112d9e4363189f45d138cd5b68e2921b14480e15ffa6e43ed7", "fetched_at": "2026-08-29T11:01:27.181021+00:00", "kind": "homepage", "missing": false, "url": "http://worrydream.com/Tangle/"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T03:22:18.581698+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "939a62d464b47d112d9e4363189f45d138cd5b68e2921b14480e15ffa6e43ed7", "fetched_at": "2026-08-29T11:01:27.181021+00:00", "kind": "homepage", "missing": false, "url": "http://worrydream.com/Tangle/"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T03:22:18.581698+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "939a62d464b47d112d9e4363189f45d138cd5b68e2921b14480e15ffa6e43ed7", "fetched_at": "2026-08-29T11:01:27.181021+00:00", "kind": "homepage", "missing": false, "url": "http://worrydream.com/Tangle/"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T03:22:18.581698+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "939a62d464b47d112d9e4363189f45d138cd5b68e2921b14480e15ffa6e43ed7", "fetched_at": "2026-08-29T11:01:27.181021+00:00", "kind": "homepage", "missing": false, "url": "http://worrydream.com/Tangle/"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 0, "longevity": 100, "rhythm": 35}, "computed_at": "2026-09-03T02:20:16.233290+00:00", "flags": ["no_releases", "no_license", "no_readme"], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 5562, "days_push": 5396, "days_rel": null, "gap_med": null, "n_releases_24m": 0}, "score": 32, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}