Suppose for a moment that Slack unveiled a new feature that let you call multiple people across different workspaces. It would be a whole new capability for the software, something that would make Slack the application more powerful than it was prior to that feature’s introduction.

Now suppose Slack rolled out a feature that let you change the color of the DM notification in the taskbar to something other than red. This wouldn’t add new dimensions or capabilities to the software - Slack with blue notifications isn’t really any more “powerful” than Slack with red notifications. What it would do instead is give users more control over Slack, something that would make users more powerful than they were prior to that feature’s introduction.

I’m going define a couple of squishy, artificially distinct terms for these two kinds of features:

Capability - something that makes software more “powerful”, usually in the form of a new task it can complete or action it can take.

Control - something that makes the user more “powerful”, usually in the form of giving them more agency in how they interact with the software.

Software Power Struggles

Anecdotally, software has gravitated towards Capability over the last decade or so. Take a look at the changelogs for apps on your phone. As of writing, here’s a random selection of mine:

Paypal: Can now buy/hold/sell Bitcoin and other crypto in the US.

Protonmail: Removed donation functionality to comply with app store policy.

Signal: Can now send 4K pictures.

All of these are Capabilities - updates around what the app can (or can’t) do. This focus is everywhere, not just phone apps. That’s not to say that there are no new Controls being added, but they aren’t the focus. This makes sense - on paper, Capabilities are what differentiates software, and Control is assumed. Nobody talks about Signal’s UX around handling contacts - it’s a messaging app, of course it will have good contact handling1 - instead, they talk about how it has E2E Encryption or can do voice calls or can send 4K pictures.

I think this is a bit of a shame. There’s a certain joy to controlling software - getting notifications for just the things you care about, tailoring a workflow to your specific needs, and the general sense of software working for you, rather than you being subject to its whims.

Who Cares?

It’s easy to write Control off as a concern for “power users”, and to dismiss Controls with refrains like “users don’t know what they want” or the more shocking (but equally common) “users are wrong and can’t be trusted”, but I don’t think this is true. The heyday of Control features was early on in Web 2.0, and users loved it. People wanted to customize the CSS of their MySpace profiles, to change the color scheme of Twitter, to add forum flairs, to customize the widgets on their iGoogle pages.

While I think some people would dismiss these examples as the awkward, cringy, teenage years of inelegant software design, I think that misses the point: When people value a tool, they want to tailor it to their needs and preferences. To bring this full circle, my thesis is:

People start using software because of the Capabilities it offers. People keep using software because of the Controls it offers.

That’s not universally true, mind you, but I think it applies more often than not. Both kinds of feature are obviously necessary, so its not as if there’s some mutual exclusion, either; but I have noticed an imbalance, and I think it’s a shame. People are losing trust and faith in software more and more: old tools break with OS updates, services once thought to be trustworthy are siphoning data and using it to do harm, buggy apps and hardware and platforms are slowing and crashing and breaking, and we’re all more and more aware of it. It’d be nice to see more Control in software, if only to rebuild some of that lost goodwill.

  1. I have many thoughts on Signal’s contact handling and UX overall, but that’s a topic for another day.