OpenDoc is a defunct multi-platform software componentry framework standard created by Apple in the 1990s for compound documents, intended as an alternative to Microsoft's proprietary Object Linking and Embedding (OLE). It is one of Apple's earliest experiments with open standards and collaborative development methods with other companies. OpenDoc development was transferred to the non-profit Component Integration Laboratories, Inc. (CI Labs), owned by a growing team of major corporate backers and effectively starting an industry consortium. In 1992, the AIM alliance launched between Apple, IBM, and Motorolawith OpenDoc as a foundation. With the return of Steve Jobs to Apple, OpenDoc was discontinued in March 1997.
The core idea of OpenDoc is to create small, reusable components, responsible for a specific task, such as text editing, bitmap editing, or browsing an server. OpenDoc is a framework in which these components can run together, and a compound document format for storing the data created by each component. These documents can then be opened on different networked machines of different operating systems, on which the OpenDoc frameworks can substitute suitable components for each part, even if they are from different vendors. In this way users can "build up" their documents from parts. Since there is no main application and the only visible interface is the document itself, the system is known as document-centered.
At its inception, OpenDoc was envisioned to allow, for example, smaller, third-party developers to enter the then-competitive office suite software market, and build small, specialized applications instead of having to provide a complete suite. It would facilitate a new future of online application stores.
Microsoft approached Apple asking for input on a proposed OLE II project. Apple had been experimenting internally with software components for some time, based on the initial work done on its Publish and Subscribe linking model and the AppleScript scripting language, which in turn was based on the HyperCard programming environment.