Before the first pass of the shuttle
Before anything is woven, there is waiting. The warp threads are strung first, long and parallel and pulled tight, and for a while it looks like nothing. Just lines, held in tension, in a room that is very quiet.
I keep coming back to that image on my walks. The cloth isn’t there yet, but every decision that will shape it has already been made. How wide it can be. How dense. Where it will hold and where it will give.
That is what a design system feels like to me now, after twenty-six years of watching interfaces get made and unmade. The warp comes first, and most of the work is invisible.
What the warp holds
Tokens are warp. A spacing scale, a type ramp, a set of color roles. None of them is a thing anyone looks at. They are the things everything else is stretched across.
When I think about what those threads are actually doing, it comes down to a short list:
- They carry tension. A decision made once, held steady, so it doesn’t have to be made again at every corner of the product.
- They set the grain. The cloth runs in a direction because the warp does.
- They stay out of the way. When they’re right, nobody mentions them.
Too slack, and the whole thing sags into one-off exceptions. Too tight, and the first real surprise snaps a thread. I’ve seen both, and I’ve made both.
The weft is where the hands are
Then the shuttle goes through. Over, under, over, under. This is the weft, and it’s the part that feels like making.
Components are weft. A button, a field, a card, each one a pass across the threads, each one taking its structure from what’s underneath. A button doesn’t decide how much space it needs. It borrows that from the warp and carries it across.
I used to think of components as the system. I don’t anymore. A pile of weft with nothing under it isn’t cloth. It’s a tangle that happens to be colorful.
Pattern is what you see from across the room
Step back far enough and neither thread matters. What you see is the pattern, the repeat, the way a check or a twill reads as one thing.
Patterns in a system work the same way. A form, a settings page, an empty state. Nobody sets out to design them from scratch each time, and nobody should. They emerge when the same weft crosses the same warp often enough that the eye starts to trust it.
The trust is the point. A person using the product can’t name the tokens, but they can feel when the cloth is even.
Twenty-six years of rewoven cloth
I’ve watched this fabric get taken apart and put back together more times than I can count. Layouts held up by tables and spacer images. Then floats and clearfixes, then grids that finally admitted what we’d been pretending. Sprites, then icon fonts, then SVG. Fixed widths, then fluid, then responsive, then something that doesn’t have a clean name yet.
Each time, it felt like the end of the old way. Each time, what survived was never the technique. It was whatever had been structural: the intent under the surface, the decisions that outlasted the tools.
Selvedge is the word I think of. The finished edge of a cloth, woven to keep the whole thing from unraveling. The best systems I’ve worked in had one, a few firm constraints at the boundary that let everything inside stay loose and alive.
A faster shuttle
These days the weft moves quickly. With AI-assisted development, a component can appear in the time it takes to hum a few bars of a song. It’s remarkable, and I use it daily.
But a fast shuttle only makes the warp more important. If the threads underneath are vague, speed just produces a lot of cloth that doesn’t hold. If they’re clear, the same speed feels like freedom.
I notice I’m spending more of my attention down there now, in the quiet part, before the weaving. Naming things carefully. Deciding what’s allowed to flex.
Mending
One more thing the loom knows that we tend to forget: cloth gets mended. A worn patch gets darned, and a thread gets pulled through by hand. The repair stays visible if you look, and it’s part of the garment’s story.
Design systems don’t get finished either. They get tended. A deprecated component, a token renamed, a pattern quietly retired. Slow work, mostly done late in the day with something low and unhurried on the speakers.
Still on the shuttle
I don’t have a tidy lesson here. I have a feeling that settles when I walk, that the structure I trust most is the part nobody sees.
And a question I haven’t put down: if the weft can now be made almost as fast as I can think of it, what is the warp for? What do I want held in tension, years from now, when I’m not the one standing at the frame?
The thread is still in my hand. I’m in no hurry to pass it through.

Leave a Reply