{"adoption": {"forks": 505, "observed_at": "2026-08-28T04:06:19.369254+00:00", "stars": 2152}, "canonical_url": "https://ross.abutalabs.com/products/openfl", "card": {"archived": false, "artifact_type": "framework", "description": "An open source library for creative expression on the web, desktop, mobile and consoles. Inspired by the classic Flash and AIR APIs.", "domain": ["cross-platform", "web-development", "frontend", "graphics"], "enriched": true, "function": ["game-engine", "graphics", "animation", "audio-processing", "ui-components", "gui"], "health_score": 99, "homepage": "https://www.openfl.org", "language": "Haxe", "license": "MIT", "license_family": "permissive", "maturity": "active", "member_repos": ["openfl/openfl"], "name": "openfl/openfl", "platform": ["cross-platform", "windows", "browser", "cpp", "wasm"], "pushed_at": "2026-08-24T18:46:08+00:00", "repo": "openfl/openfl", "stars": 2152, "tags": ["haxe", "flash-api", "adobe-air", "lime", "html5", "webgl", "stage3d", "hashlink", "neko", "2d-graphics", "3d-graphics", "gamedev", "game-development", "macos", "linux", "android", "ios"], "topics": ["adobe-air", "adobe-flash", "cross-platform", "flash", "frontend", "game-development", "gamedev", "hashlink", "haxe", "multi-platform", "neko", "openfl", "front-end", "lime"], "urls": [], "use_cases": ["build a cross-platform 2d game with one codebase", "port an old flash actionscript game to html5", "make a mobile app with flash-like display list apis", "develop a game for ios android and web at once", "use haxeflixel or starling to build a game", "create gpu-accelerated web graphics with webgl", "migrate adobe air app to open source stack"], "what_it_is": "OpenFL is an open-source Haxe framework implementing the classic Flash/AIR APIs for building games and creative applications. A single codebase compiles to native C++, JavaScript/WebGL, Neko, HashLink, or AIR across desktop, mobile, web, and console targets.", "when_to_avoid": ["you need a mainstream ecosystem with large hiring pools like Unity or Godot", "you want pure JavaScript/TypeScript web development without Haxe", "your project needs cutting-edge 3D rendering beyond the Stage 3D pipeline"], "when_to_choose": ["you know ActionScript 3 or the Flash API and want a modern open-source successor", "you need one Haxe codebase deployed to native desktop, mobile, and HTML5", "you want to build on engines like HaxeFlixel, HaxePunk, Starling, or Away3D"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/openfl", "repo": "openfl/openfl", "role": "main", "score": 89}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:06:19.369254+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T02:50:55.010559+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "6e5f64ff6aebb551f5cf7d1adf2f6cb66b83b1a7e9803225d86c643e917ebb3b", "fetched_at": "2026-08-28T04:06:19.369254+00:00", "kind": "readme", "missing": false, "url": "https://github.com/openfl/openfl"}, {"content_hash": "95d4aba67b20f16d13c8d0dd613f977688a5cc39297771573c11f1dabe883c45", "fetched_at": "2026-08-29T10:30:45.444888+00:00", "kind": "homepage", "missing": false, "url": "https://www.openfl.org"}, {"content_hash": "cdc455bc910388127cbf267754c6753350f8ad9c6d26bf261905ed953dab6a74", "fetched_at": "2026-08-29T10:30:45.447791+00:00", "kind": "site_page", "missing": false, "url": "https://www.openfl.org/learn/docs/getting-started"}, {"content_hash": "8ab0823bf6756c952fddf5ad29186943f4ee47531474fba19774a12232572952", "fetched_at": "2026-08-29T10:30:45.449697+00:00", "kind": "site_page", "missing": false, "url": "https://www.openfl.org/learn/features"}, {"content_hash": "e7c2792e36c4e026b577e8fb704959ee425737ef34e4270676a4e7274c88c076", "fetched_at": "2026-08-29T10:30:45.451725+00:00", "kind": "site_page", "missing": false, "url": "https://www.openfl.org/learn/haxelib/docs/targets"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:06:19.369254+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T02:50:55.010559+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "6e5f64ff6aebb551f5cf7d1adf2f6cb66b83b1a7e9803225d86c643e917ebb3b", "fetched_at": "2026-08-28T04:06:19.369254+00:00", "kind": "readme", "missing": false, "url": "https://github.com/openfl/openfl"}, {"content_hash": "95d4aba67b20f16d13c8d0dd613f977688a5cc39297771573c11f1dabe883c45", "fetched_at": "2026-08-29T10:30:45.444888+00:00", "kind": "homepage", "missing": false, "url": "https://www.openfl.org"}, {"content_hash": "cdc455bc910388127cbf267754c6753350f8ad9c6d26bf261905ed953dab6a74", "fetched_at": "2026-08-29T10:30:45.447791+00:00", "kind": "site_page", "missing": false, "url": "https://www.openfl.org/learn/docs/getting-started"}, {"content_hash": "8ab0823bf6756c952fddf5ad29186943f4ee47531474fba19774a12232572952", "fetched_at": "2026-08-29T10:30:45.449697+00:00", "kind": "site_page", "missing": false, "url": "https://www.openfl.org/learn/features"}, {"content_hash": "e7c2792e36c4e026b577e8fb704959ee425737ef34e4270676a4e7274c88c076", "fetched_at": "2026-08-29T10:30:45.451725+00:00", "kind": "site_page", "missing": false, "url": "https://www.openfl.org/learn/haxelib/docs/targets"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T02:50:55.010559+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "6e5f64ff6aebb551f5cf7d1adf2f6cb66b83b1a7e9803225d86c643e917ebb3b", "fetched_at": "2026-08-28T04:06:19.369254+00:00", "kind": "readme", "missing": false, "url": "https://github.com/openfl/openfl"}, {"content_hash": "95d4aba67b20f16d13c8d0dd613f977688a5cc39297771573c11f1dabe883c45", "fetched_at": "2026-08-29T10:30:45.444888+00:00", "kind": "homepage", "missing": false, "url": "https://www.openfl.org"}, {"content_hash": "cdc455bc910388127cbf267754c6753350f8ad9c6d26bf261905ed953dab6a74", "fetched_at": "2026-08-29T10:30:45.447791+00:00", "kind": "site_page", "missing": false, "url": "https://www.openfl.org/learn/docs/getting-started"}, {"content_hash": "8ab0823bf6756c952fddf5ad29186943f4ee47531474fba19774a12232572952", "fetched_at": "2026-08-29T10:30:45.449697+00:00", "kind": "site_page", "missing": false, "url": "https://www.openfl.org/learn/features"}, {"content_hash": "e7c2792e36c4e026b577e8fb704959ee425737ef34e4270676a4e7274c88c076", "fetched_at": "2026-08-29T10:30:45.451725+00:00", "kind": "site_page", "missing": false, "url": "https://www.openfl.org/learn/haxelib/docs/targets"}], "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:06:19.369254+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:06:19.369254+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:06:19.369254+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T02:50:55.010559+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "6e5f64ff6aebb551f5cf7d1adf2f6cb66b83b1a7e9803225d86c643e917ebb3b", "fetched_at": "2026-08-28T04:06:19.369254+00:00", "kind": "readme", "missing": false, "url": "https://github.com/openfl/openfl"}, {"content_hash": "95d4aba67b20f16d13c8d0dd613f977688a5cc39297771573c11f1dabe883c45", "fetched_at": "2026-08-29T10:30:45.444888+00:00", "kind": "homepage", "missing": false, "url": "https://www.openfl.org"}, {"content_hash": "cdc455bc910388127cbf267754c6753350f8ad9c6d26bf261905ed953dab6a74", "fetched_at": "2026-08-29T10:30:45.447791+00:00", "kind": "site_page", "missing": false, "url": "https://www.openfl.org/learn/docs/getting-started"}, {"content_hash": "8ab0823bf6756c952fddf5ad29186943f4ee47531474fba19774a12232572952", "fetched_at": "2026-08-29T10:30:45.449697+00:00", "kind": "site_page", "missing": false, "url": "https://www.openfl.org/learn/features"}, {"content_hash": "e7c2792e36c4e026b577e8fb704959ee425737ef34e4270676a4e7274c88c076", "fetched_at": "2026-08-29T10:30:45.451725+00:00", "kind": "site_page", "missing": false, "url": "https://www.openfl.org/learn/haxelib/docs/targets"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:06:19.369254+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:06:19.369254+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T02:50:55.010559+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "6e5f64ff6aebb551f5cf7d1adf2f6cb66b83b1a7e9803225d86c643e917ebb3b", "fetched_at": "2026-08-28T04:06:19.369254+00:00", "kind": "readme", "missing": false, "url": "https://github.com/openfl/openfl"}, {"content_hash": "95d4aba67b20f16d13c8d0dd613f977688a5cc39297771573c11f1dabe883c45", "fetched_at": "2026-08-29T10:30:45.444888+00:00", "kind": "homepage", "missing": false, "url": "https://www.openfl.org"}, {"content_hash": "cdc455bc910388127cbf267754c6753350f8ad9c6d26bf261905ed953dab6a74", "fetched_at": "2026-08-29T10:30:45.447791+00:00", "kind": "site_page", "missing": false, "url": "https://www.openfl.org/learn/docs/getting-started"}, {"content_hash": "8ab0823bf6756c952fddf5ad29186943f4ee47531474fba19774a12232572952", "fetched_at": "2026-08-29T10:30:45.449697+00:00", "kind": "site_page", "missing": false, "url": "https://www.openfl.org/learn/features"}, {"content_hash": "e7c2792e36c4e026b577e8fb704959ee425737ef34e4270676a4e7274c88c076", "fetched_at": "2026-08-29T10:30:45.451725+00:00", "kind": "site_page", "missing": false, "url": "https://www.openfl.org/learn/haxelib/docs/targets"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:06:19.369254+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:06:19.369254+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:06:19.369254+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T02:50:55.010559+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "6e5f64ff6aebb551f5cf7d1adf2f6cb66b83b1a7e9803225d86c643e917ebb3b", "fetched_at": "2026-08-28T04:06:19.369254+00:00", "kind": "readme", "missing": false, "url": "https://github.com/openfl/openfl"}, {"content_hash": "95d4aba67b20f16d13c8d0dd613f977688a5cc39297771573c11f1dabe883c45", "fetched_at": "2026-08-29T10:30:45.444888+00:00", "kind": "homepage", "missing": false, "url": "https://www.openfl.org"}, {"content_hash": "cdc455bc910388127cbf267754c6753350f8ad9c6d26bf261905ed953dab6a74", "fetched_at": "2026-08-29T10:30:45.447791+00:00", "kind": "site_page", "missing": false, "url": "https://www.openfl.org/learn/docs/getting-started"}, {"content_hash": "8ab0823bf6756c952fddf5ad29186943f4ee47531474fba19774a12232572952", "fetched_at": "2026-08-29T10:30:45.449697+00:00", "kind": "site_page", "missing": false, "url": "https://www.openfl.org/learn/features"}, {"content_hash": "e7c2792e36c4e026b577e8fb704959ee425737ef34e4270676a4e7274c88c076", "fetched_at": "2026-08-29T10:30:45.451725+00:00", "kind": "site_page", "missing": false, "url": "https://www.openfl.org/learn/haxelib/docs/targets"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:06:19.369254+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:06:19.369254+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T02:50:55.010559+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "6e5f64ff6aebb551f5cf7d1adf2f6cb66b83b1a7e9803225d86c643e917ebb3b", "fetched_at": "2026-08-28T04:06:19.369254+00:00", "kind": "readme", "missing": false, "url": "https://github.com/openfl/openfl"}, {"content_hash": "95d4aba67b20f16d13c8d0dd613f977688a5cc39297771573c11f1dabe883c45", "fetched_at": "2026-08-29T10:30:45.444888+00:00", "kind": "homepage", "missing": false, "url": "https://www.openfl.org"}, {"content_hash": "cdc455bc910388127cbf267754c6753350f8ad9c6d26bf261905ed953dab6a74", "fetched_at": "2026-08-29T10:30:45.447791+00:00", "kind": "site_page", "missing": false, "url": "https://www.openfl.org/learn/docs/getting-started"}, {"content_hash": "8ab0823bf6756c952fddf5ad29186943f4ee47531474fba19774a12232572952", "fetched_at": "2026-08-29T10:30:45.449697+00:00", "kind": "site_page", "missing": false, "url": "https://www.openfl.org/learn/features"}, {"content_hash": "e7c2792e36c4e026b577e8fb704959ee425737ef34e4270676a4e7274c88c076", "fetched_at": "2026-08-29T10:30:45.451725+00:00", "kind": "site_page", "missing": false, "url": "https://www.openfl.org/learn/haxelib/docs/targets"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T02:50:55.010559+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "6e5f64ff6aebb551f5cf7d1adf2f6cb66b83b1a7e9803225d86c643e917ebb3b", "fetched_at": "2026-08-28T04:06:19.369254+00:00", "kind": "readme", "missing": false, "url": "https://github.com/openfl/openfl"}, {"content_hash": "95d4aba67b20f16d13c8d0dd613f977688a5cc39297771573c11f1dabe883c45", "fetched_at": "2026-08-29T10:30:45.444888+00:00", "kind": "homepage", "missing": false, "url": "https://www.openfl.org"}, {"content_hash": "cdc455bc910388127cbf267754c6753350f8ad9c6d26bf261905ed953dab6a74", "fetched_at": "2026-08-29T10:30:45.447791+00:00", "kind": "site_page", "missing": false, "url": "https://www.openfl.org/learn/docs/getting-started"}, {"content_hash": "8ab0823bf6756c952fddf5ad29186943f4ee47531474fba19774a12232572952", "fetched_at": "2026-08-29T10:30:45.449697+00:00", "kind": "site_page", "missing": false, "url": "https://www.openfl.org/learn/features"}, {"content_hash": "e7c2792e36c4e026b577e8fb704959ee425737ef34e4270676a4e7274c88c076", "fetched_at": "2026-08-29T10:30:45.451725+00:00", "kind": "site_page", "missing": false, "url": "https://www.openfl.org/learn/haxelib/docs/targets"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T02:50:55.010559+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "6e5f64ff6aebb551f5cf7d1adf2f6cb66b83b1a7e9803225d86c643e917ebb3b", "fetched_at": "2026-08-28T04:06:19.369254+00:00", "kind": "readme", "missing": false, "url": "https://github.com/openfl/openfl"}, {"content_hash": "95d4aba67b20f16d13c8d0dd613f977688a5cc39297771573c11f1dabe883c45", "fetched_at": "2026-08-29T10:30:45.444888+00:00", "kind": "homepage", "missing": false, "url": "https://www.openfl.org"}, {"content_hash": "cdc455bc910388127cbf267754c6753350f8ad9c6d26bf261905ed953dab6a74", "fetched_at": "2026-08-29T10:30:45.447791+00:00", "kind": "site_page", "missing": false, "url": "https://www.openfl.org/learn/docs/getting-started"}, {"content_hash": "8ab0823bf6756c952fddf5ad29186943f4ee47531474fba19774a12232572952", "fetched_at": "2026-08-29T10:30:45.449697+00:00", "kind": "site_page", "missing": false, "url": "https://www.openfl.org/learn/features"}, {"content_hash": "e7c2792e36c4e026b577e8fb704959ee425737ef34e4270676a4e7274c88c076", "fetched_at": "2026-08-29T10:30:45.451725+00:00", "kind": "site_page", "missing": false, "url": "https://www.openfl.org/learn/haxelib/docs/targets"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T02:50:55.010559+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "6e5f64ff6aebb551f5cf7d1adf2f6cb66b83b1a7e9803225d86c643e917ebb3b", "fetched_at": "2026-08-28T04:06:19.369254+00:00", "kind": "readme", "missing": false, "url": "https://github.com/openfl/openfl"}, {"content_hash": "95d4aba67b20f16d13c8d0dd613f977688a5cc39297771573c11f1dabe883c45", "fetched_at": "2026-08-29T10:30:45.444888+00:00", "kind": "homepage", "missing": false, "url": "https://www.openfl.org"}, {"content_hash": "cdc455bc910388127cbf267754c6753350f8ad9c6d26bf261905ed953dab6a74", "fetched_at": "2026-08-29T10:30:45.447791+00:00", "kind": "site_page", "missing": false, "url": "https://www.openfl.org/learn/docs/getting-started"}, {"content_hash": "8ab0823bf6756c952fddf5ad29186943f4ee47531474fba19774a12232572952", "fetched_at": "2026-08-29T10:30:45.449697+00:00", "kind": "site_page", "missing": false, "url": "https://www.openfl.org/learn/features"}, {"content_hash": "e7c2792e36c4e026b577e8fb704959ee425737ef34e4270676a4e7274c88c076", "fetched_at": "2026-08-29T10:30:45.451725+00:00", "kind": "site_page", "missing": false, "url": "https://www.openfl.org/learn/haxelib/docs/targets"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 99, "longevity": 100, "rhythm": 71}, "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": 4915, "days_push": 9, "days_rel": 112, "gap_med": 84, "n_releases_24m": 6}, "score": 89, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}