Fork me on GitHub

A map of one pure-Go ecosystem.

316 organisations and 755 repositories of libraries that build a desktop, typeset a document, mount a filesystem, boot a machine and run Ruby, with no C anywhere.

316 organisations CGO_ENABLED=0 throughout 6 64-bit targets 100% statement coverage as a CI gate BSD-3-Clause

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 Β· 13 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 7 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-appdirs 1 repo

Where a file belongs on the host: the durable per-user directory a program should write to, chosen per platform, for artefacts that must outlive a run and must never land inside a repository.

go-keyring 1 repo

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

go-macos 31 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 5 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.

go-gnulinux 2 repos

Linux's system interfaces in pure Go: hidraw and the authentication factors built on it β€” the Linux third of the platform layer, beside go-macos and go-mswin.

go-authn 18 repos

Who somebody is, and what proves it — a federation's worth of identity in pure Go with no cgo: one directory model over a database, a file or LDAP, and the LDAP server that publishes it; Kerberos both ways, issuing tickets from that directory and accepting them where gokrb5 will not build; SAML as a service provider in RENATER or eduGAIN, and an OIDC provider in front of such a federation; the relying-party and token-verification halves of OpenID Connect; SSH user certificates on the GÉANT/EuroHPC CA profile with revocation lists distributed signed and expiring, beside X.509 CRLs; ACME and on-disk sources for a daemon's own TLS certificate; and the factors a policy asks for — a security key over FIDO CTAP, TOTP, WireGuard keys — with the rule that decides whether enough of them answered.

go-aiquota 4 repos

A menu-bar application on the toolkit: AI usage quotas across several accounts, read through one go-plugin contract with a plugin per provider.

Graphics, images & media Β· 9 organisations

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

go-gfx 3 repos

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

go-images 7 repos

Image processing at scikit-image scope, plus the decoders the standard library does not have or does differently: Photoshop PSD composites, and forks of image/gif, image/jpeg and image/png that upsample four-component chroma the way libjpeg does and can report what a truncated stream did decode, so a half-arrived picture still shows. And one that is not processing at all: depth from a single photograph, and the second eye synthesised from it.

go-avkit 7 repos

An audio/video toolkit: MP4/ISO-BMFF, Matroska/WebM and MPEG-TS onto one model, demuxed and muxed β€” and under it the bitstreams themselves, H.264 and H.265 read down to clause 8.2's picture order counts, VP8 and VP9, over the primitives they share rather than once per codec: RBSP and Exp-Golomb bit reading, NAL framing, and the boolean arithmetic decoder VP8 and VP9 have in common.

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.

go-viture 2 repos

The VITURE headsets go-xrkit drives: the Beast and the Luma Ultra, spoken to directly with no vendor library.

go-xreal 1 repo

The XREAL Air family's USB packet protocol, the other half of what go-xrkit reads head orientation from.

go-videodsp 1 repo

Planar YUV to RGBA, the conversion every video decoder in the map ends with, kept in one place rather than once per codec.

Documents, typesetting & fonts Β· 11 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 15 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.

go-richdoc 10 repos

One rich-document model, and everything that reads or writes it. Both directions for the markup people edit β€” Markdown, LaTeX, reStructuredText β€” and one direction for the formats people are handed: HTML and XHTML, EPUB 2 and 3, Kindle MOBI, FictionBook 2, RFC 5322 mail with its MIME parts, and CSV, JSON, XML or plain text. A format is added by writing one reader against that model, not by writing a converter to each of the others.

go-ooxml 2 repos

Word, Excel and PowerPoint into the richdoc model: one container β€” the Open Packaging Conventions, kept separate because docx, xlsx and pptx all sit on it β€” and three vocabularies above it.

go-slides 2 repos

Marp-compatible slide decks, with Go template interpolation and slide kinds, and the VS Code extension that previews and exports them.

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 Β· 14 organisations

Getting the machine's width out of pure Go, on all six 64-bit targets β€” and the scientific stack built on top of it, measured against NumPy, SciPy and mpmath rather than against itself.

go-simd 23 repos

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

go-numerics 3 repos

The three pieces a numerical program reaches for after the array: special functions (gamma, beta, erf, Bessel, zeta), optimisation and root finding, and quadrature with ODE solvers including the stiff ones (Radau, BDF).

go-statistics 1 repo

Probability distributions, descriptive statistics and hypothesis tests, with accuracy measured against mpmath rather than against another Go implementation.

