I think the big reason OpenDoc failed is because it was completely steamrolled by Microsoft OLE 2.<p>These are complicated enough APIs that a developer is typically going to only implement one.<p>To better understand, it helps to go back in time when this was going on.<p>This was the early 90's, and Microsoft Windows was the dominant OS. In addition, Microsoft Office was also becoming the dominant office software.<p>Microsoft put a lot of it's energy behind OLE 2. Office supported it. If you wanted your application to be certified for Windows 95, you needed to support OLE 2. OLE 2 was pushed at all the Microsoft Developer conferences. Every book and magazine about Windows development pushed OLE 2. Microsoft's Visual C++ MFC framework supported OLE 2, and in fact, their Scribble tutorial included a section on implementing OLE 2. Visual Basic supported OLE 2, and in fact their custom controls were OLE 2 objects.<p>Thus if you supported OLE 2, you had a ton of documentation, tooling, libraries, dev environments that supported it. You could get Windows 95 application certification. You would be able to embed Office documents in your application, or have Office embed your documents in Office. IIRC, Visio started out as an independent application that had great OLE 2 support and was eventually acquired by Microsoft. And you could tell that OLE 2 was a huge priority for Microsoft. In fact, the rumored next generation successor to Windows 95 and Windows NT, Cairo was supposed to be built on OLE 2 from the ground up. (Cairo never materialized).<p>On the other hand you had OpenDoc, which did not have nearly as big of a market. It was not the priority for any of the companies pushing it. Unlike with Microsoft Office and OLE 2, there wasn't a halo product that showed off the user benefits of OpenDoc. There wasn't nearly the documentation and tooling and libraries for OpenDoc.<p>Given all that, I don't consider it surprising that OpenDoc failed.