{"adoption": {"forks": 193, "observed_at": "2026-08-28T04:05:51.066296+00:00", "stars": 1897}, "canonical_url": "https://ross.abutalabs.com/products/dynamicdata", "card": {"archived": false, "artifact_type": "library", "description": "Reactive collections based on Rx.Net", "domain": ["developer-tools", "cross-platform"], "enriched": true, "function": ["state-management", "developer-tools"], "health_score": 99, "homepage": null, "language": "C#", "license": "MIT", "license_family": "permissive", "maturity": "active", "member_repos": ["reactivemarbles/DynamicData"], "name": "reactivemarbles/DynamicData", "platform": ["dotnet", "cross-platform"], "pushed_at": "2026-08-24T20:11:50+00:00", "repo": "reactivemarbles/DynamicData", "stars": 1897, "tags": ["reactive-extensions", "rx", "collections", "mvvm", "csharp", "source-cache", "source-list", "dotnet", "reactive-programming"], "topics": ["reactive-extensions", "reactive-collections", "rx", "dynamic-data", "rx-observable", "dotnet", "csharp", "mvvm", "reactive-programming", "dynamicdata", "reactivex", "hacktoberfest"], "urls": [], "use_cases": ["keep a UI collection in sync with asynchronous updates", "filter and sort a live data source reactively", "group and join multiple observable collections", "bind observable collections to WPF or Avalonia MVVM views", "manage collection disposal and expiration reactively", "paginate or virtualize large reactive data sets"], "what_it_is": "Dynamic Data is a .NET library that brings Reactive Extensions (Rx) to in-memory collections. It provides SourceCache and SourceList data sources plus 60+ operators to declaratively filter, sort, group, join, transform, and bind dynamically updating collections.", "when_to_avoid": ["your collections are static and rarely change", "you work outside the .NET ecosystem", "you prefer simple imperative collection code without Rx complexity"], "when_to_choose": ["you build .NET MVVM apps with collections that change over time", "you already use Rx.NET and need collection management operators", "you want declarative pipelines instead of manual collection mutation code"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/dynamicdata", "repo": "reactivemarbles/DynamicData", "role": "main", "score": 96}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:05:51.066296+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T03:12:48.813713+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "18d3da6019afef798d7830bfbe353d110cd755f352718ec46f20a51f422ab96e", "fetched_at": "2026-08-28T04:05:51.066296+00:00", "kind": "readme", "missing": false, "url": "https://github.com/reactivemarbles/DynamicData"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:05:51.066296+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T03:12:48.813713+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "18d3da6019afef798d7830bfbe353d110cd755f352718ec46f20a51f422ab96e", "fetched_at": "2026-08-28T04:05:51.066296+00:00", "kind": "readme", "missing": false, "url": "https://github.com/reactivemarbles/DynamicData"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T03:12:48.813713+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "18d3da6019afef798d7830bfbe353d110cd755f352718ec46f20a51f422ab96e", "fetched_at": "2026-08-28T04:05:51.066296+00:00", "kind": "readme", "missing": false, "url": "https://github.com/reactivemarbles/DynamicData"}], "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:51.066296+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:05:51.066296+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:05:51.066296+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T03:12:48.813713+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "18d3da6019afef798d7830bfbe353d110cd755f352718ec46f20a51f422ab96e", "fetched_at": "2026-08-28T04:05:51.066296+00:00", "kind": "readme", "missing": false, "url": "https://github.com/reactivemarbles/DynamicData"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:05:51.066296+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:05:51.066296+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T03:12:48.813713+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "18d3da6019afef798d7830bfbe353d110cd755f352718ec46f20a51f422ab96e", "fetched_at": "2026-08-28T04:05:51.066296+00:00", "kind": "readme", "missing": false, "url": "https://github.com/reactivemarbles/DynamicData"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:05:51.066296+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:05:51.066296+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:05:51.066296+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T03:12:48.813713+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "18d3da6019afef798d7830bfbe353d110cd755f352718ec46f20a51f422ab96e", "fetched_at": "2026-08-28T04:05:51.066296+00:00", "kind": "readme", "missing": false, "url": "https://github.com/reactivemarbles/DynamicData"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:05:51.066296+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:05:51.066296+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T03:12:48.813713+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "18d3da6019afef798d7830bfbe353d110cd755f352718ec46f20a51f422ab96e", "fetched_at": "2026-08-28T04:05:51.066296+00:00", "kind": "readme", "missing": false, "url": "https://github.com/reactivemarbles/DynamicData"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T03:12:48.813713+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "18d3da6019afef798d7830bfbe353d110cd755f352718ec46f20a51f422ab96e", "fetched_at": "2026-08-28T04:05:51.066296+00:00", "kind": "readme", "missing": false, "url": "https://github.com/reactivemarbles/DynamicData"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T03:12:48.813713+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "18d3da6019afef798d7830bfbe353d110cd755f352718ec46f20a51f422ab96e", "fetched_at": "2026-08-28T04:05:51.066296+00:00", "kind": "readme", "missing": false, "url": "https://github.com/reactivemarbles/DynamicData"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T03:12:48.813713+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "18d3da6019afef798d7830bfbe353d110cd755f352718ec46f20a51f422ab96e", "fetched_at": "2026-08-28T04:05:51.066296+00:00", "kind": "readme", "missing": false, "url": "https://github.com/reactivemarbles/DynamicData"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 99, "longevity": 100, "rhythm": 90}, "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": 4303, "days_push": 9, "days_rel": 64, "gap_med": 24.5, "n_releases_24m": 9}, "score": 96, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}