go-approx 2 repos

Interpolation, splines and smoothing, and polynomials in the Chebyshev, Legendre, Hermite and Laguerre bases β€” validated against SciPy and NumPy.

go-dsp 1 repo

Signal processing: filter design and filtering, spectral estimation, resampling and peak finding, following SciPy and MATLAB.

go-bignum 1 repo

Correctly rounded elementary functions and constants on math/big.Float, at any precision and in every rounding mode β€” what the accuracy of everything above is checked against.

go-plot 1 repo

Matplotlib-class figures for the stack above, to SVG, PNG and the screen, with real LaTeX in labels.

go-notebook 2 repos

Notebooks over that stack: a reactive compiled kernel that keeps its values and orders cells by what they use, and a browser playground that interprets the cells in WebAssembly while the libraries they call stay compiled.

go-scikit 2 repos

The parity programme for the stack as a whole β€” an inventory, a bibliography and a measured status against MATLAB and Mathematica β€” plus its Ruby bindings.

Compression, delta & erasure Β· 3 organisations

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

go-compressions 13 repos

The codecs and the halves of them that are missing elsewhere: LZFSE, LZ4 and DEFLATE wire-compatible with compress/flate both ways, a bzip2 encoder the standard library does not have, and readers for the formats it never grew β€” .Z, lzip, LZO1X β€” plus BLAKE3 and b3sum, and the CLIs that go with them. Correctness is judged against the thing itself: the official BLAKE3 vectors, compress/bzip2, and macOS's own libcompression asked what the bytes should be.

Storage, volumes & filesystems Β· 7 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 34 repos

One Filesystem interface, and everything that can sit on either side of it. Underneath, the formats: ext4, xfs, btrfs, zfs, apfs, ntfs, exfat, fat32, ffs, ufs, hfsplus, iso9660, squashfs, UEFI variables, a blkid-style prober β€” and archives read as filesystems rather than unpacked, cab, cpio, rar, rpm, 7z (which also writes), xar and WARC, with one extractor that sniffs the format from the bytes and follows multi-volume sets. Above it, the servers that export any of them β€” NFSv3, SMB2, SFTP, WebDAV and an S3 object API β€” so an image is mounted by the host instead of only read by a program. And between the two: a host directory confined with os.Root, a read-only filesystem made writable through a spool, and the same filesystem served across a connection.

go-fileshare 4 repos

The product go-filesystems' servers make possible: one configuration and one binary sharing a disk image over SMB, NFS, WebDAV and SFTP, with an OIDC portal, per-server tokens, a file explorer and an admin console across many servers.

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.

cloud-boot 11 repos

Booting the machine: a TamaGo UEFI payload, a pure-UEFI loader that finds the distro kernel at runtime, a unified kernel image, an init, kernels, ISOs, a virtio-net driver, SEV-SNP attestation, and Windows boot-manager test infrastructure. Two of its repositories are neither bootloader nor kernel but the TinyGo runtime files without which GOARCH=riscv64 and GOARCH=loong64 cannot produce a baremetal UEFI binary at all β€” the prerequisite, kept where it is needed rather than waited on upstream.

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 9 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.

The workshop Β· 2 organisations

Tools that act on the ecosystem rather than inside it: they read every repository, and the thing they protect is that a claim made about all of them is measured rather than remembered.

go-fleettools 9 repos

Sweeps across the whole map, each answering one question and refusing to answer it vaguely: which default branches are red, which modules declare a toolchain floor below the one a fix needs, which installed tools were built with an older compiler, which repositories decode an image or a ZIP entry with no ceiling, which landing page is the odd one out β€” plus the shared landing design itself, a mutation runner that proves a test can fail, and a checks-waiter that refuses to call an empty check list a pass.

go-agentsync 1 repo

Coordination for sessions that share one machine: leases on repositories so two of them do not edit the same tree, a per-repository mailbox, and a memory index written back and read again, because an entry that reports success and then vanishes is indistinguishable from one never written.

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 316 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 at <org>.github.io built on the shared landing kit, and versioned documentation at <org>.github.io/docs/ built with our Hextra fork β€” the same brand, derived from each logo, and a light/dark/system 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.

No number on this page is typed by hand.

Every count, every organisation and every description comes from go-desktop/catalog, which reads the live GitHub organisation list and reconciles it against a curated classification. An organisation that holds code and belongs to no family fails the build, so the map cannot quietly omit something that exists.

Read the generator β†’