OpenDOC, a Forgotten Technology

By Jeramie Samphere

Republish Provided by the OS2eCS Organization.

Creation
'...In the beginning God created the computer and gave it DOS and Unix. Now the computer proved to be limited and not very useful, and there was darkness from Redmond. And God proceeded to say: "Let light come to be". Then there came to be OS/2! After that God saw that OS/2 was good, and God brought about a division between the light and the darkness. And God began calling the light IBM, but the darkness he called Microsoft. And there came to be evening and there came to be morning a first day. And God went on to say: "Let an expanse come to be in between the software and let a dividing occur between the software so there is a division. And it came to be so. And God began to call the expanse Heaven. And there came to be Windows and there came to be OS/2, a second day. And God went on to say: "Let Windows be brought together into one large monolithic ship". And it came to be so. And God went on to say: "Let OS/2 be created with object technology". And it came to be, and OS/2 had a System Object Model. After that God saw that OS/2 was good!'

'And God went on to say: "Let us make man in our image, according to our likeness, and let them have in subjection the computers and software". And God proceeded to create the man in his image, in God's image he created him.'

'And God went to to say: "it is not good for the man to continue in a sea of Windows. I am going to create OpenDOC for him...'

Definition and Background
For those that prefer videos over text (requires Flash 7 Plug-in(r14), some older versions of Firefox before v2 are reported to have problems playing sound, works well with Firefox v2, SeaMonkey and Mozilla), you may watch an overview about OpenDOC in the following videos:

What is OpenDOC and why do I care about it? Quite simply, OpenDOC is a technology that provides a new way of creating and working with your computer software. OpenDOC is a software architecture that inter-operates on Windows 3.x, Windows 95, Windows NT, Macintosh, AIX, OS/2, and of course eComStation. Its an architecture that enables distributed, cross-platform component software that is flexible and powerful! OpenDOC was developed by CI Labs (Component Integration Laboratories, Inc.), a Non-profit company founded by Apple Computer Inc, IBM, Novell, and WordPerfect in October 1994. Latter Oracle, Taligent, Adobe and Xerox joined the consortium. The first version, v1.0 was released on the Macintosh in November 1995.

Again, what is the big deal about OpenDOC? Well it solves fundamental issues involving human interaction with software. Let us start by defining what these issues are. Fundamentally, computers and humans operate in completely different ways. Computers as we all know are machines, at the basic level a simple machine that processes bits and bytes. On the simplistic level, computers only know how to add and move two values (0s and 1s). Everything else they do is a combination of these two basic abilities. On the other-hand, humans are very complex biological machines, operating on a high level and interacting with a complex world of physical objects. So the first issue is, how do we create software that is comparable to the way we operate in the physical world and bridge the gap? After all, computer software is a very abstract construction, while people are very physical in orientation.

OpenDOC is based on a few different technologies, the primary one being the System Object Model (SOM) which is the heart of OS/2's WorkPlace Shell. SOM provides OpenDOC its dynamic linking ability, language-neutral interface compiler; which allows development in different languages using object-oriented as well as procedural languages. Another technology it utilizes is Bento, a class library and format for persistent object storage. Component Glue, gives OpenDOC an interface and library which allows it to interface seamlessly with Microsoft's proprietary, OLE (Object Linking and Embedding) for inter-application communication.

Designs
People like to construct things from simpler objects. Throughout history, people have combined tools and ideas to create new tools and new ideas, this is what we call "progress". We use tools all the time, and having the right tool for the right job can make a big difference, often saving time and money! Ah..I said money! Do I have your attention now? (smile)

Because putting things together is such an important activity in our world, it is even more important to have a good design for creating tools and objects, otherwise we end up again with a "sea of Windows". There are primarily three types of design.

The first is a "complete closed" design. A "complete closed" design plans for all possible combinations and synthesis. This type is best illustrated by vacuum cleaners and their attachments, often one attachment won't fit another brand of vacuum cleaner. One advantage of this design is that when you need to order a replacement attachment, you can be confident that as long as it's the same brand, it will fit your vacuum cleaner. Of course though this doesn't always hold true if your vacuum cleaner is made by Microsoft. In that case you will need to check the version of the attachment, to make sure your vacuum cleaner will suck properly--with the version of the Microsoft attachment you order.

The Second is a "particular closed" design, where there are no plans for combination or synthesis. An example would be a single-purpose tool like a word-processor or spread-sheet. Developers create their own "particular closed" design word processor, often duplicating the similar functions that are in their own spread-sheet product. Multiple vendors will produce the same tool, but often its difficult or impossible to continue work on a project that was created by another vendors tool.

The Third design is an "open" design. This calls for standards and guidelines for putting objects and documents together-no matter who created them. Much of our life and work depends on efficiently putting things together. So it stands to reason, that tools, objects, and ideas that can easily and quickly be put together will give us the greatest benefit. OpenDOC fits this design type. It provides the framework, standards and guidelines, so that users can put objects, ideas, and documents together in a very transparent way. This is what OpenDOC provides, for both users and developers!

