{"adoption": {"forks": 291, "observed_at": "2026-08-28T04:05:16.792797+00:00", "stars": 1650}, "canonical_url": "https://ross.abutalabs.com/products/taskscheduler", "card": {"archived": false, "artifact_type": "library", "description": "Cooperative multitasking for Arduino, ESPx, STM32, nRF and other microcontrollers", "domain": ["embedded-systems", "developer-tools"], "enriched": true, "function": ["scheduling", "concurrency", "embedded"], "health_score": 85, "homepage": "http://playground.arduino.cc/Code/TaskScheduler", "language": "C++", "license": "BSD-3-Clause", "license_family": "permissive", "maturity": "stable", "member_repos": ["arkhipenko/TaskScheduler"], "name": "arkhipenko/TaskScheduler", "platform": ["cpp", "embedded", "iot"], "pushed_at": "2026-04-20T16:31:28+00:00", "repo": "arkhipenko/TaskScheduler", "stars": 1650, "tags": ["cooperative-multitasking", "arduino-library", "microcontroller", "esp32", "esp8266", "stm32", "nrf52", "task-scheduling", "freertos-alternative", "automation"], "topics": ["arduino", "esp8266", "attiny", "multitasking", "cooperative", "library", "teensy", "esp32", "nrf52", "stm32", "reliable"], "urls": [], "use_cases": ["blink an LED on an interval while reading sensors on arduino", "schedule periodic tasks on esp32 without freertos", "run multiple timed jobs on stm32 firmware", "cooperative multitasking for attiny or teensy projects", "avoid race conditions in embedded task scheduling", "manage task timing and power consumption on microcontrollers"], "what_it_is": "A lightweight C++ library providing cooperative multitasking and task scheduling for Arduino, ESPx, STM32, nRF, and other microcontrollers. It offers periodic task execution, dynamic parameter changes, and power management as an easier alternative to preemptive RTOS frameworks like FreeRTOS.", "when_to_avoid": ["you need true preemptive multitasking or hard real-time guarantees", "tasks involve long-blocking operations that would starve other tasks", "you're not targeting embedded/microcontroller platforms"], "when_to_choose": ["you need simple, reliable periodic task scheduling on a microcontroller", "you want to avoid concurrency pitfalls like races and deadlocks by design", "you're using Arduino, ESP32/8266, STM32, nRF52, Teensy, or ATtiny", "a full RTOS like FreeRTOS is overkill for your project"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/taskscheduler", "repo": "arkhipenko/TaskScheduler", "role": "main", "score": 83}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:05:16.792797+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T03:45:04.801353+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "03a1793f09834725b578661611364e98f6687c6157169388d1da9474da821371", "fetched_at": "2026-08-28T04:05:16.792797+00:00", "kind": "readme", "missing": false, "url": "https://github.com/arkhipenko/TaskScheduler"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:05:16.792797+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T03:45:04.801353+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "03a1793f09834725b578661611364e98f6687c6157169388d1da9474da821371", "fetched_at": "2026-08-28T04:05:16.792797+00:00", "kind": "readme", "missing": false, "url": "https://github.com/arkhipenko/TaskScheduler"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T03:45:04.801353+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "03a1793f09834725b578661611364e98f6687c6157169388d1da9474da821371", "fetched_at": "2026-08-28T04:05:16.792797+00:00", "kind": "readme", "missing": false, "url": "https://github.com/arkhipenko/TaskScheduler"}], "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:16.792797+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:05:16.792797+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:05:16.792797+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T03:45:04.801353+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "03a1793f09834725b578661611364e98f6687c6157169388d1da9474da821371", "fetched_at": "2026-08-28T04:05:16.792797+00:00", "kind": "readme", "missing": false, "url": "https://github.com/arkhipenko/TaskScheduler"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:05:16.792797+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:05:16.792797+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T03:45:04.801353+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "03a1793f09834725b578661611364e98f6687c6157169388d1da9474da821371", "fetched_at": "2026-08-28T04:05:16.792797+00:00", "kind": "readme", "missing": false, "url": "https://github.com/arkhipenko/TaskScheduler"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:05:16.792797+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:05:16.792797+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:05:16.792797+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T03:45:04.801353+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "03a1793f09834725b578661611364e98f6687c6157169388d1da9474da821371", "fetched_at": "2026-08-28T04:05:16.792797+00:00", "kind": "readme", "missing": false, "url": "https://github.com/arkhipenko/TaskScheduler"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:05:16.792797+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:05:16.792797+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T03:45:04.801353+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "03a1793f09834725b578661611364e98f6687c6157169388d1da9474da821371", "fetched_at": "2026-08-28T04:05:16.792797+00:00", "kind": "readme", "missing": false, "url": "https://github.com/arkhipenko/TaskScheduler"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T03:45:04.801353+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "03a1793f09834725b578661611364e98f6687c6157169388d1da9474da821371", "fetched_at": "2026-08-28T04:05:16.792797+00:00", "kind": "readme", "missing": false, "url": "https://github.com/arkhipenko/TaskScheduler"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T03:45:04.801353+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "03a1793f09834725b578661611364e98f6687c6157169388d1da9474da821371", "fetched_at": "2026-08-28T04:05:16.792797+00:00", "kind": "readme", "missing": false, "url": "https://github.com/arkhipenko/TaskScheduler"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T03:45:04.801353+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "03a1793f09834725b578661611364e98f6687c6157169388d1da9474da821371", "fetched_at": "2026-08-28T04:05:16.792797+00:00", "kind": "readme", "missing": false, "url": "https://github.com/arkhipenko/TaskScheduler"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 78, "longevity": 100, "rhythm": 80}, "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": 4016, "days_push": 135, "days_rel": 135, "gap_med": 12.5, "n_releases_24m": 5}, "score": 83, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}