Microsoft got their monopoly with DOS, and later with Windows, by anticipating the market better than their competitors. They kept it by providing vendor lock-in.
The biggest threat to Microsoft in the ’90s was when Netscape announced that they were turning their browser into a platform for running client-server applications. Soon after the announcement, Microsoft did everything in their power to kill Netscape.
Sun was a similar threat with Java, although it was much more recently that fast CPUs and improvements to the Java runtime meant that it was actually possible to run Java applications at a reasonable speed. Again, Microsoft tried to kill the technology.
So where are we headed? The desktop PC is dying. We have already hit the peak of the desktop PC era. Companies such as Apple are selling more laptops than desktop PCs already, and the rest of the industry is not far behind.
Laptops, however, aren’t that different from desktop PCs in terms of software. When it comes to tablets, they might require better handwriting recognition and a user interface designed for single-button pointing devices (ever tried right-clicking with a pen?), but the software requirements are quite similar.
Laptops are being heavily outsold by even smaller machines, however. A lot of people who don’t even own a desktop PC or laptop are buying mobile phones and are upgrading them more often.
My current mobile, which is almost a year old now, has a 220MHz ARM-9 CPU, 32MB of RAM, and 1GB of Flash. A decade ago, my main machine was a 133MHz Pentium with 32MB of RAM and a 1GB hard disk. This was fast enough to run Windows NT 4.0 and a suite of applications.
Within a few years, a pocket device will have enough processing power and storage space for the average user’s computing needs. It will have enough bandwidth to delegate storage of very large files and complex computations to remote devices.
The main differences between desktop and mobile applications are these:
- The size of the UI
- The mobility of data
The size of the UI is quite misleading because it is possible to add things such as bluetooth keyboards and external displays quite easily. This means that a small UI is not such a defining feature as a variable-sized UI. Although a desktop application can assume that you’ll have relatively constant size, a mobile application has to be usable on anything from a one-inch screen to a wall-sized display.
The other feature is perhaps more important. I want to be able to get at my data anywhere, but I don’t want a passing thief to be able to walk off with it. For backup purposes, I want my data stored somewhere secure, but for convenience I want it stored close to me. These conditions provide some interesting challenges for people designing the next generation of operating systems.