The Right Tool, for the Right Job!
There are many tools (application programs) on the market now. Often in searching for a tool for a specific task, it takes a lot of time to search through the pile of tools available. (A good example of this is with Linux, in which case you need to check your version dependencies to see if you can even use the tool with your environment.) The accumulation of nearly identical tools not only takes up a lot of space, but the tool may function in a dissimilar way with comparable tools. This situation is familiar with users of VCRs, where each brand has a different way to set the clock and program the recorder. The proliferation of similar but different tools and the problem of similar tools behaving differently are the results of development of so-called "better" tools, each which is suited "better" for a specific use. Now some will claim to be easier to use, while some will be less expensive, sometimes with less functionality. So there are always trade-offs. What we have amounts to simply, "A real mess". Often a user needs to compromise and use a tool that isn't exactly right or spend enormous amounts of time and money on a software "Suite" that often provides 80% more functionality--that will never be used! An alternative would be to find the specific tools needed for a specific task and combine them, but the reality is that you can't tear out functions of one program and drag them into another--especially with different vendors software!

The Case for OpenDOC
It used to be..a long..long time ago, in the old days of computing, that a single floppy disk would contain an operating system, a word processing program, and still have space left for a document! Such a word processing application could be written by a single programmer in a few months while still having a "day job"! Not so any more! Operating Systems and applications have continued to pile on more and more functions. This is the result of the conditioning of the "mainstream IT media". They have programmed people to think that if an application has more functions, it must be better! Or if it looks more 'GUIy' it is better! Evaluating software based on usefulness and quality of its features is a foreign concept for most users today. So people need better education!

As software gets more complex, more time is required to test, debug, and revise. Also it is increasingly difficult, if not impossible for a single programmer to code and develop a single large application. Software that may only take months to code, can now take years to test, debug, and revise (to produce a decent product).

Procedural programming was the saviour of the 70s and early 80s. Object Oriented programming became the "next best" technology in the late 80s and into the 90s, but it hasn't really been the saviour for today's monolithic applications, which exhibit many bugs and are very time consuming in both development and use. What is needed is a whole new way of developing and working with software.

Meet OpenDOC
OpenDoc tackles these issues by enabling the development of a new type of software called a "part". Compared to monolithic applications, in which a single large program is responsible for all its documents content, a "part" is responsible for just one element of a document, that is specific for that part's functionality. Following is an illustration:

For developers, OpenDoc provides a modular approach to development and maintenance. Because it is a component-software architecture, it is much easier to design, develop, test, and sell software packages. Improvements can be made to software without the standard revision cycle and can be delivered to users much easier. For users, OpenDoc "parts" allow an end-user to create their own customized-compound documents from different types of data, regardless of what part created that data. With OpenDoc, you can easily edit any kind of data, in-place and in any document. As an example, you don't need to open up a graphics program, edit the image, save it, and then re-import it into your document. What this allows, is to let users focus on the task they are preforming, and not the mechanics of how to get the job done. Documents are not owned by a particular application, so they are easily transferred between different compound-applications.

A User View
Now lets take a look at OpenDOC running on eComStation. OpenDOC first was integrated into OS/2 with Warp version 4. To run it with OS/2 v 3 Connect, you will need FixPak 17. With eComStation, it is no longer included. So to get OpenDOC onto eComStation you will need to install it. The latest version available is v1.2.(*Note* OpenDOC will not install on any of the current eComStation v2 Betas..if you attempt to install, your system will be un-bootable! The OS2eCS Organization is investigating the issue. OpenDOC v1.2 for OS/2 was tested and it runs well on eComStation v1.2R.) You can locate a package here. After you download the package, uncompress it into a directory and execute the Install.exe program, located in the root folder where you uncompressed it. You will see the following screen:

Just press "Continue".

Continue by clicking "OK", leaving "Update config.sys" checked.

In this section click "Select All". Confirm the directory paths and click "Install". After installation is complete, a dialog box will appear. Click "OK" and reboot your system.

After you reboot, you will notice a new folder on your desktop called "IBM OpenDoc". Open it and click on "Install IBM Parts". This will install the basic IBM Parts. Afterwards, the installation is complete and the IBM OpenDOC folder will contain the following objects:

Overview
Lets begin now by taking a closer look at OpenDOC from a user view. Click on the object titled "OpenDoc" within the "IBM OpenDoc" folder. A dialog list window will come up:

Select the "IBM BaseContainer Kind" and click "OK".

What you will see here is a "Document Shell". This Document Shell represents the process in which an application, or a set of parts will exist. This is where you can interact in building your compound document or application. In a future article, we will explore the process of creating a compound-document from OpenDoc parts.

If you want to explore and learn some more about OpenDoc in the meantime, check out the on-line documentation by clicking the "index.htm" object in the IBM OpenDoc folder.