Hi COM! How’s it going?

In June 2000 at PDC in Orlando Microsoft announced .NET Framework project. Shortly after that developers concentrated around products and technologies made by Microsoft started debate on what’s the future of software development. One of questions and quite obvious was: So does this mean that COM is dead?. A few months later, Don Box addressed that concern in his extensive article Is COM Dead?:

It depends on what your definition of COM is. COM is many things to many people. To me, COM is a programming model based on integrating components based on type. Period. This was COM’s primary contribution to the field of component software, and that contribution has changed the way millions of programmers build systems today.

Don is right and the answer is historically and technically correct, however this is an indirect answer that didn’t cheer up at all. Given the closing words in that article:

(…) CLR provides significant benefits to developers who are using COM today. Virtually all aspects of the COM programming model have survived (…) I look at the CLR as breathing new life into the programming model that I’ve spent the last seven years of my life working with, and I know there are other programmers out there who share this sentiment.

overall conclusion becomes more an abstruse philosophy than binary answer. What about all these cryptic terms of Component Object Model technology made by Microsoft, like OLE, ActiveX, DCOM and other? Silent.

Nearly ten years later, developers are still asking the same question (a few days ago, similar discussion took place on ACCU mailing list) about COM. Alf. P. Steinbach gave an interesting answer that, however, sounds very similar to the one given by Don Box:

COM is one of the few successful C++ component technologies, if not the only one (depending on one’s definition of “successful (…) Some reduced and slightly modified versions of COM are used in e.g. Linux user interface and in Firefox browser (XCOM). Original COM itself is however a Windows-specific technology. But while it’s necessarily used to interface to the operating system and at higher levels in e.g. scripting, it’s my impression that it’s now now not much used as a general C++ component technology, i.e., that use of COM is something forced, not something desired and freely chosen.

Even though both are similar, it’s been decade since the question was asked for the first time and now we have 10 years of experience based on observations what has changed after .NET was thrown on the marked. The managed baby seems to be winning the market of Microsoft-oriented (not only, though) developers and users. COM is widely used as components of Windows systems and other already existing software but are new COM servers and objects still being developed? Or, has it started to suffer of COM programmer species extinction?

The www.microsoft.com/COM/ website confirms that:

Microsoft recommends that developers use the .NET Framework rather than COM for new development.

In my humble opinion, Mr. COM is like an old veteran, alive, but most of his comrades-in-arms have died, so he usually goes to pub alone.

4 thoughts on “Hi COM! How’s it going?

  1. Did you know that SWIG can generate COM bindings for C++ now? Thanks to a SoC project, you can make COM interfaces. Not that I’ve tried :)

  2. Depends on what part of COM you are talking about. COM+ died years ago. COM as the standard development practice for windows programmers probably died when .NET came out (not that you can’t plug COM objects into .Net languages). COM as a common way of accessing code through known types and a known vtable format will live on for some time as frankly it works.

    COM was a great programming paradigm for the day in that it hid implementation details (e.g. what language implements the innards of the object), allowed the usage of code through proxies, supported a runtime dynamic_cast (query interface), enabled memory management through reference counting and provided a way for code to talk to other code apart from old fashioned library linking. Interface programming is a beautiful thing.

    IMHO the “death of COM” started when the MTS team absorbed the COM team at microsoft and took what was a good language tool and turned it into a way to extend and leverage microsoft’s presence in the marketplace. In other words, MS made COM+ and tried to make the whole world adopt windows. Not surprisingly this happened at the hight of MS’s market dominance when everyone thought that UNIX was going to go away and we would all be windows programmers (aah hubris).

    COM will still be around for a while because in the end it is the only common way to get objects (potentially written by different companies in different languages) to talk to each other without serializing everything to XML (which is slow) and without linking at compile type to a library (which isn’t always possible).

  3. Hobu,

    I didn’t know SWIG provides COM generator. I don’t use SWIG, so perhaps that’s the reason I don’t know it well :-)

  4. Augustus,

    Thanks for your insights.
    I tried to comment on future of COM as technology in active use by developers and I tried to find out who still develops new COM servers and objects.

    If I’m still here in 2019, I’ll take a look back again and see what happened to COM after 2009 :-)

Leave a Reply

Your email address will not be published. Required fields are marked *

*

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>