Peter Winston

While intuitively the expression One-Thing App makes sense, in reality it's not definable, in an actually useful way.

I love apps that do only one thing but do it well.

How would you even define one thing? It's kind of how philosophers of old hypothesised that there are particles so small which cannot be divided further, and they called them atoms (a tom, not divisible, or something along those lines).

Now, I'm not sure if by saying "app" he means a program specifically targeted at end users that solves some tangible problems such as sending an email, taking a photo, taking a note, etc, or if he means a program in general.

Either way, the thing he describes is what's usually called "the unix philosophy", making programs which do one thing and do them well.

Now, why doesn't the unix philosophy work in the present?

Because we generally abandoned the concept of "piping", which was crucial to a unix system when it was originally invented.

Using a unix today, such as macOS or some kind of Linux, the typical user makes little to no use of pipes (using the output of one program as an input to another, perhaps even multiple times in one command). And developers use integrated development environments, which are practically mega apps. (On the other end of the spectrum, take the Acme text editor, described by its creator as an INTEGRATING development environment.)

One thing programs practically don't exist today, in the ideal sense. A program must have some excess functionality to cover 90% of cases 90% of users have.

When my girlfriend asked me "why won't you get an iPhone, they're so much better than android phones?" I told her it's because while I can install firefox on iphone, I can't install an adblocker on it and told her that it's a stupid thing to not include as a feature in a phone. She concluded that "the problem you mentioned is probably only shared by a tiny number of people using phones" and she's right. I in fact know not of a single person from all of my friends who access the internet on their phone with an adblocker.

And there it is, an app which does one thing and does it well, a browser for browsing the web, great. I accept that I can't install an adblocker on it, so I need an app that does one thing and does it well, an adblocker. There aren't any good ones. Well, I'll write one myself I guess, or just port it somehow to work on my phone. I'm getting tripped by all of the permission crap from android and ios? Well, now you lost me.

The idea of the one thing app without piping is ludicrous without piping, it's why apps with a lot of extra and -- for some people -- useless functions.

Piping on phones (and I'd say on all computers in general) exists at least in some forms these days; when I want to archive some files on my phone and send them via email, I select the files, share it to the archiving program, then share it to the email client, and send it. Here we see the share functionality not used simply for sharing with people, but with other programs on the device.

It's just how program design has evolved over the last few decades; the original unix assumed you would read the documentation on how to use the operating system. Then came the graphical shell on macintosh and windows computers (I'm not criticising the graphical shell, just to clarify), and opened the door for the average user to start using a computer without any prior knowledge. Learning how to pipe without reading the documentation would be a herculean task. Even the typical technical linux user who frequently touches the command line barely if ever uses pipes.

In the end, look at web browsers. What is a web browser? Is it really something for browsing the web? For viewing html documents with the added benefit of hyperlink magic?

No, a web browser is a bona fide operating system, capable of running video players, doing video conferencing, sending emails, of editing documents, playing video games, playing music, etc. etc. etc. For all of the above you needed actual computer programs which performed each of those functions.

I do believe Steve Jobs and the guys at apple had a great idea when they unveiled the first iphone, the idea of webapps, not native apps on the phone itself. But it was too early for that. Look at the relatively recent development of WebAssembly. Finally it will make the web browser a nearly full-fledged operating system, running complex programs at near-native speeds.

So we have the app that does one thing and does it well: it's the web browser, and the thing it does is practically everything.

A link to the post which this one is a reply to: https://matanabudy.com/one-thing-apps/