{"adoption": {"forks": 708, "observed_at": "2026-08-28T04:03:22.895241+00:00", "stars": 1050}, "canonical_url": "https://ross.abutalabs.com/products/webgl-lessons", "card": {"archived": false, "artifact_type": "learning-resource", "description": "https://github.com/tparisi/webgl-lessons is now the officially maintained fork for this project", "domain": ["graphics", "web-development", "tutorials"], "enriched": true, "function": ["graphics", "developer-tools"], "health_score": 20, "homepage": "http://learningwebgl.com/lessons/", "language": "Python", "license": "MIT", "license_family": "permissive", "maturity": "abandoned", "member_repos": ["gpjt/webgl-lessons"], "name": "gpjt/webgl-lessons", "platform": ["browser", "cross-platform"], "pushed_at": "2013-04-10T18:01:09+00:00", "repo": "gpjt/webgl-lessons", "stars": 1050, "tags": ["webgl", "tutorials", "3d-graphics", "opengl", "javascript", "lessons", "game-development"], "topics": [], "urls": [], "use_cases": ["learn webgl from scratch", "tutorial on rendering 3d graphics in the browser", "example code for webgl shaders and textures", "understand webgl basics like drawing cubes and lighting", "find webgl lesson material similar to nehe opengl tutorials"], "what_it_is": "A series of sequential WebGL lessons and example code teaching 3D graphics programming in the browser, loosely modeled on the classic NeHe OpenGL tutorials. This original repository is no longer maintained; development has moved to the tparisi/webgl-lessons fork.", "when_to_avoid": ["you need a maintained library or framework for production WebGL work", "you want modern WebGL2 or WebGPU content", "you expect active support or recent updates"], "when_to_choose": ["you want a step-by-step introduction to WebGL with explanatory text", "you are learning browser-based 3D graphics fundamentals", "you want small, self-contained example programs to study"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/webgl-lessons", "repo": "gpjt/webgl-lessons", "role": "main", "score": 32}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:03:22.895241+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T07:00:22.770422+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "0d3ddf5a6ca7cc6c69069a9350a34fb513e0fca4cfffd9f86e09cbead29947f0", "fetched_at": "2026-08-28T04:03:22.895241+00:00", "kind": "readme", "missing": false, "url": "https://github.com/gpjt/webgl-lessons"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:03:22.895241+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T07:00:22.770422+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "0d3ddf5a6ca7cc6c69069a9350a34fb513e0fca4cfffd9f86e09cbead29947f0", "fetched_at": "2026-08-28T04:03:22.895241+00:00", "kind": "readme", "missing": false, "url": "https://github.com/gpjt/webgl-lessons"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T07:00:22.770422+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "0d3ddf5a6ca7cc6c69069a9350a34fb513e0fca4cfffd9f86e09cbead29947f0", "fetched_at": "2026-08-28T04:03:22.895241+00:00", "kind": "readme", "missing": false, "url": "https://github.com/gpjt/webgl-lessons"}], "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:03:22.895241+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:03:22.895241+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:03:22.895241+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T07:00:22.770422+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "0d3ddf5a6ca7cc6c69069a9350a34fb513e0fca4cfffd9f86e09cbead29947f0", "fetched_at": "2026-08-28T04:03:22.895241+00:00", "kind": "readme", "missing": false, "url": "https://github.com/gpjt/webgl-lessons"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:03:22.895241+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:03:22.895241+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T07:00:22.770422+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "0d3ddf5a6ca7cc6c69069a9350a34fb513e0fca4cfffd9f86e09cbead29947f0", "fetched_at": "2026-08-28T04:03:22.895241+00:00", "kind": "readme", "missing": false, "url": "https://github.com/gpjt/webgl-lessons"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:03:22.895241+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:03:22.895241+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:03:22.895241+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T07:00:22.770422+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "0d3ddf5a6ca7cc6c69069a9350a34fb513e0fca4cfffd9f86e09cbead29947f0", "fetched_at": "2026-08-28T04:03:22.895241+00:00", "kind": "readme", "missing": false, "url": "https://github.com/gpjt/webgl-lessons"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:03:22.895241+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:03:22.895241+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T07:00:22.770422+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "0d3ddf5a6ca7cc6c69069a9350a34fb513e0fca4cfffd9f86e09cbead29947f0", "fetched_at": "2026-08-28T04:03:22.895241+00:00", "kind": "readme", "missing": false, "url": "https://github.com/gpjt/webgl-lessons"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T07:00:22.770422+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "0d3ddf5a6ca7cc6c69069a9350a34fb513e0fca4cfffd9f86e09cbead29947f0", "fetched_at": "2026-08-28T04:03:22.895241+00:00", "kind": "readme", "missing": false, "url": "https://github.com/gpjt/webgl-lessons"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T07:00:22.770422+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "0d3ddf5a6ca7cc6c69069a9350a34fb513e0fca4cfffd9f86e09cbead29947f0", "fetched_at": "2026-08-28T04:03:22.895241+00:00", "kind": "readme", "missing": false, "url": "https://github.com/gpjt/webgl-lessons"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T07:00:22.770422+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "0d3ddf5a6ca7cc6c69069a9350a34fb513e0fca4cfffd9f86e09cbead29947f0", "fetched_at": "2026-08-28T04:03:22.895241+00:00", "kind": "readme", "missing": false, "url": "https://github.com/gpjt/webgl-lessons"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 0, "longevity": 100, "rhythm": 35}, "computed_at": "2026-09-03T02:20:16.233290+00:00", "flags": ["no_releases"], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 6175, "days_push": 4893, "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}}