An operating system is software which provides useful things for interfacing arbitrary software with hardware. For example:
- Providing a memory allocator
- Providing threads which manage how the CPU cores are used
- Interacting with network hardware, the motherboard's RTC, memory address mapping etc
- Scheduling arbitrary software to run simultaneously
- Providing a file system
- etc
> Why do we have modern operating systems? It’s not simply to “provide access to hardware resources”; plenty of embedded systems do that with runtimes that have no business calling themselves an “OS”. No, the core purpose of a modern operating system is to partition different applications off from each other, and carefully control how they can communicate.This gets at the core of it; i.e. you don't need anything in that list above to run software, but it's useful when you want third party software to run on the hardware, and multiple pieces of software co-existing with each other, and running without special hardware knowledge.
So, to this point, I agree with the article/author on this distinction. I think differences arise from how different people use computers, and perhaps I quibble with the title more than the contents. There is many software I run and write which I imagine will continue relatively unchanged (or changed incrementally) for decades. Broadly, GUI creative software, media consumption etc. CAD, EDA, structural biology/bioinformatics software, games, media consumption (video, text etc), IDEs. I suppose another highlight is that I never personally understood the appeal of terminal-based software that many software programmers love. (Not just software programmers: bioinformaticians love CLI-based workflows too, i.e. piping stdin/out around)
I would love Android/iPhone competition! Although I imagine the same obstacle of "How do I get my societal-connections functionality to work in a way where I'm not excluded" will continue to be a problem in the short term, at least. (Banking, communications, NFC payments etc)