{"adoption": {"forks": 151, "observed_at": "2026-08-28T04:06:17.488318+00:00", "stars": 2135}, "canonical_url": "https://ross.abutalabs.com/products/mortar", "card": {"archived": true, "artifact_type": "library", "description": "A simple library that makes it easy to pair thin views with dedicated controllers, isolated from most of the vagaries of the Activity life cycle.", "domain": ["mobile-development", "android-tools"], "enriched": true, "function": ["state-management", "middleware"], "health_score": 10, "homepage": null, "language": "Java", "license": "Apache-2.0", "license_family": "permissive", "maturity": "abandoned", "member_repos": ["square/mortar"], "name": "square/mortar", "platform": ["jvm"], "pushed_at": "2023-03-18T23:32:22+00:00", "repo": "square/mortar", "stars": 2135, "tags": ["mvp", "android-lifecycle", "dependency-injection", "deprecated", "dagger", "presenters", "android", "mobile"], "topics": [], "urls": [], "use_cases": ["manage Android view state across configuration changes", "implement MVP architecture on Android", "survive Activity recreation with persisted presenters", "scope Dagger dependency graphs to screens or wizard sessions", "decouple presenters from Android view lifecycle"], "what_it_is": "Mortar is a Java library for Android that pairs thin views with dedicated presenters, providing a simplified, composable overlay on the Android Activity lifecycle. It uses Context#getSystemService to supply services like dependency injection (Dagger) and bundle persistence via MortarScope singletons.", "when_to_avoid": ["starting a new Android project - it is deprecated in favor of Square Workflow", "you want Jetpack ViewModels or modern Android architecture components", "you need a library with active community support"], "when_to_choose": ["maintaining a legacy Android app already built on Mortar", "you specifically want the Views-as-modular-unit MVP pattern with Dagger 1/2"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/mortar", "repo": "square/mortar", "role": "main", "score": 10}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:06:17.488318+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T02:51:55.341852+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "bace9315c86b9d1361a4d57c00bfb2d40f57958cb538f2c6cc804d0659ef10c8", "fetched_at": "2026-08-28T04:06:17.488318+00:00", "kind": "readme", "missing": false, "url": "https://github.com/square/mortar"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:06:17.488318+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T02:51:55.341852+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "bace9315c86b9d1361a4d57c00bfb2d40f57958cb538f2c6cc804d0659ef10c8", "fetched_at": "2026-08-28T04:06:17.488318+00:00", "kind": "readme", "missing": false, "url": "https://github.com/square/mortar"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T02:51:55.341852+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "bace9315c86b9d1361a4d57c00bfb2d40f57958cb538f2c6cc804d0659ef10c8", "fetched_at": "2026-08-28T04:06:17.488318+00:00", "kind": "readme", "missing": false, "url": "https://github.com/square/mortar"}], "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:17.488318+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:06:17.488318+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:06:17.488318+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T02:51:55.341852+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "bace9315c86b9d1361a4d57c00bfb2d40f57958cb538f2c6cc804d0659ef10c8", "fetched_at": "2026-08-28T04:06:17.488318+00:00", "kind": "readme", "missing": false, "url": "https://github.com/square/mortar"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:06:17.488318+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:06:17.488318+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T02:51:55.341852+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "bace9315c86b9d1361a4d57c00bfb2d40f57958cb538f2c6cc804d0659ef10c8", "fetched_at": "2026-08-28T04:06:17.488318+00:00", "kind": "readme", "missing": false, "url": "https://github.com/square/mortar"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:06:17.488318+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:06:17.488318+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:06:17.488318+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T02:51:55.341852+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "bace9315c86b9d1361a4d57c00bfb2d40f57958cb538f2c6cc804d0659ef10c8", "fetched_at": "2026-08-28T04:06:17.488318+00:00", "kind": "readme", "missing": false, "url": "https://github.com/square/mortar"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:06:17.488318+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:06:17.488318+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T02:51:55.341852+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "bace9315c86b9d1361a4d57c00bfb2d40f57958cb538f2c6cc804d0659ef10c8", "fetched_at": "2026-08-28T04:06:17.488318+00:00", "kind": "readme", "missing": false, "url": "https://github.com/square/mortar"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T02:51:55.341852+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "bace9315c86b9d1361a4d57c00bfb2d40f57958cb538f2c6cc804d0659ef10c8", "fetched_at": "2026-08-28T04:06:17.488318+00:00", "kind": "readme", "missing": false, "url": "https://github.com/square/mortar"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T02:51:55.341852+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "bace9315c86b9d1361a4d57c00bfb2d40f57958cb538f2c6cc804d0659ef10c8", "fetched_at": "2026-08-28T04:06:17.488318+00:00", "kind": "readme", "missing": false, "url": "https://github.com/square/mortar"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T02:51:55.341852+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "bace9315c86b9d1361a4d57c00bfb2d40f57958cb538f2c6cc804d0659ef10c8", "fetched_at": "2026-08-28T04:06:17.488318+00:00", "kind": "readme", "missing": false, "url": "https://github.com/square/mortar"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 0, "longevity": 100, "rhythm": 35}, "computed_at": "2026-09-03T02:20:16.233290+00:00", "flags": ["no_releases", "archived"], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 4681, "days_push": 1264, "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}}