This article comparing SOM and COM was written by Don Box. (first archived in January 1999, but doesn't say when published):
The Component Object Model and Some Other Model: A comparison of technologies revisited yet again:
https://web.archive.org/web/19990127184653/http://www.develo...
https://en.wikipedia.org/wiki/Component_Object_Model
It was in response to IBM's somewhat misleading article comparing their SOM with Microsoft COM, last updated July 1994:
The System Object Model (SOM) and the Component Object Model (COM): A comparison of technologies summarized
https://web.archive.org/web/19990117055950/http://www.develo...
https://en.wikipedia.org/wiki/IBM_System_Object_Model
Don Box wrote an excellent in-depth book about COM: "Essential COM": "Nobody explains COM better than Don Box" -Charlie Kindel, COM Guy, Microsoft Corporation.
https://en.wikipedia.org/wiki/Don_Box
https://archive.org/details/essentialcom00boxd
Unfortunately COM had the most un-googlable name possible (even before there was a Google), so Microsoft renamed it ActiveX.
For more comtext, here are some notes I wrote about Win32, COM, OLE, OLE Controls, and ActiveX in 1996:
https://donhopkins.com/home/interval/pluggers/win32.html
https://donhopkins.com/home/interval/pluggers/com.html
https://donhopkins.com/home/interval/pluggers/ole.html
https://donhopkins.com/home/interval/pluggers/olecontrols.ht...
https://donhopkins.com/home/interval/pluggers/activex.html
Here's a synopsis of COM I wrote in response to "Can someone link to a synopsis describing what "COM" is? It's hard to search for. (e.g. microsoft com visual studio)":
https://news.ycombinator.com/item?id=12975257
Don't get me wrong: I'm not advocating everybody jump on the COM bandwagon! I just think it's interesting and useful to know where it came from, how it evolved, what different layers were built on top of it, and how it compared to the alternatives at the time it was designed. And it's still pretty widely used, and will probably never go away.
It certainly had a lot of problems and limitations, and OLE/ActiveX/DCOM/DirectX/etc took it way too far, then Mozilla XP/COM cloned it and also took it way too far (and then back again: see "decomification" and "decomtamination"), but it really was a pretty elegant and successful solution to the problems it was designed to address at the time.
https://wiki.mozilla.org/Gecko:DeCOMtamination
https://news.ycombinator.com/item?id=12968830
https://bugzilla.mozilla.org/buglist.cgi?query_format=specif...
It's always good to study history to avoid repeating the mistakes of the past!
WebAssembly is going through a similar evolution, and might benefit from some of the lessons of COM and SOM.
> Unfortunately COM had the most un-googlable name possible (even before there was a Google), so Microsoft renamed it ActiveX.
All ActiveX components are COM components, but the opposite is not true.
Don Box wrote an excellent in-depth book about COM: "Essential COM"
It's on my desk right now, I was relatively inexperienced when I first read it so I thought it might be worth another look 15 years later.