Spokes.wiki Search About

dev-tooling-wiki

log

Synthesis — Developer Tooling

The evolving thesis. Spun out of the hub _inbox on 2026-06-18 from three developer-infrastructure strays that had no home and, between them, sketched a domain: the systems-level tools and libraries that build, version, and move software. This founding synthesis is deliberately about the shape of that domain — three sources, three different layers — rather than a single tight argument; it sharpens as more sources land.

What this spoke owns

The pipeline a programmer’s work flows through that isn’t the application code itself:

  • Language toolchains & compilers — how source becomes runnable (typescript-7-go-compiler).
  • Version control — how source and its history are stored and shared: the incumbent git (content-addressed/Merkle, distributed) and the next-gen challenger lore (Rust, large-asset storage).
  • Serialization & data-interchange formats — how structured data is laid out to move between processes/machines (yaff, clickhouse-rowbinary — the corner now has two members).
  • API contracts & code generation — the interface written once as a schema, with clients/stubs/docs generated from it (openapi-generator, schema-driven-codegen). Opened 2026-07-16.
  • Build & dependency structure — how many projects share a repo and how their deps/CI scale: monorepo vs polyrepo (block-monorepo-migration — Block’s 450-repo JVM consolidation).
  • CI/CD & the delivery platform — the pipeline that turns a commit into a deployed artifact, and the Git host / registry / dev-environment stack around it (harness-open-source — the corner’s first member, opened 2026-08-05). Distinct from operating that platform in production, which is platform-ops-wiki.
  • (Open corners for future sources: package managers, linkers, IDE/LSP tooling.)

These are distinct topics, so the spoke is broad by construction — closer to game-engines-wiki or search-marketing-wiki in breadth than to a single-subject spoke. The bet is that they cohere as one practitioner’s concern — “the tools under my code” — even though a compiler, a VCS, and a wire format share little machinery.

The one real cross-cutting thread (so far): systems-language rewrites for raw speed

The clearest pattern across all three founding sources is performance won by dropping a layer of overhead, usually via a systems language:

  • typescript-7-go-compiler rewrites the TypeScript compiler from TS/JS into Go for “often ~10×” faster builds — native code + shared-memory parallelism replacing a JS-interpreted typechecker (now GA, with named 7.7×–11.9× real-world builds and 6–26% lower memory).
  • yaff eliminates the deserialization step entirely: an mmap-compatible flat layout read directly from the buffer (C++), so field access approaches native-struct speed — the FlatBuffers “zero-copy” move applied inside the Protobuf ecosystem.
  • lore rebuilds version control in Rust with content-addressed chunked storage so that large binary assets — which Git handles poorly — get cheap branching and on-demand hydration.

So the unifying move isn’t a shared technology; it’s a shared strategy: take an established developer-infrastructure layer (typechecking, parsing, revision control) and remove its dominant runtime cost, leaning on Go/Rust/C++ to do it. All three are also big-tech open-source (Microsoft, Yandex, Epic) — infra built for an internal scale problem and released.

The fourth source breaks that pattern — and that’s the point. block-monorepo-migration (Block: 450 JVM repos → monorepo) is not a systems-language speed rewrite; it’s a structural / developer- experience story — consolidating repos to kill dependency drift, paid for with custom build tooling and a funded platform team. So the systems-language-speed thread was a coincidence of three founding launches, not the spoke’s spine. The spine is broader: the infrastructure under the code — built, versioned, and moved — whatever the lever (raw speed, structure, or coordination). It also ties the corners together: monorepo scaling is a VCS problem (lore‘s territory) and a build problem at once.

A fifth source confirms “the layer, not the lever” inside the compiler corner. v-flat-ast (the V language’s compiler moving to a flat-ast) is a second compiler source beside typescript-7-go-compiler — but a different lever again: TS7 won ~10× speed by changing the compiler’s host language (TS→Go); V won ~15× memory (self-hosting RAM ~6 GB → 400 MB) by changing the compiler’s in-memory data layout (pointer-linked tree → flat index-linked arrays). So the compiler corner now holds two performance stories with no shared lever — language-port vs. data-oriented layout — which is exactly the spine the spoke settled on: it’s organized by the layer (here, compilers), not by any one technique. flat-ast also reaches across corners to yaff: dense contiguous storage with indices/offsets instead of pointers is the same memory-layout discipline, applied to an AST in one case and a wire format in the other.

