The nature of software has changed a lot over the years. When I was in college, I wrote computer programs that were stored on cardboard punchcards. When everyone started to get PCs on their desks, innovative companies started to write general-purpose software like word processing programs and spreadsheets that you could buy in a little shrink-wrapped box, and a whole new industry was born.
The nature of software continues to evolve. The latest move, of course, is towards software being delivered as a service, across the Internet, and ultimately, this will become the delivery mechanism of choice - and the vast majority of software will no longer run locally. A bold statement, but one many industry luminaries, including Sun's Scott "The network is the computer" McNealy, have been predicting for years. And for years, the standard response has been, "Yeah, right." But it seems the time has come. The Internet infrastructure has been developed to the point where it is fast and secure, web browsers have become pervasive and useful as a standard client, and in the current tight economy, companies (including software developers) are looking for cheaper ways to create and deliver their goods. Already, much of today's e-business is conducted over applications that are delivered to web clients; it's only a short leap to run standard productivity applications on the same mechanism.
From a macro perspective, it makes sense. It costs an enormous amount of money for a software vendor to create, maintain, and upgrade software for the dozens of different platforms they must support. Software, when delivered as a service, bypasses this bottleneck, since the only thing they have to support is a web browser. Another advantage - traditional software has an upgrade cycle, whereby versions are released periodically, and customers must wait until the next release to see a new feature, a fix, or a patch incorporated. In the newer "software as services" model, upgrades are ongoing.
We're differentiating here between what's called "software as services," and standard ASPs. An ASP delivers software to clients that is usually created by a third party, and is developed with the usual traditional cycle of periodic upgrades. The software delivered by the ASP is often the same software as the client could buy, install, and maintain in-house, the advantage the ASP offers is the convenience of outsourced management. Software-as-services, on the other hand, adds the advantage of continuous upgrades. The ASP hosts traditional software that was meant to be used for a single client, and a separate instance of the application is required for each client. Software-as-services, which is multi-tenant capable, that is, a single iteration can service multiple clients. Either way, it's an inevitable change from the traditional model of discrete software packages, installed and maintained in-house. Ultimately, it's like electric utilities. It's of course impractical for everyone to try to generate their own power, so instead, a single utility company creates a power plant and an infrastructure to deliver it, taking the capital costs on themselves, and charging each customer a monthly fee, thereby dividing the capital costs among millions of people. Ultimately, software will be delivered in the same manner, with the capital costs of upgrading, maintaining, developing, and delivering software divided among all users. It's the ultimate efficiency and a natural extension of e-business.