{"adoption": {"forks": 1170, "observed_at": "2026-08-28T04:08:39.240290+00:00", "stars": 4218}, "canonical_url": "https://ross.abutalabs.com/products/messagedisplaykit", "card": {"archived": false, "artifact_type": "library", "description": "An IM App like WeChat App has to send text, pictures, audio, video, location messaging, managing local address book, share a circle of friends, drifting friends, shake a fun and more interesting features.", "domain": ["mobile-development", "messaging-platforms", "chatbots", "developer-tools"], "enriched": true, "function": ["ui-components", "chat-interface", "file-upload", "audio-processing", "video-processing"], "health_score": 20, "homepage": null, "language": "Objective-C", "license": "MIT", "license_family": "permissive", "maturity": "abandoned", "member_repos": ["xhzengAIB/MessageDisplayKit"], "name": "xhzengAIB/MessageDisplayKit", "platform": [], "pushed_at": "2017-08-09T03:06:10+00:00", "repo": "xhzengAIB/MessageDisplayKit", "stars": 4218, "tags": ["im", "wechat-clone", "messaging-ui", "objective-c", "cocoapods", "learning-reference", "ios", "mobile"], "topics": [], "urls": [], "use_cases": ["build a chat app ui in ios", "send text and image messages in an ios app", "implement voice and video messaging on iphone", "create a wechat-like messaging interface", "add message bubbles with avatars and timestamps", "learn how an im app is built in objective-c"], "what_it_is": "An Objective-C iOS library providing a WeChat-like instant messaging app experience, with UI components for sending text, pictures, audio, video, and location messages, plus social features like moments sharing and friend discovery. The author has explicitly stated it is no longer maintained and is provided only as a learning reference.", "when_to_avoid": ["you need a maintained library with bug fixes and modern iOS support", "your project uses Swift or requires recent iOS versions", "you need production-ready backend integration or server infrastructure", "performance is critical, as the project has known FPS issues from drawRect code"], "when_to_choose": ["you want to study how a full-featured iOS IM app is implemented in Objective-C", "you need a customizable chat UI with text, image, audio, video, and location messages for a legacy iOS 6+ project", "you want reference code for message bubbles, avatars, timestamps, and input toolbar behavior"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/messagedisplaykit", "repo": "xhzengAIB/MessageDisplayKit", "role": "main", "score": 23}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:08:39.240290+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-29T18:22:25.490876+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "c3c963856e667d073a47554b4316c072854b1df7809a5a5ec86c79d70b754dfe", "fetched_at": "2026-08-28T04:08:39.240290+00:00", "kind": "readme", "missing": false, "url": "https://github.com/xhzengAIB/MessageDisplayKit"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:08:39.240290+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-29T18:22:25.490876+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "c3c963856e667d073a47554b4316c072854b1df7809a5a5ec86c79d70b754dfe", "fetched_at": "2026-08-28T04:08:39.240290+00:00", "kind": "readme", "missing": false, "url": "https://github.com/xhzengAIB/MessageDisplayKit"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-29T18:22:25.490876+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "c3c963856e667d073a47554b4316c072854b1df7809a5a5ec86c79d70b754dfe", "fetched_at": "2026-08-28T04:08:39.240290+00:00", "kind": "readme", "missing": false, "url": "https://github.com/xhzengAIB/MessageDisplayKit"}], "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:08:39.240290+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:08:39.240290+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:08:39.240290+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-29T18:22:25.490876+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "c3c963856e667d073a47554b4316c072854b1df7809a5a5ec86c79d70b754dfe", "fetched_at": "2026-08-28T04:08:39.240290+00:00", "kind": "readme", "missing": false, "url": "https://github.com/xhzengAIB/MessageDisplayKit"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:08:39.240290+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:08:39.240290+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-29T18:22:25.490876+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "c3c963856e667d073a47554b4316c072854b1df7809a5a5ec86c79d70b754dfe", "fetched_at": "2026-08-28T04:08:39.240290+00:00", "kind": "readme", "missing": false, "url": "https://github.com/xhzengAIB/MessageDisplayKit"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:08:39.240290+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:08:39.240290+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:08:39.240290+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-29T18:22:25.490876+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "c3c963856e667d073a47554b4316c072854b1df7809a5a5ec86c79d70b754dfe", "fetched_at": "2026-08-28T04:08:39.240290+00:00", "kind": "readme", "missing": false, "url": "https://github.com/xhzengAIB/MessageDisplayKit"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:08:39.240290+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:08:39.240290+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-29T18:22:25.490876+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "c3c963856e667d073a47554b4316c072854b1df7809a5a5ec86c79d70b754dfe", "fetched_at": "2026-08-28T04:08:39.240290+00:00", "kind": "readme", "missing": false, "url": "https://github.com/xhzengAIB/MessageDisplayKit"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-29T18:22:25.490876+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "c3c963856e667d073a47554b4316c072854b1df7809a5a5ec86c79d70b754dfe", "fetched_at": "2026-08-28T04:08:39.240290+00:00", "kind": "readme", "missing": false, "url": "https://github.com/xhzengAIB/MessageDisplayKit"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-29T18:22:25.490876+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "c3c963856e667d073a47554b4316c072854b1df7809a5a5ec86c79d70b754dfe", "fetched_at": "2026-08-28T04:08:39.240290+00:00", "kind": "readme", "missing": false, "url": "https://github.com/xhzengAIB/MessageDisplayKit"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-29T18:22:25.490876+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "c3c963856e667d073a47554b4316c072854b1df7809a5a5ec86c79d70b754dfe", "fetched_at": "2026-08-28T04:08:39.240290+00:00", "kind": "readme", "missing": false, "url": "https://github.com/xhzengAIB/MessageDisplayKit"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 0, "longevity": 100, "rhythm": 8}, "computed_at": "2026-09-02T17:46:02.011165+00:00", "flags": [], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 4514, "days_push": 3311, "days_rel": null, "gap_med": null, "n_releases_24m": 0}, "score": 23, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}