OpenDoc was a multi-platform software componentry framework standard for compound documents, inspired by the Xerox Star system and intended as an alternative to Microsoft's Object Linking and Embedding (OLE).
The basic idea of OpenDoc was to create small, reusable components, responsible for a specific task, such as text editing, bitmap editing or browsing an FTP server. OpenDoc provided a framework in which these components could run together, and a document format for storing the data created by each component. These documents could then be opened on other machines, where the OpenDoc frameworks would substitute suitable components for each part, even if they were from different vendors.
In this way users could "build up" their documents from parts. Since there was no main application and the only visible interface was the document itself, the system was known as document centered.
It was envisioned that OpenDoc would allow smaller, third-party developers to enter the office software market, able to build one good editor instead of having to provide a complete suite.
OpenDoc was initially created by Apple Computer in 1992 after Microsoft approached Apple asking for input on a proposed OLE II project. Apple had been experimenting with software components internally 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. Apple reviewed the Microsoft prototype and document and returned a list of problems they saw with the design. Microsoft and Apple, who were highly competitive at the time, were unable to agree on common goals and did not work together.
At about the same time, a group of third-party developers had met at WWDC '91 and tried to hammer out a standardized document format, based conceptually on the Amiga's Interchange File Format (IFF). Apple became interested in this work, and soon dedicated some engineers to the task of building, or at least documenting, such a system. Initial work was published on the WWDC CDs, as well as a number of follow-up versions on later developer CDs. A component document system would only work with a known document format that all the components could use, and so soon the standardized document format was pulled into the component software effort. From then it quickly changed from a simple format using tags to a very complex object oriented persistence layer called Bento.
Initially the effort was code named "Exemplar", then "Jedi" and "Amber", then released under the name "OpenDoc". The development team realized in mid-1992 that an industry coalition was needed to promote the system, and created the Component Integration Laboratories ("CI Labs") with IBM and WordPerfect. IBM introduced the System Object Model (SOM) shared library system to the project, which became a major part of Apple's future efforts. In 1996 the project was adopted by the Object Management Group, in part due to SOM's use of Common Object Request Broker Architecture (CORBA), maintained by the OMG.
Kurt Piersol from Apple was the best-known architect of OpenDoc, but Jed Harris (later president of CI Labs) was just as critical to the early designs. Mark Ericson from WordPerfect provided the vision for a port to Windows that included seamless interoperability between OpenDoc and OLE.
OpenDoc was one of Apple's earliest experiments with open standards and collaborative development methods with other companies. Apple and its partners never released the source code, but did make the complete source available to developers for feedback and for testing and debugging purposes.
Apple was also involved in the Taligent project during some of this period, which offered somewhat similar functionality although based on very different underlying mechanisms. While OpenDoc was still being developed, Apple confused things greatly by suggesting that it should be used by people porting existing software only, and new projects should instead be based on Taligent since that would be the next OS. This plan died along with Taligent, leaving OpenDoc as the future of the Mac application base.
OpenDoc's primary distinction from other compound document architectures lay in the depth of its support for dynamic media. OpenDoc containers could include embedded live content, and could perform arbitrary real-time composition of the content. The architecture used a design pattern which insulated the container from embedded content using intermediate objects, greatly enhancing interoperability and simplifying testing of part handlers. Any part could serve as a container for any other part.
From IBM’s involvement in Taligent, there was an implementation of OpenDoc in OS/2 Warp 4. IBM also contributed a large amount of development to the underlying object technology, the Common Object Request Broker Architecture (CORBA).
The WAV word processor was a semi-successful OpenDoc word processor from Digital Harbor, the Numbers & Charts package was a spreadsheet and 3D real-time charting solution from Adrenaline Software, the Cyberdog web browser was created by Apple as an OpenDoc application. The Nisus Writer software by Nisus incorporated OpenDoc, but its implementation was hopelessly buggy. Bare Bones Software tested the waters by making its BBEdit Lite freeware text editor available as an OpenDoc editor component. RagTime, a completely integrated office package with spreadsheet, publishing and image editing was ported to OpenDoc shortly before OpenDoc was cancelled. Apple's 1996 release of ClarisWorks 5.0 (the predecessor of AppleWorks) was planned to support OpenDoc components, but this was dropped.
A number of physics simulations were written by MetaMind Software and by Russian software firm Physicon (OpenTeach) as OpenDoc parts. Physics curricula for high school and middle school used them as their focus. With the demise of OpenDoc, the simulations were rewritten as Java applets and are still available from the Center under the title of " The Constructing Physics Understanding (CPU) Project" by Dr. Fred Goldberg.
Unfortunately this flexibility came at a cost. OpenDoc components were invariably extremely large and very slow, a side effect of all the layering. For instance, opening a simple text editor part would often require 2 megabytes of RAM or more, whereas the same editor written as a standalone application could be as small as 32 KB. This initial overhead became less important as the number of documents open increased, since the basic cost was for shared libraries which implemented the system, but it was large compared to entry level machines of the day. Many developers felt that the extra overhead was too large, and since the operating system did not include OpenDoc capability, the memory footprint of their OpenDoc based applications appeared unacceptably large. In absolute terms, the one-time library overhead was approximately 1 megabyte of RAM, a very small amount by modern standards, but at the time it would have represented half of a low-end desktop computer's entire RAM complement.
Another issue was that OpenDoc had little in common with most "real world" document formats, and so OpenDoc documents could really only be used by other OpenDoc machines. Although one would expect some effort to allow the system to export to other formats, this was often impractical because each component held its own data. For instance, it took significant effort for the system to be able to turn a text file with some pictures into a Microsoft Word document, both because the text editor had no idea what was in the embedded objects, and because the proprietary Microsoft format was undocumented and required reverse engineering.
Another problem was the fact that each part saved its data within Bento in its own internal binary format, and it was very common to find one component could not open a document created by another, even though the internal data represented similar objects (spreadsheet data for instance). OpenDoc attempted to solve this problem by allowing developers to store multiple formats to represent the same document object. For instance, it was both possible and encouraged to store a common format like JPEG along with editable binary format, but in practice few developers followed this recommendation. This problem was not unique to OpenDoc, and in fact was also experienced by the Microsoft equivalent, Object Linking and Embedding (OLE). Indeed, many years later, XML documents which attempt to perform embedding of other XML formats also encounter similar issues.
It also appears that OpenDoc was a victim of an oversold concept, that of compound documents. A few specific examples are common, for instance most word processors and page layout programs include the ability to include graphics, and spreadsheets are expected to handle charts. Yet beyond that it seems there aren't all that many other examples. For instance, it seems unlikely that anyone would want to include a page layout view inside their spreadsheet.
But certainly the biggest problem with the project was that it was part of a very acrimonious competition between OpenDoc consortium members and Microsoft. The members of the OpenDoc alliance were all trying to obtain traction in a market rapidly being dominated by Microsoft Office. Apple, in particular, saw OpenDoc as a way to create an entirely new software market, although this appears rather optimistic in retrospect. As the various partners all piled in their own pet technologies in hopes of making it an industry standard, OpenDoc grew increasingly unwieldy. At the same time, Microsoft used the synergy between the OS and applications divisions of the company to make it effectively mandatory that developers adopt the competing OLE technology. In order to obtain a Windows 95 compliance logo from Microsoft, one had to meet certain interoperability tests which were quite difficult to meet without adoption of OLE technology, even though the technology was largely useful in integrating with Microsoft Office. OpenDoc was forced to create an interoperability layer in order to allow developers to even consider adoption, and this added a great technical burden to the project.
Before long, OpenDoc was scrapped, with Steve Jobs noting that they "put a bullet through [OpenDoc's] head", and most of the team was laid off in a big reduction in force in March 1997. Other sources noted that Microsoft hired away three ClarisWorks developers who were responsible for OpenDoc integration into ClarisWorks.
AppleShare IP Manager from versions 5.0 to 6.2 relied on OpenDoc, but AppleShare IP 6.3, the first Mac OS 9 compatible version (released in 1999), eliminated the reliance on OpenDoc. Apple officially relinquished the last trademark on the name OpenDoc on June 11, 2005.