Skip to content
Genom
genom.dev

A file format is a genome

Everything a document is — its words, its structure, the reason a line broke where it did — is already written in its bytes. Most tools throw that away and hand back a picture of it. Everything under this name reads the original instead, and that is what the name is for.

The rule

Three things anything here has to be true of

Not a mission statement. These are the constraints that decided how the code is laid out, and the reason a document opens without a server behind it.

The original, not a conversion

A converter decides what matters before the application gets a say, and it decides once, for everybody. Reading the file itself leaves that decision where it belongs — with the code that knows what the document is for.

Structure is the point

Text without the table it sat in, the heading above it or the slide it was on is a smaller fact than the file contained. What comes out of here keeps the shape it was found in, whatever it is later turned into.

It runs where the data already is

In the tab, in a worker, on a server, inside a network with no way out. A service in the middle is a copy of your documents in the middle, and there is no version of that which is free.

Today

The document stack

10 packages that read Word, Excel, PowerPoint and PDF — the modern formats, the binary ones of the nineties, and a PDF object model written from scratch — and draw them in a browser tab. It is what the rest of genom.dev is about, because it is currently all of it.

  • Word .docx, Excel .xlsx, PowerPoint .pptx, Word 97-2003 .doc, Excel 97-2003 .xls, PowerPoint 97-2003 .ppt, PDF .pdf — read from the bytes, laid out by measuring rather than guessing.
  • Text that is selectable and searchable because it is text, not a picture of text — and a thousand-page document that opens as fast as a five-page one.
  • 10 packages with no runtime dependencies, each usable on its own or through one umbrella install.
  • No network requests and no telemetry, which is checkable rather than promised: open a file in the viewer and watch the network tab.
Every packageOpen a file
Room in the name

Why an umbrella and not a product name

A format is a format. The work of reading one — the byte source, the container, the addressing, the rule that structure has to survive — barely changes when the format does, and a name tied to documents would have had to be abandoned the first time something that is not a document turned up.

One thing is under it
genom.dev is a name with room in it, and today most of that room is empty: the document stack on this site is all of it. That is written here so the name makes sense, not to suggest a catalogue that does not exist. Anything else that ends up under it will appear as a released version, not as an announcement.
How it is built

A narrow surface, measured continuously

The scope is kept deliberately small, nothing is announced before it works, and the limitations are published on this site rather than left to be discovered in production.

What that buys you

Every rendering decision is measured against Word, Excel and PowerPoint themselves, over a corpus of third-party documents, on every change. A regression is caught by a number rather than by a bug report.

What it costs you

Fewer formats than a larger catalogue would offer, and no roadmap. What is finished is on this site; what is not is left undescribed, because a plan stated in public becomes a commitment, and commitments here are made only where they can be kept.

What it doesHow it is paid for