Skip to content

Latest commit

 

History

History
127 lines (86 loc) · 9.05 KB

File metadata and controls

127 lines (86 loc) · 9.05 KB

Project Plan — Janset.SDL2 / Janset.SDL3

Maintainer: Deniz Irgin (@denizirgin)

Canonical roadmap. Forward-looking only — historical narrative lives in code + git history. When code and this file disagree, verify against code.

Mission

Provide the .NET ecosystem with production-quality, modular SDL2 and SDL3 bindings that include cross-platform native libraries built from source — something no other project offers.

Current Phase

Current status:

Phase 2: CI/CD & Packaging — IN PROGRESS. Core surface is landed (release.yml + Cake build host + tools.cs). Phase 2b tail = nuget.org promotion (PD-7), release-recovery playbook (PD-8), and the four scope-assumption gaps surfaced in 2026-05-01 rehearsals.

Phase X / build-host refactor — CLOSED 2026-05-10. The settled build-host architecture now lives in ADR-002 and ADR-003. Durable day-to-day rules live in knowledge-base/testing-guidelines.md and knowledge-base/extraction-guidelines.md. Migration-era notes were retired after test-infrastructure consolidation.

Active execution ledger: phases/phase-2-adaptation-plan.md (Phase 2b).

Roadmap

Phase sequencing reordered per release-strategy.md: Phase 4 (CppAst binding generator) is critical path for v1.0 and lands before the first public -preview.N wave (Phase 2b PD-7). Strategic rationale + stages + promotion gates live in release-strategy.md; this file remains the tactical roadmap.

Phase 2b — Public release tail

Detail in phases/phase-2-adaptation-plan.md (PDs, gaps, candidate directions).

  • PD-7 — Public NuGet promotion: PublishPublicTask real implementation + nuget.org Trusted Publishing OIDC + first prerelease publication (#63)
  • PD-8 — Release recovery playbook: playbook/release-recovery.md operator runbook + Pack-Family / Smoke-Family / Push-Family Cake helpers (or explicit deferral)
  • PD-3 — dotnet-affected integration: NuGet library vs CLI wrapper ADR after the spike
  • Pipeline scope-assumption gaps (rehearsal 2026-05-01; full surface in adaptation plan):
    • Gap #2 — G58 feed-probe: cross-family resolvability against the publish target feed
    • Gap #3 — ConsumerSmoke partial-scope: per-family smoke csprojs candidate direction
    • Gap #4 — Trigger mechanism rework: manual workflow_dispatch or GitHub Releases as canonical trigger
  • Generalize Cake Pack stage to all 6 satellites × 7 RIDs (post-ADR-002 target-centric layout)
  • Harden evidence collection and operator playbooks around the 7-RID consumer-smoke matrix re-entry
  • Add SDL2_net bindings + native project (#58) — managed csproj + .Native csproj + overlay port (if needed) + manifest.json re-entry + vcpkg feature config + harvest validation
  • Validate SDL2_mixer LGPL-free build across all RIDs (per-RID codec parity audit)
  • Linux version scripts for symbol visibility (.map files per satellite) — lower priority
  • Resolve PD-14 Linux end-user MIDI packaging strategy (pre-first-public-Mixer-release)
  • Resolve PD-15 SDL2_gfx Unix symbol-export regression guard
  • Windows local prerequisites guide (VS tooling + dumpbin/vswhere troubleshooting)
  • Native binaries cleanup from git history (#56)
  • Validate and correct local development playbook (#57)

Phase 3 — SDL2 Complete

No separate phase doc per phases/README.md retention test — items track here.

  • Sample projects under samples/ (#60)
  • Janset.SDL2 meta-package (#61)
  • CONTRIBUTING.md and contributor workflow guidance (#62)
  • SDL2 smoke test suite + CI coverage (#59)
  • Linux runtime compatibility + minimum glibc docs (#64)
  • NoDependencies native package variant for minimal Linux (#80)
  • linux-musl-x64 + linux-musl-arm64 native asset coverage (#82)

Phase 4 — Binding Auto-Generation

Design brief: phases/phase-4-binding-autogen.md.

  • Implement CppAst-based binding generator (#69)
  • Migrate SDL2 bindings from imported SDL2-CS files to generated code (#70)

Phase 5 — SDL3 Support

Design brief: phases/phase-5-sdl3-support.md.

  • Add SDL3 bindings and native packages to monorepo (#71)
  • Extend CI and packaging flow for SDL3 prereleases (#72)

Phase X — Build-Host Modernization

Closed 2026-05-10. The build host now follows ADR-002 and ADR-003; the remaining work is post-refactor hardening, not architecture migration.

Canonical docs: decisions/2026-05-05-target-centric-build-host.md, decisions/2026-05-12-build-host-data-layer.md, knowledge-base/testing-guidelines.md, knowledge-base/extraction-guidelines.md.

Post-refactor hardening: tracked in post-refactor-cleanup-plan.md — correctness gaps, style sweep, deferred extractions, test debt, UX polish. When all checkboxes resolve there, that file retires and any survivors fold back here.

2027 — Stabilization

Big-bang v1.0 launch shape + entry criteria per release-strategy.md §End State at v1.0 + §Promotion Gates.

  • Stabilize SDL2 + SDL3 packages (v1.0) — full satellite coverage per release-strategy end-state table
  • Community feedback incorporation
  • Begin Janset2D development on top of these bindings

Hardening Backlog

Open issues that are not phase-bound:

For non-issue-tracked deferred ideas, see parking-lot.md.

Versioning

Per-family version = <UpstreamMajor>.<UpstreamMinor>.<FamilyPatch> (D-3seg). UpstreamMajor.Minor anchored to manifest.library_manifests[].vcpkg_version and enforced by guardrail G54.

Current upstream pins:

Library vcpkg Pin Upstream Notes
SDL2 2.32.10 2.32.10 Current
SDL2_image 2.8.8#1 2.8.10 Upstream ahead of vcpkg
SDL2_mixer 2.8.1#1 2.8.1 Current
SDL2_ttf 2.24.0 2.24.0 Current
SDL2_gfx 1.0.4#11 1.0.4 Frozen (3rd party)
SDL2_net 2.2.0#3 2.2.0 Bind pending (#58)

SDL3 vcpkg availability: SDL3 3.4.4, SDL3_image 3.4.2, SDL3_mixer 3.2.0#1, SDL3_ttf 3.2.2#1. SDL3_net not yet in vcpkg (upstream WIP). SDL3_shadercross 3.0.0-preview2 (preview).

Cross-Reference