go-desktop

A map of one pure-Go ecosystem — 294 organisations and 637 repositories of libraries that build a desktop, typeset a document, mount a filesystem, boot a machine and run Ruby, with no C anywhere.

294 organisations CGO_ENABLED=0 throughout amd64 · arm64 · riscv64 · loong64 · ppc64le · s390x 100% statement coverage as a CI gate BSD-3-Clause no exec.Command to a CLI
Documentation Browse the map GitHub

Every library here is written in Go and compiled with CGO_ENABLED=0. That is not a stylistic preference: it is what makes one binary cross-compile to six architectures, run inside a browser as WebAssembly, and boot on bare metal without a libc. Where a good pure-Go library already exists it is used rather than rewritten; where the only option was a C library behind cgo, the capability was rebuilt.

The ecosystem is deliberately split into one organisation per domain and one repository per capability, so a program that needs an ext4 reader takes an ext4 reader and not a storage framework. What follows is the whole of it, grouped by what the code does. Counts are the public repositories that hold code — brand, docs and landing repositories are not counted.

Desktop & widgets · 9 organisations

One widget toolkit, every surface it paints on, and the platform plumbing a real desktop needs.

go-gtk 1 repo

GTK4 driven from pure Go over purego, CGO=0 — the Linux native-toolkit bridge for go-widgets, sibling of go-macos/objc.

go-widgets 19 repos

The widget toolkit and every surface it paints on: the painter seam, MVVM, a declarative skin engine, a terminal back-end, a native window on X11, Wayland, Cocoa and Win32, application lifecycle with a system tray, a real Android APK, and a desktop shell.

go-freedesktop 10 repos

freedesktop.org integration — .desktop entries, icon themes, shared MIME info, application associations, the menu tree, desktop notifications and Secret Service — over an owned X11 protocol core that also serves screen capture and the toolkit's window back-end.

go-icons 6 repos

Icon and logo packs as embedded pure-Go SVG data — Simple Icons brand marks, Devicon, Material and Seti file types, vscode-icons, and Iconoir. One repository per pack, so a program embeds the set it draws and not the other five; the drawing itself is go-gfx's `svg` package.

go-keyring 1 repo

One secret store over macOS Keychain, Windows Credential Manager and Linux Secret Service — no cgo, no CLI exec.

go-macos 26 repos

The macOS foundation, all of it CGO-free through purego: the shared Objective-C runtime bridge, real AppKit controls embedded in a Go-painted window, Keychain and Touch ID, notifications and menu-bar items, accessibility, global hotkeys, login items and launch agents, IOKit HID, DiskArbitration, hardware audio and video decode, ScreenCaptureKit capture, and virtual displays the desktop extends onto.

go-mswin 3 repos

The Windows foundation: Win32 bindings and WinRT interop on combase — peer of go-macos/objc — plus DXGI Desktop Duplication and GDI screen capture built on them.

wasmdesk 7 repos

A desktop in the browser — a Wayland-inspired compositor and window manager, a dock, a login portal, OCI app packaging and a coreutils suite.

Graphics, images & media · 6 organisations

The 2D socle everything above draws through, and the pixels and frames it moves.

go-gfx 2 repos

The shared 2D socle: an anti-aliased vector rasteriser, a raster surface, colour, geometry, resampling, and SVG to bitmap.

go-streamkit 1 repo

Site-agnostic transport for streaming media: a retrying, rate-limited HTTP client, an HLS parser and an MPEG-DASH manifest reader.

go-extractors 1 repo

A plugin framework for media extractors — standalone plugin executables answer what is at a URL and what can be downloaded from it.

go-xrkit 5 repos

XR glasses: head orientation, stereo frame packing, flat, equirectangular and fisheye projection, a 360° screen ribbon, a graded catalogue of what each headset can show — plus a player, a virtual desktop on the ribbon, and Android capture.

Documents, typesetting & fonts · 9 organisations

Turning a document into pages: fonts, breaking, shaping, TeX, PDF, and one rich-document model.

go-tex 5 repos

A TeX engine — mouth and gullet, math mode to SVG, a PDF-figure rasteriser, and a fetcher that gets a document the class files it asks for without redistributing any.

go-typeset 3 repos

The typesetting algorithms on their own, with no TeX vocabulary in the API: Knuth-Plass line breaking, Liang hyphenation, the Unicode bidirectional algorithm.

go-opentype 3 repos

The font format: TrueType/OpenType parsing and anti-aliased rasterisation, a HarfBuzz-lite complex-text shaper, and legible fonts ready to import.

go-pdfkit 12 repos

The PDF stack, both directions: a 1.7 writer with TrueType and CFF subsetting, a reader and renderer, AcroForm and XFA form fields, text and structure extraction, a conformance suite judged against poppler, and a co-editable reader application built on all of it.

go-docutils 2 repos

reStructuredText both ways: docutils' core in pure Go — the parser and the doctree the LaTeX and PDF path is built on — and an extractor that renders a Go package's own API documentation as reST to feed it.

Markup, templating & text · 10 organisations

Reading and writing the formats documents arrive in, and the engines that scan them.

go-regexp 1 repo

An Onigmo engine shaped like the standard library's regexp, with the lookaround and backreferences RE2 cannot do.

Web & transports · 4 organisations

Rendering a page without a browser, and carrying gRPC where gRPC does not go.

go-webengine 3 repos

A headless web engine: HTML and CSS laid out and painted to an image, with no Chromium — plus a service that streams those frames to a thin client.

Realtime collaboration · 2 organisations

Many people, one document, no server deciding who won.

go-crdt 2 repos

A replicated text document and the service that carries it between the people editing it — the same merge logic on the server and in the browser, via js/wasm.