A sixth source adds a new lever — and a new question about who pulls it. clickhouse-rowbinary (ClickHouse’s JS library for its RowBinary wire format) lands in the serialization corner beside yaff, but wins performance a fourth way. The levers so far: language-port (typescript-7-go-compiler), data-layout (flat-ast, yaff), and incremental-tuning-of-the-incumbent (git 2.55). RowBinary adds specialization / codegenmonomorphization: generate a parser narrowed to the exact column types so the JIT (V8) can inline it, instead of a generic reader whose megamorphic dispatch it can’t. That slots neatly into “the layer, not the lever”: same serialization layer as YaFF, different lever (YaFF drops the parse step via zero-copy; RowBinary keeps a compact varint format but drops the dispatch via specialization). The new wrinkle is who does the specializing: not a protoc-style schema compiler but an LLM agent reading densely-commented primitives through a bundled SKILL.md — the “library is the parser compiler” framing. That’s the first source where the dev-tool’s compilation step is an AI agent, an adjacency to agentic-tooling-wiki (the skills machinery) that this spoke should watch: if more “library-as-agent-skill” tooling lands, “who compiles the toolchain” becomes a spine question, not a one-off.

The language corner left this spoke (2026-08-05). Three sources — dart, kotlin (with kotlin-and-android) and jank — built a programming-language corner here between July 15 and 19, and on 2026-08-05 the curator narrowed this spoke’s domain and moved those pages to ../programming-languages-wiki, which had spun out the same day. What they were doing here is worth stating once, because half of it stays and half of it goes.

Stays: the compiler-performance thread. Kotlin’s K2 frontend rewrite (Kotlin 2.0, 2024; up to 94% faster compilation, 376% faster analysis) is a fourth lever in this spoke’s compiler corner beside host-language port (typescript-7-go-compiler), data layout (v-flat-ast) and specialization/codegen (clickhouse-rowbinary). A compiler getting faster is build infrastructure and this spoke’s business, whatever language it compiles. So is the dev-vs-ship compilation split (JIT for the iteration loop, AOT for the shipped binary) that Dart and jank both instance — a toolchain design decision this corner keeps meeting.

Goes: what the languages mean. “One source, many backends” (Dart to native/JS/Wasm, Kotlin to JVM/JS/native/Wasm) and jank’s host swap — the same Clojure semantics re-hosted from the JVM onto C++ — are claims about language design and about which runtime a language targets. Those belong with clojure and the hosted-language thread next door, and they read better there: jank against Clojure is one language on two hosts, which is the cleanest evidence either spoke has that a language and its runtime are separable.

Two consequences here. The ownership observation survives the move — jeaye-wilkerson funded by community sponsors was this spoke’s second commons-shaped maker, and with that page gone openapi-tools and replikativ carry the pattern alone. And jetbrains stays, still opening an IDE/LSP stratum this spoke has never sourced, which is now a growth edge with no language page propping it up.

An eighth source opens a corner the spoke listed as empty — and answers “who compiles the toolchain” with a second, older voice. openapi-generator (a 2018 community fork of Swagger Codegen; 50+ client and 40+ server generators from one OpenAPI spec) is the spoke’s first API-contract / codegen source, and it arrives as the exact thing clickhouse-rowbinary was defined against. The RowBinary entry above was filed as “not a protoc-style schema compiler but an LLM agent reading a SKILL.md” — OpenAPI Generator is the protoc-style schema compiler, deterministic and template-driven, 26.5k stars and eight years old. So the “who does the specializing” wrinkle is now a genuine two-sided question rather than a one-off observation, and schema-driven-codegen pages both poles: generator writes the code (reviewable, reproducible in CI, bounded by which templates exist) vs agent writes the code (unbounded targets, no templates to maintain, no determinism). Both start from the same premise — don’t hand-write what a machine-readable contract already implies — and disagree only about what reads the contract.

It also lands the lever framing again: OpenAPI Generator isn’t a performance story at all (not language-port, not data-layout, not specialization-for-speed). Its lever is drift elimination across N languages — much closer to block-monorepo-migration‘s structural/coordination play than to any of the speed rewrites. Second confirmation that the spine is the layer, not the lever.

