Skip to content

docs(blog): announce the Go rewrite of the Appwrite CLI - #3155

Merged
atharvadeosthale merged 5 commits into
mainfrom
blog/appwrite-cli-go-rewrite
Aug 11, 2026
Merged

docs(blog): announce the Go rewrite of the Appwrite CLI#3155
atharvadeosthale merged 5 commits into
mainfrom
blog/appwrite-cli-go-rewrite

Conversation

@ChiragAgg5k

Copy link
Copy Markdown
Member

Draft announcement post for the Appwrite CLI Go rewrite, to publish alongside the 26.0.0 stable release. Marked draft: true in the frontmatter, so it does not appear on the blog until that flag is flipped.

Preview locally at /blog/post/rewriting-the-appwrite-cli-in-go.

What the post covers

Structured after Bun's "Bun in Rust" post, which works because it is candid rather than celebratory. The sections are: why the rewrite happened, why Go and not Rust, what measurably improved, what we deliberately refused to change, and the phased process behind it.

Three choices worth calling out for review:

It says plainly what the rewrite did not fix. The cost breakdown names three buckets and concedes that only two were worth touching — everything else is network- or human-bound, and the post says so rather than implying a blanket speedup.

It reports the target we missed. Root help renders in 10.3 ms against a "under 10 ms" goal. The post states that rather than rounding down, and explains that most of the macOS gap sits below our code.

It names three defects that would have shipped. Unsigned darwin/amd64, the no-op version ldflag and its follow-up bug, and the e2e loop that had been silently reporting nothing. All were found by inspecting artifacts and cutting a real release, not by reading code, which is the more useful lesson.

Assets

Every terminal capture is a real recording against the shipped appwrite-cli@25.1.0 and appwrite-cli@26.0.0-rc.1 binaries on the same machine — no mockups, no hand-edited numbers. Recorded with VHS at 1800px so they stay sharp on HiDPI displays, and the prose quotes whatever the final recording produced.

Startup, measured with hyperfine so the tool states the conclusion itself rather than leaving the reader to compare two time outputs:

startup

Install footprint, using --prefix so both runs share one prompt and the version strings identify which CLI is which:

install

footprint

The grouped help screen, full output:

help

Cover, generated with cover.appwrite.network using the Dual Icon Tilted Dark template. The Go mark is the repo's own static/images/platforms/dark/go.svg, recoloured to Go's brand blue:

cover

Open before this can publish

  • Publish date. Currently 2026-08-11. Needs to match the actual 26.0.0 release.
  • Removed services. vcs, migrations and notifications ship in the TypeScript CLI and are intentionally absent from the Go one. Anyone with those in a pipeline breaks on upgrade, and the post currently says flags and aliases held across the whole surface, which overstates it slightly. Either the migration note names the three with their replacement paths, or we handle it in the changelog and soften that sentence — needs a decision plus the replacement path for each.
  • push memory footage. The 283.5 MB to 28.0 MB claim is the one carried by a table rather than a recording, because the staging account has no project to push to. Happy to record it against a real project.
  • Go trademark. The cover uses the Go logo. Ordinary nominative use for a post about rewriting in Go, but flagging in case brand review wants a say.

Notes

  • Images use the "contain" title (src/markdoc/nodes/Image.svelte:17) to opt out of the default 16:9 object-cover crop, which otherwise slices non-16:9 assets.
  • Benchmark figures in the tables are the team's controlled measurements from docs/go-cli/BENCHMARKS.md; the GIFs are live runs on a working machine and drift a few percent between takes. They are presented as illustration, not as the authoritative number.

Draft announcement for the 26.0.0 stable release, covering why the rewrite happened, what it measurably changed, the invariants we held, and the phased process behind it.

Terminal assets are real captures against the shipped 25.1.0 and 26.0.0-rc.1 binaries rather than mockups, recorded at 1800px so they stay sharp on HiDPI displays.
@appwrite

appwrite Bot commented Aug 7, 2026

Copy link
Copy Markdown

Appwrite Website

Project ID: 69d7efb00023389e8d27

Sites (1)
Site Status Logs Preview QR
 website
69d7f2670014e24571ca
Ready Ready View Logs Preview URL QR Code

Website (appwrite/website)

Project ID: 684969cb000a2f6c0a02

Sites (1)
Site Status Logs Preview QR
 website
68496a17000f03d62013
Queued Queued View Logs Preview URL QR Code


Tip

Messaging handles push notifications, emails, and SMS through one unified API

ChiragAgg5k and others added 2 commits August 9, 2026 18:46
Co-authored-by: Cursor <cursoragent@cursor.com>
…media

Restructure the opening so the results section follows the intro, and
move the startup benchmark under its own heading with the hyperfine
table. Rewrite the body and FAQs to ASD-STE100, second person for the
reader.

Normalise the recordings to 1460x822 with the prompt anchored at the
same point in all three, and recrop the help screenshot to the same
aspect. Add the More resources footer.
@atharvadeosthale
atharvadeosthale marked this pull request as ready for review August 11, 2026 12:49
@greptile-apps

greptile-apps Bot commented Aug 11, 2026

Copy link
Copy Markdown
Contributor

Greptile Summary

The PR adds the announcement and changelog entry for the Appwrite CLI’s Go rewrite, along with benchmark captures and supporting artwork.

  • Documents startup, installation, memory, and binary-size improvements.
  • Describes compatibility guarantees, migration considerations, and the phased rewrite process.
  • Adds a changelog entry linking to the full announcement.

Confidence Score: 4/5

The PR does not yet appear safe to merge because the release announcement remains publicly discoverable before its intended publication point.

The current post is marked draft: false, the public feeds do not filter drafts, and the eagerly indexed changelog entry links directly to the announcement, so the previously reported premature-publication failure remains.

Files Needing Attention: src/routes/blog/post/rewriting-the-appwrite-cli-in-go/+page.markdoc; src/routes/changelog/(entries)/2026-08-11.markdoc

Important Files Changed

Filename Overview
src/routes/blog/post/rewriting-the-appwrite-cli-in-go/+page.markdoc Adds the full announcement but currently marks it published, leaving the previously reported premature-disclosure path outstanding.
src/routes/changelog/(entries)/2026-08-11.markdoc Adds an eagerly indexed changelog entry that directly links to the announcement before the intended release point.
.optimize-cache.json Adds the intentional source-extension cache record for the optimized help image.

Reviews (2): Last reviewed commit: "docs(blog): publish the CLI Go rewrite p..." | Re-trigger Greptile

Comment thread src/routes/blog/post/rewriting-the-appwrite-cli-in-go/+page.markdoc Outdated
@atharvadeosthale
atharvadeosthale merged commit 63f8d82 into main Aug 11, 2026
6 of 7 checks passed
@atharvadeosthale
atharvadeosthale deleted the blog/appwrite-cli-go-rewrite branch August 11, 2026 13:03
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants