Sustainability of Digital Formats: Planning for Library of Congress Collections

Introduction | Sustainability Factors | Content Categories | Format Descriptions | Contact
Format Description Categories >> Browse Alphabetical List

Outline Processor Markup Language (OPML) 2.0

>> Back
Table of Contents
Format Description Properties Explanation of format description terms

Identification and description Explanation of format description terms

Full name Outline Processor Markup Language (OPML) 2.0
Description

Outline Processor Markup Language (OPML) is an XML-based format, specifically XML 1.0, for outlines where each node contains a set of named attributes with string values. An outline, in this context, is "a tree, where each node contains a set of named attributes with string values." The OPML specification, which is open, is developed and maintained by Dave Winer at opml.org. The current version, covered in this document, is version 2.0. See History for information about previous versions.

Structure of OPML

OPML is a hierarchical, ordered list of elements:

  • opml: root element that must contain the version attribute and one head and one body element. For OPML 2.0, the value is opml version="2.0". See File Signifiers section for values for other OPML versions.
  • head: contains zero or more optional elements: title (title of document); dateCreated (date-time when the document was created); dateModified (date-time when the document was last modified); ownerName (string, the owner of the document); ownerEmail (string, email address of the owner of the document); ownerId (http address of a web page that contains information that allows a human reader to communicate with the author of the document via email or other means. It also may be used to identify the author. No two authors have the same ownerId); docs (http address of documentation for the format used in the OPML file); expansionState (comma-separated list of line numbers that are expanded); vertScrollState (number, stating which line of the outline is displayed on the top line of the window): windowTop (number, the pixel location of the top edge of the window); windowLeft (number, the pixel location of the left edge of the window); windowBottom (number, the pixel location of the bottom edge of the window); windowRight (number, the pixel location of the right edge of the window)
  • body: contains one or more outline elements.
  • outline: element containing at least one required attribute, text, and zero or more additional attributes and zero or more sub-elements. No attribute may be repeated within the same outline element. Other optional attributes include type, isComment, isBreakpoint, created, and category.

Subscription lists, especially RSS or Really Simple Syndication feeds, are identified as sub-element of the body element with a node of type rss or an outline element that contains nodes of type rss.

Uses of OPML

According to the specification, the goals of OPML are "to provide a way to exchange information between outliners and Internet services that can be browsed or controlled through an outliner"; serve as a "file format for an outliner application, which is why OPML files may contain information about the size, position and expansion state of the window the outline is displayed in"; and, as a "format for exchanging subscription lists between feed readers and aggregators" especially RSS feeds. opml.org includes sample files for various uses.

Issues with OPML

Wikidata lists some criticisms of OPML including issues with the requirement that syntax in date-time elements must conform to the outdated RFC 822 specification which has been long superseded by RFC 5322, issues with the "expansionState" attribute, and general potential interoperability issues because "OPML documents relies almost entirely on the undocumented conventions of content producers." Issues with the OPML specification are included on the opml.org GitHub repo.

Production phase Middle state as an exchange platform. The purpose of this format is to provide a way to exchange information between outliners and Internet services that can be browsed or controlled through an outliner, especially for RSS feeds.
Relationship to other formats
    Defined via XML, Extensible Markup Language (XML)
    Has earlier version OPML 1.0. Specification published September 15, 2000. Not described separately at this time. See Notes for more information.
    Has earlier version OPML 1.1. Information about version updates published January 24, 2005. Not described separately at this time. See Notes for more information.

Local use Explanation of format description terms

LC experience or existing holdings None.
LC preference See the Recommended Formats Statement for the Library of Congress format preferences for textual works.

Sustainability factors Explanation of format description terms

Disclosure Fully documented and open specification. Developed and maintained by Dave Winer at opml.org. The specification declares "it's an open format, meaning that other outliner and service developers are welcome to use the format to be compatible with Radio UserLand, the OPML Editor, or for any other purpose."
    Documentation OPML 2.0 specification which is frequently updated. The opml.org GitHub repository backs up the opml.org website. In addition to the specification, there is an XML schema for validating OPML 2.0 developed by the Digital Library for Earth System Eduction (DLESE) Program Office (link via Internet Archive). There is also a DTD for OPML version 1.
Adoption According to Renée Christian in What are OPML Files, and How Do You Open, Edit, and Use Them? from August 2022, "the hierarchical structure of OPML facilitates the accurate exchange between software applications of large volumes of data, regardless of the operating system used. This makes them a high-utility file type that is used in a wide range of applications... Most programs that handle RSS feed data are able to import or export OPML files." OPML implementers include the aggregator Feedly, Mozilla Thunderbird, Microsoft Outlook starting with Outlook 2007, even Sony PlayStation legacy system 1000, 2000, 3000 and N1000 models to "to collectively register multiple channels that are stored in the file"; AntennaPod open source podcast player; Firefox browser bookmarks; and many more. opml.org maintains a list of OPML compatible applications.
    Licensing and patents No known license or patent concerns for generation and use of the format.
Transparency XML is human-readable and designed for straightforward automatic parsing. For the contents to be understood, a well-documented DTD, XML Schema, or other specification is needed. Human-comprehensible element tags are advantageous for transparency.
Self-documentation Well-defined XML structure include declaration of the OPML version (in the version attribute) as well as information about the title, creation dates and more in the head, body and outline elements.
External dependencies None.
Technical protection considerations None.

Quality and functionality factors Explanation of format description terms

Text
Normal rendering See XML.
Integrity of document structure See XML.
Integrity of layout and display See XML.
Support for mathematics, formulae, etc. See XML.
Functionality beyond normal rendering See XML.

File type signifiers and format identifiers Explanation of format description terms

Tag Value Note
Filename extension opml
See https://file.org/extension/opml .
Internet Media Type text/x-opml
See https://mimeapplication.net/text-x-opml. Not registered at IANA.
Internet Media Type See related format.  See XML.
Magic numbers See related format.  See XML.
Indicator for profile, level, version, etc. 2.0
For OPML 2.0, the required version attribute in the top level opml element is opml version="2.0". For OPML versions 1.0 and 1.1, the attribute values are 1.0 and 1.1 respectively. See OPML specification.
Pronom PUID See note.  PRONOM has no corresponding entry as of December 2022.
Wikidata Title ID Q836370
See https://www.wikidata.org/wiki/Q836370. Note that Wikidata does not specify versions.

Notes Explanation of format description terms

General The difference between version 2.0 and 1.0 is the "text" attribute, which is optional in version 1.0. The difference between version 1.0 and version 1.1 is less clear and in fact, in a post on opml.gov from January 24, 2005 titled About OPML 1.1, specification author Dave Winer explains that the addition of an optional cloud element to the OPML head element was under consideration because cloud was added to RSS in version 0.92. He explains that "this allows a server to implement update-notification, a lightweight publish-subscribe mechanism that works over various Internet protocols." However, due to changes in priorities and personal reasons, the cloud element was never actually added to OPML. He states "if you see an OPML 1.1 file, you should treat it like an OPML 1.0 file. That's it. Enjoy!"
History

According to Renée Christian in What are OPML Files, and How Do You Open, Edit, and Use Them?, "OPML was developed by a US-based software company called UserLand in 2000. UserLand used OPML as a native file format for Radio UserLand, an RSS aggregator and blogging tool." Dave Winer, the designer of the OPML format , founded UserLand in 1988. The current version of OPML is 2.0. The first version, version 1.0, was published in 2000. Version 1.1 was never formally finalized or published although a version 1.1 sample file is available and displays the version number in the header metadata.


Format specifications Explanation of format description terms


Useful references

URLs


Last Updated: 12/22/2022