Introduction to Open Software Description
Open Software Description (OSD) is an XML vocabulary used to describe software components and their relationships to other components. The OSD vocabulary is a standard (open) way to describe software components, their versions, their underlying structures and their dependence on other components.
It is standard for books to have a table of contents. Think of OSD as the equivalent contents list for software components.
This article is an overview of the OSD vocabulary. It presents high-level information about the benefits and usage of OSD.
- Key Terms and Concepts
- Sample Uses
- Software Update Channels
- Related topics
This section describes the fundamental terms and concepts associated with the OSD vocabulary.
- Distribution Unit
Web-bound software distribution units are packages consisting of a compressed cabinet file (CAB) that contains an information file (INF) and/or an OSD file, with or without a code component. The cabinet file is used primarily to reduce file size, which reduces the associated download time. The INF file provides installation instructions that Windows Internet Explorer uses to install and register software components.
One or more distribution units might be needed to distribute a single component. Additional information about distribution units can be found in the About Distribution Units.
- Extensible Markup Language (XML)
XML is a language for describing and exchanging data on the Web. It provides a standard for defining markup tags and data structure so that data can be easily exchanged online. XML makes it possible to describe structured data, like software distribution packages, in a hierarchical or tree-like fashion. The flexible nature of XML enables developers to create their own markup.
An XML vocabulary is defined by a specific Document Type Definition (DTD) file. Think of an XML vocabulary as the set of elements (words) and the rules for valid constructions of those elements (grammar) as defined by a particular DTD.
OSD allows for the creation of custom extensions called namespaces. These extensions, defined by DTD files, allow for the definition of additional tags, elements, and attributes required for specific implementations.
Additional information about XML is available in MSXML.
Microsoft Internet Explorer 3.0 and later provides Internet Component Download services for downloading, certificate checking, and installing software packages from the Internet and intranets. Support for OSD files began with Microsoft Internet Explorer 4.0.
For information about Internet Component Download distribution methods supported by different versions of Internet Explorer, see Choosing a Packaging and Distribution Method.
OSD provides a larger and more flexible vocabulary than INF files for describing Web-bound software distribution packages. When structure and dependencies can be clearly described, only those parts of the package that need to be changed will be downloaded. You can save users' time and bandwidth by not overwriting or duplicating package downloads.
- Complex Dependencies
Software components often require other components to run. OSD provides a way to specify many levels of dependency for Web-bound software components.
The DEPENDENCY element of the OSD vocabulary specifies which files a software package needs to run. Dependencies are installed before their parent SOFTPKG component. If a component has multiple layers of dependencies, the components should be arranged in a hierarchical fashion to assure the deepest nodes will be installed first.
- Java Classes and Applets
When described by an OSD file and packaged in a distribution unit, Java class files and applets can be downloaded using Internet Explorer's Internet Component Download services. You can save users' time and bandwidth by not overwriting or duplicating Java downloads. Downloading Java applets makes your content accessible offline and saves server cycles.
- International Languages
The OSD vocabulary provides a way to ensure that Internet Explorer's Internet Component Download service only delivers the correct language version of a software distribution package to the user.
International language support reduces complexity for the user. An OSD file can tell Internet Explorer's Internet Component Download service which LANGUAGE versions are available within the DEPENDENCY, IMPLEMENTATION, or SOFTPKG elements.
- Operating System and Hardware Platforms
Another way the OSD vocabulary reduces complexity for the user is by delivering only the software implementation the user needs. The OS and PROCESSOR elements are used to specify the operating system and hardware platforms a software component's IMPLEMENTATION requires.
OSD files are used to describe the parts of a software package's structured hierarchy and to describe how the parts are dependent on each other. An OSD file can be compressed in a cabinet file as part of a distribution unit. The OSD vocabulary can be used to describe Java classes and applets, complex software dependencies, and platform and language requirements.
Examples of the OSD syntax for a variety of uses are presented in About OSD File Architecture.
Channel Definition Format (CDF) is an XML vocabulary for delivering Web content. It is used to describe the hierarchy of pages in a Web site, as well as a schedule recommended by the Web publisher for updating the content of the site. Web sites described by CDF files are referred to as Microsoft Active Channel sites.
Users subscribe to Active Channel sites by clicking a hyperlink on a Web page that downloads a CDF file. Subscribing enables users to view the channel's contents offline, if they choose, without the delays (or expense) associated with a modem connection. Users may also elect to receive automatic updates of the channel's contents.
Software update channels can be used to notify subscribed users about new versions of software that the user has already installed.
- Choosing a Packaging and Distribution Method
- Introduction to Internet Component Download
- Introduction to Software Update Channels
- Using INF Files
- About OSD File Architecture
- Microsoft Internet Component Download Reference
- Open Software Description Element Reference
- How to Package Components for Internet Distribution
- Other Resources