A discussion on r/golang suggested exploring Dolt (a MySQL-compatible database with Git-style versioning) as an alternative or supplement to SQLite.
Context:
- Currently, we use SQLite for its zero-config, embedded, and single-file nature, which is ideal for a local-first desktop application.
- We already leverage some LibSQL features and are considering Turso for future cloud-sync capabilities.
- We maintain relatively simple SQL to ensure broader compatibility.
Points for Discussion:
- Versioning & Rollbacks: Dolt provides Git-style branching, merging, and rollbacks at the database level. Would this be more robust than our current application-layer undo/redo logic?
- Embedded Requirements: Can Dolt (or other engines) run in a zero-CGO, embedded mode that fits our single-binary distribution model?
- Database Agnosticism: Should we further abstract our data access layer to support multiple backends (e.g., SQLite for local, Dolt for versioned flows, Turso for sync)?
- Trade-offs: Binary size, performance overhead, and 'no-CGO' compatibility.
We want to keep the foundation stable with SQLite for now, but this is an open thread to evaluate these architectural shifts as the project grows.
A discussion on r/golang suggested exploring Dolt (a MySQL-compatible database with Git-style versioning) as an alternative or supplement to SQLite.
Context:
Points for Discussion:
We want to keep the foundation stable with SQLite for now, but this is an open thread to evaluate these architectural shifts as the project grows.