Today, most people are used to two forms of software programs – programs that run on the computer in front of you, and client-server programs, that also run on the computer in front of you, but talk to another program (usually) running on another computer.
Recent advances in many varied technologies, including XML, greater availability of Internet bandwidth, and the ever-increasing supply of quality open-source software from places like SourceForge and the Mozilla Foundation are slowly causing a profound change in the assumptions of software design.
The software of tomorrow will most likely be based on the combined effort of code running on many different machines. This is not like the grid computing architecture I blogged about on July 13th. The difference is that rather than many computers doing the same calculation on a large collection of data, each computer in distributed software applications provides a specific function that integrates into the larger application.
The foundation for this revolution is web services, a frequent subject of discussion at Heal Your Church Web Site. In the most basic sense of the term, a web service is a program on a web server that takes some input, processes it, and outputs it – usually in SOAP, a XML language designed to allow for remote procedure calls (RPCs) through HTTP, the protocol used by all web servers.
Today, web services are only used occasionally. Soon, however, more and more functionality will be offloaded from the local computer and handled by services across the web. Such services might range from keeping track of contacts, to formatting text for printing, to providing a common layout.
The beauty of this system is flexibility and durability:
- If you don’t like the way your software looks, you just swap out the web service responsible for the user interface.
- If you need data that isn’t directly available, you add code (that you write or that’s been contributed on the ‘net) that extracts the report from existing data.
- If you want to use an incompatible web service, you use a XSLT stylesheet to reformat the service’s output into something your existing software supports.
- Because your data is all stored on web servers and not your local PC, you can use your files anywhere you find a web browser.
Because all the code runs on other, managed computers, you get increased reliability in your software. If something has a bug, you’ll get the update as soon as it’s available because you don’t have to download or upgrade your software – it’s handled by the web service. And if you don’t trust your personal information with a web service provider for some reason, you just plug your software into somebody you do trust – problem solved.
The user interface of a distributed program such as this would most likely be a web browser. A typical user would open his or her web browser, see a list of tasks to accomplish, and manipulate stored information – all in the browser. This frightened Microsoft so much that back in 1995, they aggressively marketed Internet Explorer, for free, as a direct competitor. From a DOJ brief (PDF):
…because Navigator exposes a set (albeit a limited one) of APIs, it can serve as a platform for other software used by consumers. A browser product is particularly well positioned to serve as a platform for network-centric applications that run in association with Web pages. Finally, Navigator has been ported to more than fifteen different operating systems. Thus, if a developer writes an application that relies solely on the APIs exposed by Navigator, that application will, without any porting, run on many different operating systems.
It’s also what prompted Microsoft to develop .NET, which is basically a set of proprietary web services to handle stuff like messaging, calendars, and storage using Microsoft products.
How long will the future distributed application take to fully mature? I would say that within 15 years (possibly sooner), distributed applications will be used by most people on a day-to-day basis. I think that overall, this is a good thing – while there will still be jokers that will try to do things like rent you software, many more will open-source their code, which will make it impossible for any one company to keep computer software in a stranglehold. This is good for everybody.