And it breaks the ownership pattern. Every prior source here is big-tech infrastructure released outward (Microsoft, Yandex, Epic, Google, JetBrains). OpenAPI Tools has no corporate parent — it’s a contributor body that left one, funded by Open Collective and sponsors, and explicitly not affiliated with the OpenAPI Initiative that owns the spec it implements. The dominant implementation of a standard sitting outside that standard’s governance is a new shape on this map, and the spoke’s first data point on dev infrastructure as commons rather than vendor output.

A ninth source adds a third stance toward Git — and a new VCS lever: queryability. geschichte (from the replikativ Clojure collective) lands in the now-densest version-control corner, but it neither rewrites the format for speed/assets (lore) nor tunes the incumbent in place (git 2.55). It wraps Git — reads/writes real Git objects, packs, and wire protocols — while storing repo state (refs, history, worktree) in Datahike, a Datalog database, so history becomes something you query rather than walk. That’s the corner’s fourth lever and a genuinely new one: not language-port, data-layout, specialization, or incremental-tuning, but version-control-as-a-database (queryability). It also stakes a third position on the “what to do about Git” axis the corner keeps circling — replace (Lore’s clean-break format) vs tune (Git 2.55’s incremental optimization) vs wrap (geschichte’s interop-plus-query overlay). And it borrows across corners: its content-defined chunking for binaries is lore‘s large-asset move, applied inside a queryable store. On ownership it lands with openapi-tools and jank on the commons side, not big-tech — a community collective, the spoke’s third non-vendor maker. (jank moved to ../programming-languages-wiki on 2026-08-05; the ownership point stands and the link is now cross-wiki.) Second Clojure data point too (jank was the first): the language now appears in two corners — a runtime and a VCS. Pre-1.0 and self-reported (T1 first-party, formats still moving), so the queryable-VCS claim wants a neutral test.

Open questions

  • Does this spoke cohere, or is it a junk drawer? It was spun out at the human’s explicit call on a ≥3 count of heterogeneous tools, not a tight topic. First data point toward cohering (2026-06-20): block-monorepo-migration / monorepo deepen the version-control + build corner alongside lore rather than opening a 4th disconnected topic — the “deepen a corner” outcome, not the “one-per-topic” one. Second data point (2026-06-30): git + the git-2-55 release land in the same version-control / large-repo-scaling corner again (lore, monorepo, Block) rather than scattering — the VCS corner is now the spoke’s densest. The cohere-not-junk-drawer reading strengthens.
  • Is “rewrite the toolchain in a systems language” the actual theme? Answered (2026-06-20): no. block-monorepo-migration is a structure/coordination/DX story with no systems-language-speed angle, so that thread was an artifact of three performance-led launches. The theme is the layer (build / version / move infra), not the lever (speed).
  • Who compiles the toolchain — a generator or an agent? (new, 2026-07-16) Raised as a wrinkle by clickhouse-rowbinary, now a real two-sided question with openapi-generator on the other side (schema-driven-codegen). Deterministic template-driven codegen has eight years and 26.5k stars; agent-driven specialization has one source and a SKILL.md. Watch which way new codegen tooling falls — if more “library-as-agent-skill” tooling lands, this becomes a spine question. Note the two aren’t strictly rivals yet: nobody has shipped an agent that replaces a maintained generator set, and the determinism/CI-reproducibility gap is the thing an agent would have to close.
  • Does a generator count mean anything? “50+ client generators” (openapi-generator-docs) measures reach, not depth — Java has ~15 maintained HTTP-client variants; other targets have one, of unstated quality. Same unverified-vendor-number caveat as the maturity spread below, in a different shape. No independent assessment of per-generator quality is sourced here.
  • Maturity spread. typescript-7-go-compiler shipped GA (2026-07-08) — no longer an RC, and its ~10× speed claim now carries named real-world numbers (VS Code 11.9×, Sentry 8.9×, Bluesky 8.7×) plus adopter testimonials (Slack, Microsoft News, Vanta); lore is pre-1.0; yaff is pre-alpha (v0.1.0, ~2 commits). The vendor figures still aren’t independently verified here, and TS7’s programmatic API is incomplete (embedded frameworks — Vue/Angular/Svelte/Astro — can’t adopt it until ~7.1), so “stable” is the compiler, not yet the whole ecosystem.

Growth edges

