June 30th, 2020

From local software to web applications and back again

One thing I don't understand is why so many companies and organizations are now producing apps which are specific to particular mobile operating systems. In the first few years of the 21st century, there was a movement to get away from writing for particular hardware or software platforms, because software written for a particular platform isn't portable and cannot easily run on other platforms without being rewritten or emulated. The idea was that in the future, most software would run through a web browser, and thus coding locally-run software was a thing of the past. This has led to a significant decrease in the amount of software written for computer operating systems like Windows or MacOS, because unless a program is quite large and requires the extra hardware horsepower which comes from running locally, it can typically run more conveniently, portably, and securely through a website instead of a local executable.

But now that smartphones are replacing computers, people seem to be changing their minds about this and deciding to write apps for Android and iOS. I don't really understand the motivations for doing this; I can only speculate that there are 2 main reasons for this:

1. Because smartphone screens are so small, websites would not display very readably on them; if you made a website which was then viewed on a smartphone, the features on the site would be so small that they wouldn't display properly on such a tiny screen.

2. Because smartphones are not always connected to the Internet, a web-based application running on a smartphone would stop working every time the user's mobile data connection broke. While it's true that most smartphone users have mobile data plans, reception is not always reliable for people who are travelling, and they don't want their ability to use apps to be dependent on a mobile data connection, so having the code run locally ensures that the program will keep working even if the data signal drops out.

These are valid reasons to make locally-run software, but when one considers that developers turned away from writing local software for computers, which today have vast quantities of resources available, because they were too hard to code for and decided instead to write for smartphones which are much smaller in every way--slower CPUs, smaller memory, smaller storage, smaller screens, and fewer input choices--it seems like a ridiculous comedy of errors. I imagine a conversation like this:

Normal person: Hey, you can write software for new computers which offer you literally billions of bits of RAM and storage space to use, big screens that are sharp and easy to read, and full-size keyboards with a hundred keys to make use of.
Software developer: No, that's too hard. I'll write for the web instead, which adds an extra layer of interpretation that makes everything run much slower, consumes more memory, and reduces the possibility to communicate with the hardware.
Normal person: Oh well, at least that means your software will be portable then. Okay, what software are you writing for the web?
Software developer: Oh, I changed my mind and I'm coding for smartphones now, because their screens are so tiny and they have no input devices, so they're the ideal platform for my software.

It's like people saying "We have big, paved streets to drive on, but that's too complicated for us, so we're going to throw a few shovelfuls of dirt on the ground and use that as a dirt road to drive on instead, because that's the way of the future". People really will inevitably end up choosing the worst and stupidest possible option.