Programming Guide: Why OpenDoc?

# Programming Guide

## Why OpenDoc?

Customer demand for increasingly sophisticated and integrated software solutions has led to large and sometimes unwieldy application packages, feature-laden but difficult to maintain and modify. Developing, maintaining, and upgrading these large, cumbersome applications can require a vast organization. The programs are difficult to create, expensive to maintain, and can take years to revise.

Upgrades or bug fixes in one such component of an application require the developer to release and the customer to buy a completely new version of the package. Some developers have added extension mechanisms to their packages to allow addition or replacement of certain components, but the extensions are proprietary, incompatible with other applications, and applicable to only certain parts of the package.

Because of the barriers put up by the current application architecture, users are often frustrated in attempting to perform common tasks:

- Users often cannot assemble complex documents from multiple sources because of the many error-prone, manual operations required.

- Users often cannot edit different kinds of content within a single document. Most applications support only one or a few different kinds of content, such as a single format for text and a single format for graphics. Furthermore, the editing procedures for a given kind of content are different across applications, complicating data transfer among applications.

- Business users are forced to choose between the reliability of shrink-wrapped software and the extra features of custom solutions designed for their needs. To increase reliability while maintaining and adding custom features, businesses need simple and standardized designs and procedures.

- Users may not be able to use an editor or tool provided by an individual developer or small development team because the editor may be incompatible with the users' current application package, and the developer may not have sufficient resources to develop an entire integrated package.

- Computers often frustrate users' efforts to collaborate with others. Users cannot share documents across applications, recover changes to shared documents, or, with rare exceptions, manipulate the contents of one document from within another.

OpenDoc addresses these issues by enabling the development of a new kind of application, one that provides advantages to both users and developers in the increasingly competitive software markets of today and the future. OpenDoc replaces the architecture of monolithic conventional applications in which a single software package is responsible for all its documents' contents, with an architecture of components, in which each software module edits its own content, no matter what document that content might be in. This is illustrated in Figure 1.

Figure 1. Monolithic Application Compared to Components

View figure.

OpenDoc allows developers, large or small, to take a modular approach to development and maintenance. Its component-software architecture makes the design, development, testing, and marketing of integrated software packages far easier and more reliable. Developers can make incremental improvements to products without a complete revision cycle and can get those improvements to users far more rapidly than is possible today.

For developers, this is a radical shift in approach, although its implementation is not difficult. For users, this is only a minor shift in working style; its main effect is to remove the barriers to constructing and using complex documents imposed by conventional monolithic application architecture.

OpenDoc components allow users to assemble customized compound documents out of diverse types of data. They also support cross-platform sharing of information. They resolve user frustrations with conventional applications by removing the barriers listed earlier:

- OpenDoc makes it easy for users to assemble any kind of content in any kind of document. OpenDoc documents will accept all kinds of media for which application components exist, now and in the future.

- OpenDoc makes it easy for users to edit any kind of data, in-place, in any document. Users can readily transfer that data to any other document and edit it there just as easily. This lets users focus on document content and lets them take advantage of the context provided by the surrounding document.

- OpenDoc allows businesses to customize their software solutions by assembling components into shrink-wrapped packages, thereby obtaining needed features, increasing reliability, and saving on training costs. In-house developers can then enhance the packages by developing components that integrate smoothly with the off-the-shelf software. Some developers bundle components together into packages that are similar to conventional monolithic applications; others sell individual components for specialized purposes, to users or to other developers for bundling. Users can purchase packages and use them as is, or they can modify a package by adding or replacing individual components.

- OpenDoc lowers market barriers to wide, cross-platform distribution for small developers. Components can be ported easily to other OpenDoc-supported platforms. Small development teams can create individual components with the knowledge that they will integrate smoothly with existing packages created by larger developers.

- OpenDoc promotes collaboration, allowing users simultaneously or separately to build documents as a team, on a single machine or across networks. Documents are not owned by single applications, and changes are recoverable through a draft history that is available for every document. Pervasive scripting support, rich data-transfer capabilities, and an extension mechanism allow users to manipulate their own and other documents in powerful ways.

While providing all of these advantages, OpenDoc exists harmoniously with existing monolithic applications; the user need not abandon conventional applications in order to start using OpenDoc. Table 1 summarizes some of the principal advantages of the OpenDoc approach to software for both users and developers.

Table 1. OpenDoc Advantages

| For Users | For Software Engineering | For Software Marketing | For Small Development Teams
--- | --- | --- | --- | ---
Modularity | Can easily add or replace document parts | Can easily test and upgrade components; can reuse components | Can assemble packages with great flexibility | Can create components that work seamlessly with all others
Small size | Less memory and disk space needed | Easier to design, code, debug, and test | Easier, cheaper distribution | Faster development and easier distribution of a component
Multiple platforms | Documents travel across platforms so users can select familiar editors on each | Development effort on one platform can at times be leveraged to others | Opportunities for increased market share | Application of limited resources can at times be used across different platforms
Scriptability and extensibility | Users have greater control over behavior of document parts | Increased ability for communication among parts | Better coordination among components in a package | Increased ability to communicate with other components

[ Top | Previous | Next | Contents | Index | Documentation Homepage ]