DocsDecisions

ADR-0006: Start from scratch rather than fork stargine

Status: Accepted, 2026-11-08

Context #

The operator asked whether to fork https://github.com/ssslakter/stargine (Apache-2.0, 17 stars, 68 commits, last commit 2026-08-28, ~3,100 lines of Mojo) and build Cinder from it. Inspected on 2026-11-08 by shallow clone.

Findings:

  • Rendering is OpenGL 4.5 through opengl-mojo; windowing through sdl-mojo (both from MojoGameDevs, hand-written bindings, the SDL one unpinned). The mission mandates wgpu-native with Vulkan and Metal, generated bindings, and exact pins. The GPU layer, renderer, shader loader, cubemap and texture code, the majority of the repository, would be discarded.
  • pixi.toml depends on mojo = ">=1.1.0.dev2026082605" from the nightly channel and is linux-64 only. Cinder pins stable 1.2.0 and targets linux-64 and osx-arm64.
  • No ECS, physics, glTF, animation, audio, asset pipeline, job system or tests of the kind required.
  • The remaining reusable parts (a small vector/matrix module, an event handler sketch) are smaller than the cost of adapting them to Cinder's SIMD math and ECS conventions and re-licensing headers.

Decision #

Cinder starts from an empty repository. stargine is kept as a reference (not a dependency and not vendored) for one thing: a working, compiled example of SDL3 FFI from Mojo on the 1.x line, useful when writing the platform layer and when debugging bindings. Any code copied from it, if ever, carries the Apache-2.0 notice in THIRD_PARTY_NOTICES.md.

Consequences #

  • No inherited design debt around OpenGL state or hand-written bindings.
  • Zero immediate cost; the reference is consulted during Phase 1 spike 1 and Phase 3.
View as MarkdownSource: docs/adr/0006-no-fork-of-stargine.md