Ranked; each names the kind of source that would close it (see ../QUALITY.md → Growth edges).

  1. Generator or agent, for codegen. Deterministic template codegen has eight years and 26.5k stars (openapi-generator); agent-driven specialization has one source and a SKILL.md. — needs: a T1/T2 comparison, or a second agent-codegen source with output quality reported.
  2. Whether the VCS corner is the spoke’s actual centre. Three sources have now landed in it rather than scattering, which is evidence the spoke coheres. — needs: one more version-control or large-repo-scaling source to settle the cohere-not-junk-drawer question.
  3. Compiler performance, independently measured. typescript-7-go-compiler‘s 10× is first-party. — needs: a T2 benchmark someone else ran.

Coverage edges (added 2026-08-08, at the curator’s request for a wider backlog). These widen what the spoke covers instead of answering an open question above; one ordinary solid source closes any.

  1. Package management. The spoke owns build and version control and has no page on dependency resolution — npm/pnpm, uv, cargo — which is where most day-to-day tooling pain lands. — needs: official docs plus one migration report with numbers.
  2. CI, the place these tools actually run. monorepo and block-monorepo-migration both assume a build farm and no page describes one. — needs: GitHub Actions or Buildkite documentation plus a report on remote caching or build-farm cost.
  3. The lint-and-format layer’s rewrite wave. Ruff, Biome and oxlint are the same layer-versus-lever story the spoke already tells with typescript-7-go-compiler, in a different slot. — needs: project docs plus one independently measured benchmark.
  4. The editor. jetbrains sits alone; VS Code, Neovim and Zed have no page, and the editor is where agent integration is being fought over. — needs: release notes or docs per editor. Cross-spoke: the agent harness itself stays in agentic-tooling-wiki.

Contradictions / tensions

No fact conflicts yet. One genuine engineering trade-off now recorded (not a contradiction): the monorepo vs polyrepo choice — monorepo trades per-team coordination overhead for a standing platform-team bill (block-monorepo-migration: “if you can’t fund a platform team… do polyrepo”).

Cross-spoke adjacency

  • agentic-tooling-wiki — owns agent-building tools and coding harnesses; this spoke owns the general developer tooling underneath any codebase. A coding agent routes there; the compiler/VCS/format it operates on routes here. New shared entity (2026-08-05): harness-io the company is noded there for its AI-agent delivery product; its open-source delivery platform harness-open-source is here. One company at two layers — the pipeline that ships code (here) and the agent governance sold on top (there). The [[harness-io]] node is reused cross-wiki, not duplicated, and both places carry the company ≠ agent-harness homonym warning.
  • platform-ops-wiki — owns operating production systems. harness-open-source as build/ship infrastructure is here; running a Harness deployment (SLOs, incidents, uptime) is there. The building-vs-running line is the same one that separates this spoke from ops generally.
  • programming-languages-wiki — the sibling this spoke’s domain was narrowed against on 2026-08-05, and the destination of five pages that day (dart, kotlin, kotlin-and-android, jank, jeaye-wilkerson). The line: a compiler’s implementation, performance and internals are here; what the language means — types, memory, concurrency, paradigm, governance — is there. A language’s own package manager is the seam: as a tool it is here, as evidence of design commitments it is there.
  • bit-manipulation-wiki — instruction-level bitwise techniques (a CS-fundamentals sibling); distinct from whole-tool infrastructure.
  • webperf-wiki — front-end delivery byte budgets; yaff‘s bytes are server-side wire formats, a different layer.
  • game-engines-wikilore is the built-in VCS for UEFN, so there’s a real Epic/asset-pipeline tie, but Lore is general-purpose dev infrastructure, not an engine. Second tie (2026-07-15): dart is the language behind Flutter and thus Flame (paged there). That tie now runs through a third spoke — Dart moved to ../programming-languages-wiki on 2026-08-05 — so the language is there, the engine stays in game-engines, and what routes here is a Dart toolchain story (compiler performance, build output) if one arrives.

Index — Developer Tooling Wiki

Catalog of every page, grouped by schema.org @type. Spine: synthesis (thesis), log.md (history), this file (catalog). Read this first when answering a query, then drill into the relevant pages. Updated on every ingest.

