This could be the year that new languages, such as Java, and modular OSes, such as Apple's newly acquired OpenStep break the endless cycle of upgrades that has pushed the total cost of PC ownership through the roof. From 1994 until now, the processing requirements of a Windows desktop with Microsoft Office have escalated from a 386 CPU with 4Mbof RAM to a 486 CPU with 16Mb of RAM.
This rapid growth in processing needs has provided the fuel for the engine of the Wintel monopoly. Each generation of applications and OS software pushes IS sites to upgrade their PC desktops, making Microsoft and Intel two of the most profitable companies anywhere.
Complicating this scenario are groupware and client/server applications such as Lotus Notes and SAP's R/3, which, when deployed with Microsoft Office, make the minimum requirement for desktops a Pentium PC with 16M bytes of memory and 520M bytes of storage.
But there is hope that new, modular OSes could radically alter the computing landscape.
"Today OSes are written mostly in C, C++, and assembler," says Stan Dolberg, an analyst with Forrester Research, in Cambridge, Massachusetts. "Java is a great language for writing an OS because it could be user-extended."
And it was the extensible, object-oriented architecture of NextStep that convinced Apple to buy Next.
"NextStep is the only pure object-oriented operating system commercially available today," says Mike Kennedy, an analyst with the Meta Group, in Stamford, Connecticut. "That object-oriented quality is what Apple wants most from Next."
Developers are also interested in a more modular approach to OSes.
"Java takes a giant step in the direction of decentralizing the allocation of computer resources," says Larry Dickson, an algorithm developer for Super Computing Surfaces, in Santee, California. Dickson has developed several applications in TJOccam, his derivative of the Occam language. Occam, developed by Inmos, a subsidiary of SGS Thompson in Bristol, England, is a static memory-allocation language that treats software modules as if they were hardware, Dickson says.
Windows 95, on the other hand, is a "plum pudding" approach to programming: All the applications are plums floating in the environment, which is the OS.
Microsoft admits that Win95 is not a modular OS but is quick to differentiate it from Windows NT.
"Modularity was a principal design goal of NT," says Richard Tong, vice president of product marketing for personal and business systems at Microsoft, in Redmond, Washington.
Ideally a modular OS would support multiple GUIs from different vendors, allowing users to choose the "look and feel" they prefer.
Tong says NT will support this kind of variety, but the reality is that most developers choose the Win95 interface for its richness.
But Microsoft's "richness" is bloatware to developers such as Dickson. Even so, he does not hold Microsoft completely responsible. The plum pudding OS, Dickson explains, did not begin with Windows but is more deeply rooted in the stack-oriented computing model mandated by languages such as C and C++. Analysts and developers agree that a Java OS would be more modular and extensible, but won't necessarily be smaller.
"Future OSes are going to do more, not less," Dolberg says.
In a modular, extensible environment, however, the line between OS and application will blur.
"What is and is not part of the OS becomes partly a question of semantics," Dolberg says.
Kim Polese, former Java product manager at Sun and now CEO of Marimba, in Palo Alto, California, also thinks Java offers a better way.
"Java gives you the ability to build an application that can be distributed in chunks and morphed by adding code on the fly," Polese says. "The tree-structure dependencies of C and C++ are not well-suited to this. Java is not a tree structure but more of a Lego block model of software development."
This component-based architecture would let developers write a thin OS in Java, splitting many of the functions of current OSes off as separate modules.
"The GUI and device drivers, for example, would be natural candidates for modules that can be seamlessly linked into a Java OS," Polese says. "Extensibility is what we are talking about here. Trying to write an application in C or C++ that can be easily changed without having to recompile the whole thing becomes a combinatorial nightmare."
Dickson also advocates a flatter model that would allow developers and users to treat computer code as components in a stereo system.
"I develop on DOS because it is the system you can most easily ignore," Dickson says. "With Windows you have essentially one program that takes over functions that used to be handled by applications."
Other developers, primarily concerned with the more mundane problems of supporting existing applications in the increasingly complex, highly centralised Windows environment, are looking to the past rather than the future for relief.
"In the last few years I've seen a tremendous increase in complexity," says James M. May, principal at J.M. May, a computerized accounting and office-automation company in Roanoke, Virginia. "Only the companies with the deeper pockets can follow through and implement. Windows 95 is something of a Trojan horse, and there are problems that surface pretty quick. The small-business owner can't afford these environmental problems."
May says he could support his clients much better when the underlying OS was simpler.
"Accountants are seeing their careers taken hostage by the technology," May says. "We had a product 10 years ago [DOS] that did what we needed to do. With Windows it is pretty, but we can't get the job done."
A Java OS or NextStep may not be capable of delivering in the new distributed environment, but at least they give some hope for a more component-based approach to computing and a more creative development environment.
Current operating systems
• Are written in C, C++, or assembly language.
• Are monoliths, due to the tree structure of C and C++.
• Fit the "plum pudding" model: The OS is the pudding, and applications are the plums.
• Are not extensible: Small changes in OS functions or applications often necessitate recompilation.
• Will be written in Java or other modular, object-oriented languages.
• Will be extensible: A thin OS layer could run on small devices and could be extended by plugging in software modules. The distinction between application and OS is less important: the GUI could be an application.
• Will offer a benefit: New functions can be added on the fly.