{"adoption": {"forks": 1678, "observed_at": "2026-08-28T04:09:10.960322+00:00", "stars": 5128}, "canonical_url": "https://ross.abutalabs.com/products/rack", "card": {"archived": false, "artifact_type": "library", "description": "A modular Ruby web server interface.", "domain": ["web-development", "backend", "apis"], "enriched": true, "function": ["http-server", "middleware"], "health_score": 97, "homepage": null, "language": "Ruby", "license": "NOASSERTION", "license_family": "other", "maturity": "stable", "member_repos": ["rack/rack"], "name": "rack/rack", "platform": ["ruby"], "pushed_at": "2026-08-14T02:48:06+00:00", "repo": "rack/rack", "stars": 5128, "tags": ["ruby-gem", "web-server-interface", "rack-specification", "http-abstraction", "middleware", "rackup", "web-server"], "topics": ["ruby", "rack", "web"], "urls": [], "use_cases": ["build a minimal web application in ruby without a full framework", "connect a ruby web framework to different web servers through one standard interface", "write http middleware for requests and responses in ruby", "serve a hello world app with config.ru and rackup", "understand the interface between ruby web servers and frameworks", "wrap http requests and responses in a simple ruby method call"], "what_it_is": "Rack is a minimal, modular Ruby library and specification that wraps HTTP requests and responses into a simple call, unifying the bridge between web servers, web frameworks, and web applications. It defines the de facto standard interface that virtually all Ruby web servers (Puma, Falcon, Passenger) and frameworks (Rails, Sinatra) conform to.", "when_to_avoid": ["your project is not in Ruby", "you want a full-featured framework with routing, ORM, and views out of the box - Rack itself only provides the interface", "you need Rack::Session or the rackup binary without installing the separate rack-session and rackup gems"], "when_to_choose": ["you are developing any web application in Ruby, since most frameworks depend on it", "you need server-agnostic Ruby apps that run on Puma, Falcon, Passenger, or NGINX Unit", "you are building a Ruby web framework or middleware stack and need a standard HTTP abstraction", "you want a tiny, stable foundation instead of a batteries-included framework"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/rack", "repo": "rack/rack", "role": "main", "score": 82}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:09:10.960322+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-29T18:02:03.908365+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "4208a4c73485ecb1222e10b06f7299fa2ccb744aa8a595a04fdae8a6e09e08c2", "fetched_at": "2026-08-28T04:09:10.960322+00:00", "kind": "readme", "missing": false, "url": "https://github.com/rack/rack"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:09:10.960322+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-29T18:02:03.908365+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "4208a4c73485ecb1222e10b06f7299fa2ccb744aa8a595a04fdae8a6e09e08c2", "fetched_at": "2026-08-28T04:09:10.960322+00:00", "kind": "readme", "missing": false, "url": "https://github.com/rack/rack"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-29T18:02:03.908365+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "4208a4c73485ecb1222e10b06f7299fa2ccb744aa8a595a04fdae8a6e09e08c2", "fetched_at": "2026-08-28T04:09:10.960322+00:00", "kind": "readme", "missing": false, "url": "https://github.com/rack/rack"}], "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:09:10.960322+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:09:10.960322+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:09:10.960322+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-29T18:02:03.908365+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "4208a4c73485ecb1222e10b06f7299fa2ccb744aa8a595a04fdae8a6e09e08c2", "fetched_at": "2026-08-28T04:09:10.960322+00:00", "kind": "readme", "missing": false, "url": "https://github.com/rack/rack"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:09:10.960322+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:09:10.960322+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-29T18:02:03.908365+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "4208a4c73485ecb1222e10b06f7299fa2ccb744aa8a595a04fdae8a6e09e08c2", "fetched_at": "2026-08-28T04:09:10.960322+00:00", "kind": "readme", "missing": false, "url": "https://github.com/rack/rack"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:09:10.960322+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:09:10.960322+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:09:10.960322+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-29T18:02:03.908365+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "4208a4c73485ecb1222e10b06f7299fa2ccb744aa8a595a04fdae8a6e09e08c2", "fetched_at": "2026-08-28T04:09:10.960322+00:00", "kind": "readme", "missing": false, "url": "https://github.com/rack/rack"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:09:10.960322+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:09:10.960322+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-29T18:02:03.908365+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "4208a4c73485ecb1222e10b06f7299fa2ccb744aa8a595a04fdae8a6e09e08c2", "fetched_at": "2026-08-28T04:09:10.960322+00:00", "kind": "readme", "missing": false, "url": "https://github.com/rack/rack"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-29T18:02:03.908365+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "4208a4c73485ecb1222e10b06f7299fa2ccb744aa8a595a04fdae8a6e09e08c2", "fetched_at": "2026-08-28T04:09:10.960322+00:00", "kind": "readme", "missing": false, "url": "https://github.com/rack/rack"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-29T18:02:03.908365+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "4208a4c73485ecb1222e10b06f7299fa2ccb744aa8a595a04fdae8a6e09e08c2", "fetched_at": "2026-08-28T04:09:10.960322+00:00", "kind": "readme", "missing": false, "url": "https://github.com/rack/rack"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-29T18:02:03.908365+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "4208a4c73485ecb1222e10b06f7299fa2ccb744aa8a595a04fdae8a6e09e08c2", "fetched_at": "2026-08-28T04:09:10.960322+00:00", "kind": "readme", "missing": false, "url": "https://github.com/rack/rack"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 97, "longevity": 100, "rhythm": 53}, "computed_at": "2026-09-02T17:46:02.011165+00:00", "flags": ["no_license"], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 6461, "days_push": 19, "days_rel": 154, "gap_med": 141, "n_releases_24m": 2}, "score": 82, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}