Modularity and IntegrationIn the world of market competition, big software companies think more about their income than about user convenience. As a result, new features are incorporated in a rush, without any real need, only to prevent the competitors from seizing the niche. Commercial software becomes cumbrous and heavy, and, quite often, users only know about a few features, ignoring the rest of software's capabilities. One could object that complex tasks require as complex programs, and the diversity of possible applications explains the heaviness of modern software. For instance, one user will exploit MS Office as an enhanced typewriter, while another user will need it as presentation tool, and yet another needs its Web oriented features. Common users will hardly ever use VBA (or other similar) programming, while it is an absolute necessity for application developers. The problem is that any integrated environment is only integrated within itself, and different environments are poorly compatible. This is a consequence of the market competition, since the companies are not interested in sharing their proprietary technologies and making their products 100% compatible. However, the objective necessity of unification is pushing them towards common protocols, open data formats and source texts. What would be really wonderful is an environment that could uniformly adopt any special applications, regardless of make, so that the users could install and uninstall modules any time they need, dynamically configuring the system. This is like the smart menus in Windows 2000, which only displays the recently used items, expanding the rest on demand. Well, the elements of such an approach can be found in many existing environments, especially the Unix family. With more powerful computers, one can install several virtual machines connected to a local network and execute all sorts of programs accessing data throughout the system. However, this is an eclectic approach far from real flexibility. To put it bluntly, I need that feature from Windows, that feature from Linux, that feature from VAX VMS, and that from AS/400, and that from Macintosh. Can I install only the features I need? No, I can't. If each component of each operating system (or other software) were separable from the rest and seamlessly combinable with the other modules, everybody could have the system of one's dreams, implementing only required functionality without any redundancy. Of course, that would require an entirely new approach in software development. Functionality should be separated from implementation, and when an independent group of users suggests a new feature, the companies design a number of modules to incorporate it in all kinds of environment. Yes, this is like the implementation of HTML or Java standards in different browsers, to forget about all the incompatibilities. But a much more universal application of this approach is needed, including hardware design as well. Data formats, protocols, composition principles should be common and non-proprietary, while nobody is interested in the inside of a particular implementation, provided it works as it should. In this case, one can take networking by one company, combine it with email from another, and add a collaboration platform from nobody knows where. Absolute modularity, the ideal of computer.
[Computers]
|