Pylimitics

"Simplicity" rearranged


Home-cooked software

This article is about efforts to design and build “malleable software.” It’s an idea I think many people have had, fleetingly, and immediately dismissed because software seems to be so immutably brittle. Even a “flexible” program that can do many different things — emacs, for example, or photoshop (I guess) — can only do the things that have been programmed in advance. Try to do something completely different, without being a skilled programmer yourself, and it’s either impossible or the software breaks.

This is fundamentally different and less useful than physical tools in the real world. If you’re a woodworker and you need a chisel with a slightly different shape, you can grind your current chisel into the shape you need. A painter needing a smaller brush for a fine detail can adapt an existing brush to the task. And just consider the uses duct tape has been put to. The inventor (the “programmer”) of duct tape didn’t need to think of them all in advance. In fact, they didn’t have to think of any of those uses. Except maybe one.

A real-world tool or material with that property is “malleable,” something that software really isn’t. Even if you have the rarified skill to add a new capability to your software tools, it’s going to take a lot of time and effort, and because it’s software, you also need to do a lot of testing, because adding a function is liable to break some other function in unanticipated ways. Sure, if you pluck out half the fibers from your paintbrush, you might make the rest also fall out because they were held in place by squeezing them in a metal collar. That’s not the kind of breakage I’m talking about. If it was software you were dealing with, plucking out some fibers from a brush might make your paint catch fire or your canvas suddenly disappear.

There have been a very few programs that are (or were) somewhat malleable for non-programmers. Hypercard and Excel (or by extension, most spreadsheets, although Excel sees to be the one everybody knows about). Users of Hypercard could pretty easily change the way a “stack” worked and create their own. Excel users can modify spreadsheet tools and add functions. In both cases, though, you could argue that these examples aren’t fundamentally mallable software; they just have loads of customization options that are unusually (for software) pretty easy to use.

The Ink & Switch article begins “The original promise of personal computing was a new kind of clay—a malleable material that users could reshape at will. Instead, we got appliances: built far away, sealed, unchangeable. When your tools don’t work the way you need them to, you submit feedback and hope for the best. You’re forced to adapt your workflow to fit your software, when it should be the other way around.”

Ink & Switch is an independent research lab working on malleable software. The article’s last section describes some of their projects. One idea I found particularly interesting was “home-cooked meal” software. There’s nothing about software that requires that it be built for a mass market. That’s just a business model. After pointing out that “You don’t need to anticipate everyone’s needs in your design, just your community’s,” Robin Sloan came up with the analogy, saying “an app built for his family could be a ‘home-cooked meal’.” More about that here.

Maybe what we really need are ways to make developing software more like cooking. After all, some cooks go on to invent new and incredible dishes, but most of us pretty much stick to the basics and come up with things we and our friends and family like. That could be the story of software, too.



Leave a Reply

About Me

I’m Pete Harbeson, a writer located near Boston, Massachusetts. In addition to writing my own content, I’ve learned to translate for my loquacious and opinionated pup Chocolate. I shouldn’t be surprised, but she mostly speaks in doggerel. You can find her contributions tagged with Chocolatiana.