Files
plainleaf/docs/ADR/008 Go Backend.md
T

1.7 KiB

tags, status, date, deciders, owner, dependsOn, supersededBy, references
tags status date deciders owner dependsOn supersededBy references
adr superseded 2025-09-19 Zef Hemel Zef Hemel
ADR/007 Core Application Logic on the Client
ADR/010 Rust Backend
server-common/src/space.rs
bin/silverbullet/src/server.rs

Context

The server had been a Deno-based TypeScript runtime since 2022. After ADR/007 Core Application Logic on the Client, the server became a thin file store so the heavier, TypeScript-oriented Deno runtime bought little, and a leaner compiled server looked attractive.

Decision

Rewrite the server in Go. Being just a file store, the whole backend was ported becoming significantly less memory and significantly smaller in size than the Deno build.

Consequences

Positive

Negative / trade-offs

  • Since the development of SilverBullet+ which required adding Rust to the stack, this resulted in 3 tech stacks (TypeScript, Go and Rust).
  • The Go CRDT ecosystem was immature, foreclosing a future CRDT ADR/002 Sync Engine.

Status update

Superseded by ADR/010 Rust Backend. The Go server was replaced by a Rust backend to converge the codebase on TypeScript + Rust and reopen the CRDT path. See ADR/010 Rust Backend for the current decision.

References