{"adoption": {"forks": 67, "observed_at": "2026-08-28T04:05:42.633977+00:00", "stars": 1838}, "canonical_url": "https://ross.abutalabs.com/products/aposd-vs-clean-code", "card": {"archived": false, "artifact_type": "learning-resource", "description": "A discussion between John Ousterhout and Robert Martin about differences between John's book \"A Philosophy of Software Design\" and Bob's book \"Clean Code\".", "domain": ["developer-tools", "tutorials", "programming-languages"], "enriched": true, "function": ["documentation"], "health_score": 30, "homepage": null, "language": null, "license": null, "license_family": "other", "maturity": "stable", "member_repos": ["johnousterhout/aposd-vs-clean-code"], "name": "johnousterhout/aposd-vs-clean-code", "platform": ["cross-platform"], "pushed_at": "2025-04-15T21:45:14+00:00", "repo": "johnousterhout/aposd-vs-clean-code", "stars": 1838, "tags": ["software-design", "clean-code", "book-discussion", "tdd", "code-comments", "method-length"], "topics": [], "urls": [], "use_cases": ["compare clean code vs a philosophy of software design", "learn about debates on method length and comments", "understand arguments for and against TDD", "find software design reading material", "study how experienced designers disagree on code style"], "what_it_is": "A written dialogue between John Ousterhout and Robert Martin comparing their software design philosophies from 'A Philosophy of Software Design' and 'Clean Code'. It covers method length, comments, and test-driven development with worked examples.", "when_to_avoid": ["you need executable code or a tool", "you want a neutral tutorial rather than a debate", "you need a formal specification of design practices"], "when_to_choose": ["you want a direct point-by-point comparison of two influential design books", "you are deciding which design philosophy to adopt", "you want nuanced discussion of comments and TDD tradeoffs"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/aposd-vs-clean-code", "repo": "johnousterhout/aposd-vs-clean-code", "role": "main", "score": 30}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:05:42.633977+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T03:18:16.580665+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "da74988b5369b114c32beaf92d096b8fc8689ef5bd939a2e3a1341f7e3a80512", "fetched_at": "2026-08-28T04:05:42.633977+00:00", "kind": "readme", "missing": false, "url": "https://github.com/johnousterhout/aposd-vs-clean-code"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:05:42.633977+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T03:18:16.580665+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "da74988b5369b114c32beaf92d096b8fc8689ef5bd939a2e3a1341f7e3a80512", "fetched_at": "2026-08-28T04:05:42.633977+00:00", "kind": "readme", "missing": false, "url": "https://github.com/johnousterhout/aposd-vs-clean-code"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T03:18:16.580665+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "da74988b5369b114c32beaf92d096b8fc8689ef5bd939a2e3a1341f7e3a80512", "fetched_at": "2026-08-28T04:05:42.633977+00:00", "kind": "readme", "missing": false, "url": "https://github.com/johnousterhout/aposd-vs-clean-code"}], "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:42.633977+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:05:42.633977+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:05:42.633977+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T03:18:16.580665+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "da74988b5369b114c32beaf92d096b8fc8689ef5bd939a2e3a1341f7e3a80512", "fetched_at": "2026-08-28T04:05:42.633977+00:00", "kind": "readme", "missing": false, "url": "https://github.com/johnousterhout/aposd-vs-clean-code"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:05:42.633977+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:05:42.633977+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T03:18:16.580665+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "da74988b5369b114c32beaf92d096b8fc8689ef5bd939a2e3a1341f7e3a80512", "fetched_at": "2026-08-28T04:05:42.633977+00:00", "kind": "readme", "missing": false, "url": "https://github.com/johnousterhout/aposd-vs-clean-code"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:05:42.633977+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:05:42.633977+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:05:42.633977+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T03:18:16.580665+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "da74988b5369b114c32beaf92d096b8fc8689ef5bd939a2e3a1341f7e3a80512", "fetched_at": "2026-08-28T04:05:42.633977+00:00", "kind": "readme", "missing": false, "url": "https://github.com/johnousterhout/aposd-vs-clean-code"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:05:42.633977+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:05:42.633977+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T03:18:16.580665+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "da74988b5369b114c32beaf92d096b8fc8689ef5bd939a2e3a1341f7e3a80512", "fetched_at": "2026-08-28T04:05:42.633977+00:00", "kind": "readme", "missing": false, "url": "https://github.com/johnousterhout/aposd-vs-clean-code"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T03:18:16.580665+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "da74988b5369b114c32beaf92d096b8fc8689ef5bd939a2e3a1341f7e3a80512", "fetched_at": "2026-08-28T04:05:42.633977+00:00", "kind": "readme", "missing": false, "url": "https://github.com/johnousterhout/aposd-vs-clean-code"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T03:18:16.580665+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "da74988b5369b114c32beaf92d096b8fc8689ef5bd939a2e3a1341f7e3a80512", "fetched_at": "2026-08-28T04:05:42.633977+00:00", "kind": "readme", "missing": false, "url": "https://github.com/johnousterhout/aposd-vs-clean-code"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T03:18:16.580665+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "da74988b5369b114c32beaf92d096b8fc8689ef5bd939a2e3a1341f7e3a80512", "fetched_at": "2026-08-28T04:05:42.633977+00:00", "kind": "readme", "missing": false, "url": "https://github.com/johnousterhout/aposd-vs-clean-code"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 16, "longevity": 52, "rhythm": 35}, "computed_at": "2026-09-03T02:20:16.233290+00:00", "flags": ["no_releases", "no_license"], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 728, "days_push": 505, "days_rel": null, "gap_med": null, "n_releases_24m": 0}, "score": 30, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}