Certain software companies have been suffering from the advance of modularity in software design. The main one, to date, has been Microsoft with its Windows software platform. In the mid-nineties, Microsoft decided to integrate a number of Internet components tightly with its operating systems offering. The two most critical ones of those components have been a web server (IIS) and a web browser (Internet Explorer). Leaving aside discussions relating to the antitrust issues this kind of integration has raised, the integration of those tools with the operating system have left openings for alternative approaches that were more modular.
On the server end, IIS has been the subject of many attacks by hackers. Because it is hooked deeply into the operating system, an attack against the web server can have an impact that goes much further that the web front-end. In most cases, the attacks succeeded not only in taking machines down but also turning them into zombie armies that could then turn around and attack other servers. In 2001, the Code Red virus successfully infected hundreds of thousands of machines in less than 24 hours. Subsequent viruses built on this approach and have been responsible for some of the largest attacks against Internet systems to date. The news that the system had built in back-doors only furthered the issue, presenting an opening for other software developers.
The open source movement exploited this by presenting an alternative with Linux and Apache. The Linux operating system, which is modular by design, can be fined tuned and services can be included or not depending on how one wants to shape their system. A web server like Apache can be included in the OS but doesn’t have to be. Because of this modular approach, Apache (which runs on a number of different operating systems) has gained the high ground in terms of marketshare. The Apache project focused on delivering modular components, which represent a tool-set for most web-based application.
The same is true on the desktop end. While Microsoft decided to tightly integrate its web browser with the operating system, making it easier to create lock-in for that platform, the approach backfired when hackers developed viruses and trojans that exploited flaws in the browser software to get to the operating system. It was only a matter of time before users started getting annoyed by the number of attacks and looking at alternative. They found one in the Mozilla foundation, a group of open source developers who created a modular Internet product suite. Because the Mozilla products were built in a modular fashion, the first attack was responded to in less than a week. This quick turnaround in fixing the bug was due to the way the code is implemented: because it is modular, it was much easier to fix and because it does not communicate deeply with the operating system, it represents less of a risk than Internet Explorer and has been recommended by security experts like CERT.
While the browser and web server represent applications that are bundled with an operating system, some people are looking to go much further by modularizing the operating system itself. When broken down to its smaller components, an operating system can almost become device-independent, providing interactions between different components to create a whole that is greater than the sum of its part. Future operating systems will be able to evolve across multiple devices, whether they are computers, mobile phones, televisions, or other devices we have not imagined yet.
This kind of distributed system already exists but in a limited fashion. Some organizations have used Linux to create supercomputers by connecting multiple small machines. The power given to those allows to greatly reduce the overall cost of building very large machines. Similarly, one of the largest web-based application, Google, uses tens of thousands of machines which interact with each other as a single system.
The lesson in this approach is that a modular approach always wins over an integrated one because it reduces costs and increases scalability, thus ensuring greater flexibility. While one can never predict changing markets and future developments, a modular approach is always more flexible and easier to evolve over time.