DefinedTerm (concepts / standards)

  • developer-toolingumbrella: the systems-level tools that build, version, and move software; the axes this spoke tracks · domain
  • monorepo — one repo for many projects (vs polyrepo); kills dependency drift, at the cost of build/VCS scaling + a platform team · practice
  • flat-ast — data-oriented AST: flat index-linked arrays instead of a pointer-linked node tree; the compiler-memory lever (V: 15× less RAM) · technique
  • schema-driven-codegen — write the interface once as a schema, generate clients/stubs/docs from it; the protoc archetype, and the generator-vs-agent question · technique
  • monomorphization — specialized-parser codegen: emit type-narrow code so the JIT inlines it (vs generic megamorphic dispatch); the specialization lever behind clickhouse-rowbinary · technique

SoftwareApplication (tools)

  • git — the incumbent distributed VCS (content-addressed/Merkle); the version-control baseline lore reacts to and the monorepo scaling target · tool

SoftwareSourceCode (tools / libraries)

  • yaff — Yandex’s C++ zero-copy serialization library for the Protobuf ecosystem (mmap flat layout, adaptive runtime representations) · source · T1 · github.com
  • lore — Epic Games’ Rust next-gen version-control system for code + large binary assets (content-addressed Merkle storage) · source · T1 · github.com
  • geschichte — “Git, as a queryable database” (Clojure/replikativ): wraps real Git objects but stores refs/history in Datahike for Datalog queries; content-defined chunks; the VCS-as-database lever; pre-1.0 · source · T1 · github.com
  • openapi-generator — 2018 community fork of Swagger Codegen; 50+ client / 40+ server generators from one OpenAPI spec, plus docs/MySQL-schema/Postman/WSDL; Mustache templates; Apache-2.0, 26.5k★ · source · T1 · github.com · codegen
  • clickhouse-rowbinary — ClickHouse’s Node.js lib for the RowBinary wire format; ships monomorphizable primitives + a SKILL.md so an AI agent generates type-specialized parsers (“library as parser compiler”); RowBinary vs JSON 2.1–3.3× · source · T1 · clickhouse.com · serialization
  • harness-open-sourceHarness’ self-hostable all-in-one dev platform (Apache-2.0, Go, ~37.7k★): SCM + CI/CD + hosted dev environments + artifact registry in one binary (ex-Gitness, absorbed Drone); opens the spoke’s CI/CD & delivery-platform corner; the consolidation bet moved up from repo layout to the delivery stack · source · T2 · github.com · delivery-platform

Organization

  • jetbrains — dev-tools company; creator/funder of kotlin (the language page now lives in ../programming-languages-wiki); opens the (unsourced) IDE/LSP stratum (IntelliJ, Android Studio platform) · entity
  • openapi-tools — parent org of openapi-generator; contributor body from the Swagger Codegen fork, Open Collective-funded, unaffiliated with the OpenAPI Initiative; the spoke’s first non-corporate maker · entity
  • replikativ — Clojure collective behind geschichte (+ Datahike/Konserve); decentralized-queryable-data ecosystem; commons-shaped maker (cf. openapi-tools) · entity

TechArticle / BlogPosting (sources)

  • typescript-7-go-compiler — TypeScript 7.0 GA: the compiler rewritten in Go (named 7.7–11.9× faster builds, 6–26% less RAM); stricter defaults; 7.1 to restore the programmatic API · source · T1 · devblogs.microsoft.com
  • block-monorepo-migration — InfoQ: Block consolidates 450 JVM repos into a monorepo (custom Gradle/IntelliJ tooling, merge queues, 8,800 builds/wk); the platform-team trade-off · source · T2 · infoq.com
  • openapi-generator-docs — OpenAPI Generator’s own README/site/migration guide: the generator catalog, the swagger-codegen fork (2.3.1→2.4.0), run surfaces, Open Collective governance, the untrusted-spec code-injection warning · source · T1 · github.com
  • git-2-55 — Linuxiac: Git 2.55 (2026-06-29) — Linux FSMonitor/inotify, faster reachability bitmaps (~612s→294s), incremental multi-pack indexing; large-repo speedups · source · T4 · linuxiac.com

SocialMediaPosting (sources)

  • v-flat-ast — @v_language: V’s compiler migrated to a flat AST; self-hosting RAM ~6 GB → 400 MB (15×) · source · T3 · x.com
  • openapi-generator-post — @GithubProjects: one-line pitch for openapi-generator (“You should not have to rebuild the same API client for every language”); the routing source, no detail behind it · source · T4 · x.com

Synthesis

  • synthesis — the evolving thesis (open questions + flagged contradictions)