Product design · 2024
a text editor that selects words, not lines
Onword is a writing app I specified and did not build. Every editor treats the line as the smallest thing you can grab. This one treats the word as the block, and that one change rewrites every key on the keyboard.
01 · The idea
the block is the whole argument
As you type, each finished word becomes an object. Not a range of characters that happens to have spaces either side of it, an object, with the punctuation and the space that belong to it attached. Select one and you get the word. Delete one and the space goes with it. Drag one and it lands somewhere else whole.
Those are the same three list items under both models. The difference looks small in a picture and it is the entire product.
02 · The keyboard
every modifier means the opposite thing
If the word is the default unit, then the shortcuts everyone already knows have to invert. In a normal editor Option jumps you over a word. Here the word is what you already have, so Option is what reaches underneath it to the letters. The spec sets both columns against each other so the inversion is deliberate rather than accidental.
| Key | Every other editor | Onword |
|---|---|---|
| Shift + arrow | extends by character | extends by word block |
| Opt + arrow | skips a word | steps into the characters |
| Opt + Shift | selects by word | selects by character |
| Cmd + Shift + arrow | selects the line | selects the line |
| Delete | deletes a character | deletes the word block and its space |
| Opt + Delete | deletes a word | deletes a character |
| Cmd + Delete | deletes the line | deletes the line |
The line row is identical on purpose. One rung of the hierarchy has to stay where people left it, or nothing about the app feels learnable.
The block hierarchy under all of this goes further down than words: lines, block quotes, sentences, quotes inside sentences, compound words, single words, then fragments — syllables, and the character collections that make up contractions like ’s and n’t.
03 · Autocorrect
it corrects to how you write, not to a dictionary
A word-block editor only works if you almost never reach for Delete, so the autocorrect has to carry more weight than usual. The spec has it learn which stage of writing you are in — notes, brainstorming, outlining, drafting, revising — and correct to how you write at that stage instead of to a single standard.
The same sentence therefore lands three different ways. In notes it stays as you typed it, lowercase and fast. In a draft it gets its capitals and its apostrophes. In a revision the album title picks up its italics. None of those is more correct than the others, they are just different stages, and the app tags the document with the one it thinks you are in.
It also has to know when an odd word is deliberate. A sentence that starts a proper noun without an article is a proper noun, so a brand written in lowercase survives, while the same letters describing an actual object get corrected. Corrections show in gray until the sentence ends, and commit only when punctuation or Enter arrives.
What it will not do is as specified as what it will: no red underline anywhere, and no correction committed mid-sentence. Both exist to stop the app interrupting the sentence you are in the middle of, which is the thing it is for.
04 · The mark
a toggle that is also a play head
The identity came out of the same idea. The O is a toggle switch, and the o in “word” is a play head, so the mark reads as on and as go at the same time. The two shapes are the same two shapes throughout, at different settings.
05 · What it taught me
i wrote the spec and never shipped it
I never built this. It is here because the thinking is the artifact: one decision about what a block is, followed all the way down into the keyboard, the autocorrect and the mark. That is the same move I make now on things that do ship.