CNET también está disponible en español.

Ir a español

Don't show this again

Tech Industry

Practice vs. preaching

Microsoft has created a component framework for Windows called COM, but there's much disagreement over how strictly the company hews to its own strictures.

The ongoing antitrust lawsuit against Microsoft has underlined the confusion over COM, the software giant's component framework for Windows, and has led industry observers to ask if the company is contradicting its own marketing rhetoric.

When U.S. District Court Judge Thomas Penfield Jackson asked Microsoft in December to separate the Internet Explorer browser from Windows, the software giant responded that doing so would break the user's system. (See related story)

Microsoft's claim obscured the fact that IE is built out of software components

and that it itself is a component that can be added to other Windows applications. So if Intuit's Quicken can add IE to its financial software, shouldn't Microsoft be able to easily remove it from Windows?

The question cuts to the heart of component development, which allows a developer to use prebuilt pieces of software--often from a range of companies--to create a new application. (See graphic below)

Purists argue that the inability to remove the browser functionality, or "service," from Windows without breaking other parts of the operating system violates the premise of component (or "object") development.

"When you talk about a distributed object model, the essence is that you have a separation of services," said Michael Carrier, vice president of technology at Fort Point Partners, a Web development house specializing in commerce sites. "To have services so interdependent is a violation of the object model philosophy."

The antitrust debate centers around IE 3.x and Windows 95, both of which have been or are about to be replaced in the Microsoft food chain, but their replacements--IE 4.0 and Windows 98--will be even more tightly integrated, company executives have said.

"Microsoft is incredibly vulnerable to be the emperor with no clothes on this topic," said Dwight Davis, an analyst who follows Microsoft for Summit Strategies.

To add to the confusion, Microsoft last year released beta copies of Windows both with and without IE to emphasize how modular it is, Davis added.

Microsoft argues that you simply can't swap certain components in and out at the operating system level. --Joseph Benjamin, Catinhat Software In other words, IE is reusable in other people's Windows-based software, but it isn't removable or replaceable from Windows. That strategy ensures that Microsoft-approved system services, such as a Web browser, are always available for Windows developers to use.

"A component is just a way of packaging code. It may be portable or it may be dependent on other pieces of code," said Gary Voth of Microsoft's platform marketing division.

Those dependencies are beneficial for Microsoft as it evolves its products. For example, the company has been able to merge the IIS Web server and the Microsoft Transaction Server, noted Voth.

"The component architecture is for our own use as well. The services we're building are integrated with each other so people don't have to integrate them themselves," he added.

One developer praised Microsoft for using a component strategy to build Internet Explorer. "They maintained the spirit of component development in the creation of the IE application," said Steve Jackson, chief technology officer at COM development toolmaker Interactive Objects.

But Microsoft hasn't shown the same spirit in opening up the Windows architecture for third parties, according to Jackson. Instead, it has merged the browser, for example, with preexisting Windows code that doesn't lend itself to componentization.

"They were trying to optimize the OS and enable this new service, and in doing so, they put code into preexisting components," he said. "Now you have a newly formed component that's part of OS, and that's the difficulty."

Where to draw the line then between applications and system software? That's a key question in the antitrust debate, and the debate over the rights of anyone other than Microsoft to determine what goes into the company's products is fierce.

Despite his praise, Jackson is wary of being shut out of development opportunities. "If they write their own service to become very integrated with the operating system, they should open up that same capability for third-party developers of similar services."

Jackson, who spent eight years at Microsoft, said that building in equal access is certainly possible, but it's not a "matter of priority" for Redmond.

Other developers aren't sure that such an easy mix-and-match capability is even desirable. Should IE be replaceable by a third-party browser service? No, said software architect Felix Kasza of Proxess, a German enterprise workflow systems company.

"Any replacement would have to provide not only the same exact interfaces, but the exact same UI [user interface] behavior, and for all intents and purposes, that would look and act just like IE," he added.

Opening up the operating system to third-party services is a double-edged sword, adding options for developers but also adding complexity. "With OS and other system-level code, you want to keep things as simple as possible," Kasza said. "Part of the payment COM exacts for its flexibility is also complexity, and drivers are complex enough as they are."

Another developer who works on large site installations agreed with Kasza but with some reservations. "COM is just a spec for how to build applications and plug-and-play third-party software," said Joseph Benjamin of Catinhat Software in Boulder, Colorado.

"When you get to the OS level, it gets a lot more complex to make everything modular. But if they spent more time on it, they could have figured it out."

Another reason for Microsoft to stay away from modularity is support. The company recently told customers running Novell's directory services on top of Windows NT that it would not give those users technical help with directory questions.

Whereas purists such as Fort Point's Carrier take component development to mean strict separation of services for easy mixing and matching, others argue that's not a realistic scenario.

"The term 'componentization' itself is nebulous," said David Smith, an Internet analyst with the Gartner Group. "When most people think of componentization, they think of reuse; replacement is more advanced. If something is there and it works, most developers want to use it rather than fix it."

Still, Microsoft and other software companies have traditionally stretched the definition to suit their own purposes, Smith added.

Microsoft has admitted misfiring on its own component message, adding confusion to an already complex landscape. (See related story) That's too bad, according to developers like Catinhat's Benjamin, because COM is a solid, albeit Windows-only, architecture.

Even though Microsoft has made strides in opening up the model, a move to a completely componentized architecture is unlikely, observers say. After all, the company has done quite well so far without baring it all.

"In the end, it's [Microsoft's] operating system, and it decides how it's going to provide access to it," Gartner's Smith said.

The object of component-based development

Microsoft's COM, or Component Object Model, defines a standard approach for accessing software services. COM objects can be written using many development languages, including C++, Java, or Visual Basic. In theory, COM--or what Microsoft used to call ActiveX technologies--provides a simpler way to build applications. A programmer can write a COM object to represent a spelling checker, for example, and provide multiple interfaces to other applications for accessing particular services, such as "look up word," "add to dictionary," and "remove from dictionary." Developers can then use the spell-check object in many applications and in many configurations, without having to redesign the object.
--Mike Ricciuti

Go to: A question of safety