{"adoption": {"forks": 352, "observed_at": "2026-08-28T04:07:39.220545+00:00", "stars": 3039}, "canonical_url": "https://ross.abutalabs.com/products/raspi3-tutorial", "card": {"archived": false, "artifact_type": "learning-resource", "description": "Bare metal Raspberry Pi 3 tutorials", "domain": ["embedded-systems", "operating-systems", "tutorials", "hardware"], "enriched": true, "function": ["developer-tools", "embedded"], "health_score": 20, "homepage": null, "language": "C", "license": "MIT", "license_family": "permissive", "maturity": "stable", "member_repos": ["bztsrc/raspi3-tutorial"], "name": "bztsrc/raspi3-tutorial", "platform": ["embedded", "cpp"], "pushed_at": "2024-06-21T03:57:23+00:00", "repo": "bztsrc/raspi3-tutorial", "stars": 3039, "tags": ["bare-metal", "raspberry-pi", "arm64", "osdev", "tutorial", "mmio", "freestanding-c", "linux"], "topics": [], "urls": [], "use_cases": ["learn bare metal programming on raspberry pi 3", "write a freestanding C program for ARM64 hardware", "get started with hobby OS development on raspberry pi", "learn how to use MMIO and the serial console on raspberry pi", "draw to the framebuffer on raspberry pi without an OS", "set up a cross-compiler for bare metal ARM development"], "what_it_is": "A tutorial series with C example code for bare metal programming on the 64-bit Raspberry Pi 3, covering hardware interfacing like serial console, framebuffer, and MMIO. It targets hobby OS developers and explicitly excludes OS theory topics like memory management or multitasking.", "when_to_avoid": ["you want a full guide to OS theory like memory management, VFS, or multitasking", "you need 32-bit Raspberry Pi tutorials or C++ with a runtime library", "you need production-ready OS code rather than educational examples"], "when_to_choose": ["you want hands-on examples of interfacing with Raspberry Pi 3 hardware in C", "you are new to bare metal or hobby OS development on 64-bit ARM", "you want to learn serial I/O, framebuffer graphics, and hardware peripherals without an OS"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/raspi3-tutorial", "repo": "bztsrc/raspi3-tutorial", "role": "main", "score": 32}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:07:39.220545+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T07:29:15.594762+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "57b7f6219043aa32069f3a81216f05449060698662f018b94201a8d8dd500b8a", "fetched_at": "2026-08-28T04:07:39.220545+00:00", "kind": "readme", "missing": false, "url": "https://github.com/bztsrc/raspi3-tutorial"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:07:39.220545+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T07:29:15.594762+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "57b7f6219043aa32069f3a81216f05449060698662f018b94201a8d8dd500b8a", "fetched_at": "2026-08-28T04:07:39.220545+00:00", "kind": "readme", "missing": false, "url": "https://github.com/bztsrc/raspi3-tutorial"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T07:29:15.594762+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "57b7f6219043aa32069f3a81216f05449060698662f018b94201a8d8dd500b8a", "fetched_at": "2026-08-28T04:07:39.220545+00:00", "kind": "readme", "missing": false, "url": "https://github.com/bztsrc/raspi3-tutorial"}], "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:07:39.220545+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:07:39.220545+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:07:39.220545+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T07:29:15.594762+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "57b7f6219043aa32069f3a81216f05449060698662f018b94201a8d8dd500b8a", "fetched_at": "2026-08-28T04:07:39.220545+00:00", "kind": "readme", "missing": false, "url": "https://github.com/bztsrc/raspi3-tutorial"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:07:39.220545+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:07:39.220545+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T07:29:15.594762+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "57b7f6219043aa32069f3a81216f05449060698662f018b94201a8d8dd500b8a", "fetched_at": "2026-08-28T04:07:39.220545+00:00", "kind": "readme", "missing": false, "url": "https://github.com/bztsrc/raspi3-tutorial"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:07:39.220545+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:07:39.220545+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:07:39.220545+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T07:29:15.594762+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "57b7f6219043aa32069f3a81216f05449060698662f018b94201a8d8dd500b8a", "fetched_at": "2026-08-28T04:07:39.220545+00:00", "kind": "readme", "missing": false, "url": "https://github.com/bztsrc/raspi3-tutorial"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:07:39.220545+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:07:39.220545+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T07:29:15.594762+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "57b7f6219043aa32069f3a81216f05449060698662f018b94201a8d8dd500b8a", "fetched_at": "2026-08-28T04:07:39.220545+00:00", "kind": "readme", "missing": false, "url": "https://github.com/bztsrc/raspi3-tutorial"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T07:29:15.594762+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "57b7f6219043aa32069f3a81216f05449060698662f018b94201a8d8dd500b8a", "fetched_at": "2026-08-28T04:07:39.220545+00:00", "kind": "readme", "missing": false, "url": "https://github.com/bztsrc/raspi3-tutorial"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T07:29:15.594762+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "57b7f6219043aa32069f3a81216f05449060698662f018b94201a8d8dd500b8a", "fetched_at": "2026-08-28T04:07:39.220545+00:00", "kind": "readme", "missing": false, "url": "https://github.com/bztsrc/raspi3-tutorial"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T07:29:15.594762+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "57b7f6219043aa32069f3a81216f05449060698662f018b94201a8d8dd500b8a", "fetched_at": "2026-08-28T04:07:39.220545+00:00", "kind": "readme", "missing": false, "url": "https://github.com/bztsrc/raspi3-tutorial"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 0, "longevity": 100, "rhythm": 35}, "computed_at": "2026-09-02T17:46:02.011165+00:00", "flags": ["no_releases"], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 3163, "days_push": 803, "days_rel": null, "gap_med": null, "n_releases_24m": 0}, "score": 32, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}