Ha!  I wrote recently about the history of .NET Interop in the industry, and how perceptions in the industry have changed so much.

I was looking for some old benchmark code (dirty little secret - I do not use a project management and code versioning system, but the more code I write, and the older I get, the more i need one. . . hmmm, do you think I could get a deal on Visual Studio's Team Foundation Server? hee hee)  anyway while I was looking for the old code, I came upon a text file containing an dialogue from an old javalobby thread, from May 2005. I participated in the thread as part of the run-up to JavaOne 2005, in which Microsoft was participating formally, with a booth, and some sessions, and so on (and yes, I was one of the 3 or 4 people from Microsoft who were going to be there.)  Here is one part that was written to me.  The context was around .NET, and why it is at least interesting to "Java developers" or devs who use Java primarily.  I had stated that interop was one key reason that .NET should be interesting to Java devs.  Here's what I got back:

I think you're underestimating the size of the wall between MS and the rest of the development community.  The MS shops have little interest in interop, because they know it just won't work well. MS doesn't do interop. And the non-MS shops know that too, plus they know that they'd better not get tied to MS products anyway. Java apps interop with other apps from all vendors but MS. That's plenty.

"Microsoft doesn't do interop."    Customers "know it just won't work well."  Wow.  Three short years ago.   Also the statement "Java apps interop with other apps from all vendors but MS" - (by which I think he meant "Java apps don't interop with apps built on MS technology."    All of this is just nutty.

Here's another excerpt from that thread, where my counterpart in the dialogue attempts to make a distinction between "good interop", which is supported just for interop's sake, and "bad interop", which is supported in order for a company to make money.  Put aside for a moment whether that distinction is a valid one.  

dubious: I'm singularly unconvinced that [Microsoft] really give a flying fark about true "interoperability," but want to use "interoperability" as a bludgeon to try and increase their market share.

Dino: My real question is, what is the practical difference between "true interoperability" and interoperability pursued for the sake of gaining market share, or revenue, or profit?

dubious: The practical difference is that "true interoperability" really does make things interoperate. To say that Word now lets you save documents in XML, but it's just a proprietary format wrapped in XML tags, that's not true interoperability.

Dino: I'd like to understand this. XML is extensible, right? That means, anyone can define a schema, based on the extensibility rules for XML. Anyone can name their schema, publish it, and then invite others to read and use it. this is what Microsoft did with WordProcessingML, effectively. Or am I wrong on this?

The WordProcessingML that MS-Word can save to or load from - it is a schema defined and licensed by MS. It is RAND today, and also free, but not guaranteed to be free forever. It is undeniably "proprietary" in the sense that MS owns the IP. It is not an OASIS or W3C standard. But it is available for anyone to use, if they agree to the license. [side note: as of 2008, the WordProcessingML has been included in the Open Specification Promise, which as I have noted previously, goes way beyond RAND]

... Is this interop? "True interop"? or is it the other kind, the bad kind?

dubious: Again, I don't know details, so maybe it is true interop, I don't know. But I absolutely will not trust it, even if it is true interop.

This is how things really were. And this was only 3 short years ago.  The guy refused to grant one inch on the "Microsoft does interoperability" issue.  Even in the face of countervaling facts, he gripped his opinions ever more strongly. 

Getting back to the premise, that there is a distinction between "good" and "bad" interoperability... Let me say that I ascribe to the capitalist philosophy.  I believe that companies do what they do in order to make more money.  A corollary of that is that "interop just for interop's sake" is an idea that no real company pursues.  Another corollary is, "it's not bad to make money, by delivering interop."   This is just capitalism.  So I don't accept the premise that interop can be "good" or "bad". 

Thinking about it now, I guess maybe using a thread from a javalobby forum isn't the best example. The forums there are the birthplace of many flamewars. It seems like the participants view it as good sport. Probably safe to assume that the participants there are not representative of the broader development community. But, I will say.. my perspective was that I saw lots more incredulity than was justified around Microsoft interop capabilities , and not just at javalobby.

There's a guy I know, a really bright guy, sharp technologist and a very successful software entrepreneur. He knows his stuff. He cannot believe that I have a Windows XP machine running IIS on the internet. (actually I have several)  They have been running for maybe 5 years this way. Even today this guy cannot believe it. He laughs when I tell him. He thinks I'm an idiot. He is certain that the only reason the machines haven't been hacked (ever) is that they haven't been found yet.

But I have the IIS logs that show the machines have been sniffed. I have the urlscan logs that show they get probed regularly. I'm a little hesitant to even *say* "those machines have never been hacked", because it seems like threatening fate. I know that all software is vulnerable, and it's just a matter of time and effort for any machine, any operating system. So I'm not daring anyone, not explicitly anyway, to just go ahead and try to hack my WinXP "servers". But the point is, they have been out there for a long long time, and I haven't had a breech yet.

Some people will never change their minds. They learn something once, and it stays forever.  They have write-only storage in their brains.  Once they "know" something, regardless how it came to be that they "know it", things don't change. They never re-examine.  Obviously this is not a blanket statement.  A person can be close-minded about some things and open-minded about others. The software entrepreneur I spoke of, he's learned a ton as he built successful software companies, one after the other.  He's open minded about business.  But he's not about Windows security.  In the same way some people are just not open-minded about interop, regardless what the facts say.

Hmmm, do I sound defensive lately?   Maybe my biorhythms are in a downcycle.

The good news is that over time, the skew between the perception and reality on .NET interop capabilities, has lessened.  Thanks be to Scott McNealy!