Collaboration data objects are programming interface objects used in the Microsoft Windows® and Microsoft Exchange Server® line of software products. They enable the creation of messaging technology or collaborative applications on a computer system. The libraries of collaboration data objects allow software developers to gain access to data points located on the server, public computer folders, and network, as well as those stored in mailboxes on a computer. This allows for a greater level of customization within the product, as users can create and tailor messaging applications to suit their own specific needs.
These types of collaboration data objects do not form a full programming language, but are part of a scripting language that works alongside the messaging application programming interface (MAPI) in Windows® and Exchange Server®. The difference between a scripting language and a full programming language is that a scripting language has been created with a specific purpose in mind, so it is limited in the things a programmer can accomplish with it. In the case of collaboration data objects, its scripting language is intended to allow programmers to create ad hoc types of messaging programs, in addition to modifying features about preexisting messaging programs. These "hand-built" or customized programs can either take the place of or enhance the messaging applications already on the system.
The primary advantage to using collaboration data objects is flexibility. Through the use of the scripting language, dedicated programmers can attempt to add features to the software which were not originally available. This potentially saves on cost, as the skilled end user will no longer have to resort to third party applications to obtain a specific feature. If they are knowledgeable enough in the scripting language, they can simply create the desired feature on their own.
A downside to this method is that because they are tied to a scripting language, using collaboration data objects will not offer the same amount of flexibility as software created using a full programming language. The features and programs created must work within the framework already provided by either Windows® or Exchange Server®, placing limits on their overall potential. This slightly diminishes the usefulness of collaboration data objects versus building a fresh application from the ground up, using a full programming language.