{"adoption": {"forks": 386, "observed_at": "2026-08-28T04:06:40.920025+00:00", "stars": 2361}, "canonical_url": "https://ross.abutalabs.com/products/comcast-freeflow", "card": {"archived": true, "artifact_type": "library", "description": "A layout engine for Android that decouples layouts from the View containers that manage scrolling and view recycling. FreeFlow makes it really easy to create custom layouts and beautiful transition animations as data and layouts change", "domain": ["mobile-development", "android-tools", "web-development"], "enriched": true, "function": ["ui-components", "animation", "state-management"], "health_score": 10, "homepage": null, "language": "Java", "license": "Apache-2.0", "license_family": "permissive", "maturity": "abandoned", "member_repos": ["Comcast/FreeFlow"], "name": "Comcast/FreeFlow", "platform": ["jvm"], "pushed_at": "2018-11-01T17:58:32+00:00", "repo": "Comcast/FreeFlow", "stars": 2361, "tags": ["layout-engine", "view-recycling", "transition-animations", "android-viewgroup", "custom-layouts", "android", "mobile"], "topics": [], "urls": [], "use_cases": ["create custom grid and list layouts for Android apps", "animate transitions when switching between layouts at runtime", "build sectioned scrolling containers with view recycling", "implement magazine-style or photo-wall layouts on Android", "swap layout styles without rewriting view containers"], "what_it_is": "FreeFlow is a layout engine for Android that decouples layouts from the View containers managing scrolling and view recycling. It enables swappable custom layouts at runtime with smooth transition animations when layouts change.", "when_to_avoid": ["starting a new Android project - the project is officially abandoned and the authors recommend RecyclerView", "needing long-term support, bug fixes, or modern Android compatibility", "working with Jetpack Compose or modern Android UI toolkits"], "when_to_choose": ["maintaining a legacy Android app already built on FreeFlow", "needing runtime-swappable layouts with transition animations on old Android codebases not using RecyclerView"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/comcast-freeflow", "repo": "Comcast/FreeFlow", "role": "main", "score": 10}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:06:40.920025+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T02:36:05.616302+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "45fea378f48b64ae42b41ff7b9410f5a270e7731d27eea52cc5a7757df9e6993", "fetched_at": "2026-08-28T04:06:40.920025+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Comcast/FreeFlow"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:06:40.920025+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T02:36:05.616302+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "45fea378f48b64ae42b41ff7b9410f5a270e7731d27eea52cc5a7757df9e6993", "fetched_at": "2026-08-28T04:06:40.920025+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Comcast/FreeFlow"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T02:36:05.616302+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "45fea378f48b64ae42b41ff7b9410f5a270e7731d27eea52cc5a7757df9e6993", "fetched_at": "2026-08-28T04:06:40.920025+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Comcast/FreeFlow"}], "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:40.920025+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:06:40.920025+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:06:40.920025+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T02:36:05.616302+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "45fea378f48b64ae42b41ff7b9410f5a270e7731d27eea52cc5a7757df9e6993", "fetched_at": "2026-08-28T04:06:40.920025+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Comcast/FreeFlow"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:06:40.920025+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:06:40.920025+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T02:36:05.616302+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "45fea378f48b64ae42b41ff7b9410f5a270e7731d27eea52cc5a7757df9e6993", "fetched_at": "2026-08-28T04:06:40.920025+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Comcast/FreeFlow"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:06:40.920025+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:06:40.920025+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:06:40.920025+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T02:36:05.616302+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "45fea378f48b64ae42b41ff7b9410f5a270e7731d27eea52cc5a7757df9e6993", "fetched_at": "2026-08-28T04:06:40.920025+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Comcast/FreeFlow"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:06:40.920025+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:06:40.920025+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T02:36:05.616302+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "45fea378f48b64ae42b41ff7b9410f5a270e7731d27eea52cc5a7757df9e6993", "fetched_at": "2026-08-28T04:06:40.920025+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Comcast/FreeFlow"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T02:36:05.616302+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "45fea378f48b64ae42b41ff7b9410f5a270e7731d27eea52cc5a7757df9e6993", "fetched_at": "2026-08-28T04:06:40.920025+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Comcast/FreeFlow"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T02:36:05.616302+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "45fea378f48b64ae42b41ff7b9410f5a270e7731d27eea52cc5a7757df9e6993", "fetched_at": "2026-08-28T04:06:40.920025+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Comcast/FreeFlow"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T02:36:05.616302+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "45fea378f48b64ae42b41ff7b9410f5a270e7731d27eea52cc5a7757df9e6993", "fetched_at": "2026-08-28T04:06:40.920025+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Comcast/FreeFlow"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 0, "longevity": 100, "rhythm": 8}, "computed_at": "2026-09-03T02:20:16.233290+00:00", "flags": ["archived"], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 4712, "days_push": 2862, "days_rel": null, "gap_med": null, "n_releases_24m": 0}, "score": 10, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}