PlayOS Roadmap

This document defines the MVP exit criteria and sprint delivery plan.
Sprint documents contain the executable work packages: acceptance criteria, key tasks, and test strategy.


MVP Definition

The first meaningful PlayOS MVP is complete when all of the following are true on physical ROG Ally hardware:

#Criterion
1ROG Ally boots directly from UEFI into PlayOS
2Linux kernel + initramfs are available as a UEFI-bootable EFI artifact
3playos-init runs as PID 1
4playos-compositor permanently owns DRM/KMS and the Wayland session
5playos-shell remains alive as the persistent controller-first UI
6Compositor uses wlroots with AMDGPU, DRM/KMS, GBM, EGL, and Mesa
7Shell renders through Wayland using the Raylib PlayOS backend
8Shell and sample game consume the public playos-platform-api C ABI
9Trusted launch, lifecycle transport, and compositor-control remain internal to playos-runtime
10Shell requests game launch; playos-init spawns and supervises it
11Compositor waits for game's first valid frame before switching foreground
12Game renders with hardware acceleration and receives controller input
13Reserved System button returns to PlayOS UI and backgrounds/pauses the game
14Resume returns to the same running game without restarting it
15Game outputs audio through ALSA
16Clean exit and crash both return safely to the existing shell
17Games and saves persist on a separate ext4 partition
18System image is immutable
19Recovery mode usable without accelerated graphics

Sprint Plan

SprintTitlePrimary Outcome
0Build and UEFI FoundationReproducible Buildroot factory boots a minimal PlayOS EFI image in QEMU/OVMF
1playos-init and Minimal Boot SupervisionReal playos-init as PID 1 with versioned private control IPC skeleton
2Compositor Skeleton and Wayland SessionMinimal wlroots compositor with a Wayland session and one trusted fullscreen client
3ROG Ally Kernel and Device Bring-UpReliable USB boot, essential ROG Ally devices working, first Platform API input contract
4AMDGPU and Native DRM/KMSCompositor permanently owns the Ally display via AMDGPU and DRM/KMS
5Raylib-Powered PlayOS ShellHardware-accelerated Raylib shell consuming the public PlayOS Platform API
6Persistent Storage and Game DiscoveryPersistent ext4 storage, Platform API paths, shell-visible game discovery
7Game Launch, Lifecycle, System Button, and OverlayComplete console lifecycle: launch, overlay, background, resume, crash recovery
8ALSA AudioReliable ALSA audio with safe public controls across lifecycle transitions
9Power, Battery, Thermal, and Suspend FoundationsSafe power behavior exposed through a restricted public Platform API
10Installer and Internal-Disk DeploymentTested installation path from removable media to ROG Ally internal SSD
11Immutable Images and A/B UpdatesSigned, atomic A/B system updates with automatic rollback
11.6Developer SSH (Dropbear) + Minimal Wired Network Bring-UpUSB-C Ethernet SSH (key auth) for on-device debugging; full Wi-Fi stays Sprint 16
12Security HardeningHardened boundary between public Platform API, trusted runtime control, and games
13Intel ExpansionArchitecture and Platform API backend portable to Intel graphics
14Production ReadinessSigned preview release with versioned public Platform API
15Game Developer SDKSelf-contained playos-sdk (musl toolchain + libplayos/libraylib) with device/desktop/emulator testing
16playos-net (Wi-Fi)D-Bus-free Wi-Fi (wpa_supplicant + dhcpcd + playos-net bridge) driven through playos-runtime
17Touch Input + On-Screen Keyboard (OSK)Touch end-to-end (compositor → raylib backend) plus a reusable system OSK
18C# Shell Reimplementation Assessment (Post-MVP Spike)Feasibility assessment only — no C# shell implemented
19Marketplace Assessment (Post-MVP)Assessment and spec-first sequencing only — no marketplace code
20Native Media & Browser Client Strategy (Post-MVP)Assessment of native Spotify/YouTube/YouTube Music/browser clients — Netflix out of scope
21Multiple Local User Profiles (Post-MVP)Assessment/design of console-style local profiles with per-profile isolated saves/settings — no implementation
22LVGL Shell UI Spike (Post-MVP)Gated LVGL-via-raylib texture spike with controller navigation + go/no-go — no shell port

Execution Rules

  1. Sprints follow dependency order unless an ADR explicitly changes the sequence.
  2. A sprint begins only after its required predecessor exit criteria are satisfied.
  3. Each sprint must end with a demonstrable and testable system outcome.
  4. Architecture changes discovered during implementation must be captured in playos-spec.
  5. Cross-sprint API changes require a version bump and compatibility review.

Post-MVP Roadmap

Add only after the core console lifecycle is stable:

  • playos-device — hardware and power policy service
  • Dropbear SSH — explicit Developer Mode only (minimal wired slice pulled forward in Sprint 11.6; full Wi-Fi remains Sprint 16)
  • playos-update — PlayOS wrapper around the update engine
  • OTA update delivery — playos-tools host helper (download + verify + stage to USB/SD) first, then on-device download after Sprint 16 (playos-net)
  • playos-input service — remapping, virtual gamepads, gyro, haptics
  • Dedicated audio service — mixing, notifications over games
  • Bluetooth
  • Fast, fully qualified suspend/resume
  • Rear-button and special-button support
  • Screenshots and screen recording
  • Vulkan (RADV)
  • VRR and HDR
  • External-display profiles
  • Download manager and store integration
  • Cloud saves and user accounts
  • Multiple local profiles
  • Signed .play content packages
  • Delta updates
  • Telemetry (explicit user consent only)

See architecture.md for the full system design.