I think COM is incomprehensible to most developers today--it certainly is to me, and I maintained a .NET application with COM components for several years! COM is so arcane and verbose.
Why invest hundreds of hours learning something with no clear benefit or future? The documentation introduces COM as:
https://docs.microsoft.com/en-us/windows/win32/com/component...
> COM is a platform-independent, distributed, object-oriented system for creating binary software components that can interact. COM is the foundation technology for Microsoft's OLE (compound documents) and ActiveX (Internet-enabled components) technologies.
What does that even mean? It sounds obsolete.
Really, can't we just leave COM in the 90's?
COM gets regularly new APIs.
Since Vista all major APIs are based on COM.
How do you think those easier technologies are implemented?
Just to give an example, React Native for Windows uses UWP.
As for not being relevant, the software for a platform with 80% market share across desktop and laptops, does not write itself.
I feel Windows' C API (i.e., Win32 API) was adopted at a larger scale than COM. It's much easier to use the Win32 C API than COM objects. You'd have to use COM if you wanted to program the shell or DirectX but most of everything else you could use the C API.
You probably haven't heard much about it, because now it has the fancy name of UWP, or it comes with .NET wrappers on top.
That said, "UWP" is confusingly also used to refer to Windows apps that tap into WinRT APIs, participate in the modern app lifecycle, are modeled and have identity, or generally tap into newer technologies such as AppContainer. You'll see this, for example, perpetuated in Visual Studio in its project templating. It's a BIG OL' MESS right now; I'm working with/pushing Microsoft to get this communicated clearly and mopped up but old habits die hard.
https://docs.microsoft.com/en-us/windows/apps/desktop/choose...
And then there are some OS editions where some apps can't run or can only run in a container environment.
Until then, sorry to say but I follow up on what is available to us.
COM is an interesting concept. If it were never invented I have a feeling native apps would be spinning up a simple REST API server instead, since that's what we all do now apparently.
That's probably more a reflection of DirectX being reasonably well designed.
If you're using an API like DirectWrite (at least older versions) that requires you to implement interfaces to do basic things like load fonts from memory, then the COM underpinnings of the APIs become very apparent.
1. The good COM, which is just a class-like ABI.
2. The horrible OLE COM, which allowed you to embed Word docs in Excel and the like which is what most people associate with COM.
Most of my experience in using it has been horribly abusing it to drive Office applications and Notes to do some awful things because at the time there weren't any libraries to manipulate certain file types. I have done some truly heinous things with the Lync/Skype COM-based client SDK, back in the times when the Office 365 version of that product was viable, and there was no other API options available.