Ruby, in Go · 4 organisations

A Ruby virtual machine, its object model, and one organisation per gem it needs.

go-composites 31 repos

Ruby's numeric tower, collections, time and dates as composition-oriented building blocks: Result-based, Null-Object, never nil.

CPU, SIMD & numerics · 4 organisations

Getting the machine's width out of pure Go, on all six 64-bit targets.

go-simd 22 repos

SIMD kernels on all six of Go's 64-bit targets — codecs, hashes, string scans, bitsets, float and int8 dot products.

Compression, delta & erasure · 3 organisations

Making bytes smaller, sending only what changed, and surviving what is lost.

Storage, volumes & filesystems · 6 organisations

From a block device to a mounted filesystem, without a C library anywhere.

go-volumes 9 repos

The block layer — a device contract, NBD, pools, replicas, S3, an OCI image as a block device, GPT and MBR, and parse-hardening guards.

go-filesystems 20 repos

Filesystem-format drivers — ext4, xfs, btrfs, zfs, apfs, ntfs, exfat, fat32, iso9660, squashfs and more — plus UEFI variable management and a format prober. And the other direction: NFSv3, SFTP and WebDAV servers that export any of them, so an image can be mounted by the host rather than only read by a program.

Firmware, boot & trust · 5 organisations

What runs before the kernel, and how you prove what ran.

go-tpm2 8 repos

TPM 2.0 end to end: transports, the command layer, EFI_TCG2, measured boot, event-log replay and remote attestation.

go-coff 4 repos

PE/COFF for UEFI — an object-to-EFI linker, a signing and conversion CLI, and a self-extracting EFI packer.

Packaging & supply chain · 4 organisations

Building every dependency from source, signing it, and saying where it came from.

go-pkgx 8 repos

A pure-Go pkgx: the package manager, the bottle installer, the bk recipe builder, and the CI factory that publishes signed bottles.

go-attest 2 repos

SPDX and CycloneDX SBOMs, SLSA provenance, and Ed25519 signing that is minisign- and cosign-interoperable from one keypair.

go-gitsafe 1 repo

Guards on what leaves a machine: a global git hook that refuses a credential in a remote URL and a write to the branch pull requests land on, a credential helper that never lets a token reach a command line, and a scope checker that reads a token's powers without printing it.

Virtualisation, cloud & network · 8 organisations

microVMs, guest drivers, supervision, coordination and the network between them.

openweft 70 repos

weft — a Go-native microVM cloud: drivers, network, block storage, HA services, runners, clients, native apps, and the loom editor built on it.

go-virtio 13 repos

Guest virtio drivers: net, blk, gpu with virgl and Venus, console, rng, vsock, balloon, fs, sound, input.

go-proc 2 repos

A PID-1 subreaper and process supervisor, and the restart state machine that decides when to try again.

Configuration management · 11 organisations

The Puppet and Ansible stacks, in Go, without a Ruby or Python runtime.

go-ansible 10 repos

Ansible: inventory, variable precedence, Jinja2-compatible templating, connection and become plugins, the module protocol, and the playbook engine.

News, social & feeds · 11 organisations

One reader, and a client per source it reads.

go-news-reader 1 repo

A multi-source news and social aggregator with a go-widgets interface — Reddit, RSS, Hacker News, Usenet, Mastodon, Lemmy, Bluesky and more in one reader.

Games · 2 organisations

Two engines hand-ported to pure Go, one of them onto bare metal.

The map itself · 1 organisation

The one thing this organisation does hold: the tool that generates every page here.

go-desktop 1 repo

The generator. It reads the live GitHub organisation list and reconciles it against a curated classification, then writes the landing configuration, the family pages, the gem list and this profile. The reconciliation is the point: an organisation that holds code but is in no family fails the build, so the index cannot quietly omit something that exists.

Ruby gems, one organisation each · 195 organisations

The Ruby virtual machine is only useful with a library around it. Each gem it needs is reimplemented in pure Go in its own go-ruby-* organisation — the standard library, Rails and its dependencies, the testing stack, the Puppet stack, database drivers, serialisation formats and template engines. Every one of them is byte-compared against MRI where a byte comparison is meaningful.

What every repository is held to

The same conformance standard applies across all 294 organisations, which is why they can be read as one ecosystem rather than a pile of unrelated modules.

CGO_ENABLED=0

No cgo, and no shelling out to a command-line tool in place of a library. A dependency is a Go module or it is written. That is what keeps cross-compilation, js/wasm and bare-metal targets available at once.

Six 64-bit targets

Build and test on amd64, arm64, riscv64, loong64, ppc64le and s390x — native where runners exist, under qemu-user otherwise. s390x is big-endian, which keeps every on-disk and on-wire encoding honest.

100% statement coverage

A CI gate, error branches included. A skipped test is not a passing one: jobs fail when a toolchain is missing rather than turning green quietly.

Measured, not asserted

Performance claims come with a benchmark against the reference implementation, and correctness claims about a format come with a byte comparison against it. Decoders are fuzzed.

One landing, one docs site

Each organisation publishes a Hugo landing page at <org>.github.io and versioned MkDocs Material documentation at <org>.github.io/docs/, with the same brand and a light/dark/system theme toggle.

BSD-3-Clause

Every repository, every organisation. Copyright is held by the authors of the organisation it lives in.

Held, not yet built

These organisation names are reserved and empty. They are listed so the map has no silent gaps — an empty organisation is not a shipped one. go-graphdrawing, go-grub, go-quake2, go-quake3, go-sicp, go-ruby-atproto, go-ruby-birdsite, go-ruby-hackernews, go-ruby-instagram, go-ruby-mastodon, go-ruby-newsgroups, go-ruby-syndication, go-ruby-tiktok.