Every PlainTxtOffice app stores its data as plain text. This post explains why that choice matters, what it costs, and what it means for the software we build.
What plain text is
A plain text file is a sequence of characters in a published encoding and nothing else — no hidden structure, no binary header, no embedded program. The two encodings that matter today are ASCII, standardized in 1969 (RFC 20), and UTF-8, which extends it to every writing system and is an IETF Internet Standard (RFC 3629). A file written in either can be opened by any text editor, any programming language, and any operating system, without asking permission from the company that made the software that wrote it.
Why it lasts
Institutions whose job is to keep documents readable for centuries have studied this question carefully. The Library of Congress evaluates digital formats against seven sustainability factors — disclosure, adoption, transparency, self-documentation, external dependencies, impact of patents, and technical protection mechanisms — and its Recommended Formats Statement lists plain text among the acceptable formats for textual works, with UTF-8 as the preferred character encoding. Plain text scores well on every factor: the specification is public, adoption is universal, the bytes are what they appear to be, and there are no patents or copy-protection layers between you and your data.
Contrast that with proprietary application formats. Their structure is defined by one vendor, may change between versions, and is readable only as long as software that understands it is still maintained and still runs on your machine. When that stops being true, the data is effectively gone even though the file is still on disk.
What lock-in costs you
Lock-in is rarely dramatic. It shows up as friction: you’d like to switch to a different app, but the export is incomplete. You want to search across years of notes, but each year is in a different tool. You’d like to write a script that reads your own data, but the format is undocumented. Each of these is a small tax on doing what you want with information you already own.
Plain text removes the tax. A directory of text files can be searched with tools built into every operating system, versioned with Git, synced with any file-sync service, backed up by copying, and read by a program you write in an afternoon. If PlainTxtOffice disappeared tomorrow, nothing you created with our apps would become unreadable.
Interoperability: the Unix lesson
None of this is a new idea. In 1978, Doug McIlroy — the inventor of the Unix pipe — summarized the design philosophy of Unix in the foreword to a special issue of the Bell System Technical Journal: make each program do one thing well, expect the output of every program to become the input to another program not yet written, and avoid binary input formats (McIlroy, Pinson & Tague, 1978). The compressed version that programmers still quote is: write programs that handle text streams, because that is a universal interface.
The same system went further and treated devices, terminals, and inter-process pipes as files, so that a single set of read-and-write operations worked on all of them (Ritchie & Thompson, Communications of the ACM, 1974). The result is a system in which small tools that have never heard of each other can be combined: grep searches your notes, sort orders your task list, diff shows what changed, and a shell script chains them together. Nearly fifty years later, Linux, macOS, and the developer tooling on Windows all still work this way — and the reason it still works is that the interface between the parts is text.
Applications that store data in plain text inherit this property. A notes app whose files are text can be searched by the same grep that searches source code, indexed by the same tools that index a wiki, and processed by any script in any language. An app whose data lives in an opaque database, by contrast, can only be combined with other software through whatever export or API its vendor chooses to provide. Plain text is the difference between a tool that participates in an ecosystem and one that is the ecosystem’s boundary.
The trade-off
Plain text gives up rich layout. It has no native concept of fonts, page geometry, or embedded images, and that limitation is real. Some documents exist precisely to fix appearance: a signed contract, a typeset paper, a form that must look identical on every screen. PDF handles that job, and it does it as an open, published standard (ISO 32000-2). That is why our first app, Open PDF, is a viewer rather than an editor: the plain-text philosophy is about where your working data lives, not a refusal to read the fixed-layout documents the rest of the world sends you.
What this means for PlainTxtOffice apps
Three commitments follow from the above:
- Anything you create in a PlainTxtOffice app is stored as UTF-8 text in a documented layout, on your device.
- You never need our software to read your own files.
- The source code is published under the GNU AGPL-3.0, so the format is verifiable, not just described.
Software comes and goes. Text stays readable. We would rather build on the thing that stays.
Sources
- Cerf, V. (1969). ASCII format for Network Interchange. RFC 20, Internet Engineering Task Force. https://www.rfc-editor.org/rfc/rfc20
- Yergeau, F. (2003). UTF-8, a transformation format of ISO 10646. RFC 3629 / STD 63, Internet Engineering Task Force. https://www.rfc-editor.org/rfc/rfc3629
- Library of Congress. Recommended Formats Statement (Textual Works – Digital; sustainability factors). https://www.loc.gov/preservation/resources/rfs/
- McIlroy, M. D., Pinson, E. N., & Tague, B. A. (1978). “UNIX Time-Sharing System: Foreword.” The Bell System Technical Journal, 57(6), 1899–1904. https://archive.org/details/bstj57-6-1899
- Ritchie, D. M., & Thompson, K. (1974). “The UNIX Time-Sharing System.” Communications of the ACM, 17(7), 365–375. https://doi.org/10.1145/361011.361061
- Salus, P. H. (1994). A Quarter Century of UNIX. Addison-Wesley. (Source of the three-sentence summary of McIlroy’s principles.)
- ISO 32000-2:2020. Document management — Portable document format — Part 2: PDF 2.0. International Organization for Standardization. https://www.iso.org/standard/75839.html