Skip to content

Versioning

As a user of an Islandora repository, you may be wondering - Is this content being versioned? Could I restore from a previous version if I needed to? Can I see a list of versions for an object? The answer to these questions is two-fold, and largely yes. The architecture of Islandora provides users with a Drupal implementation and a Fedora implementation which are connected as of the 8.x-1.1 release of Islandora.

Drupal Revisioning

Drupal provides a concept of revisions which allows you to track the differences between multiple versions of your content and revert to older ones. The list of revisions for a node are available at http://localhost:8000/node/1/revisions. There are Drupal docs on revisioning. Media objects are also versioned in Drupal but there is not a UI component for this - see related issue.

Fedora and Memento

Fedora implements the Memento specification for versioning resources, which is a time-based HTTP framework. Fedora provides documentation as well as an API implementation.

Basic Data Flow

  1. A node or media object is created or updated in Drupal.
  2. When an entity is revisionable and it isn't the initial creation, it adds a flag to the event object that gets passed to Alpaca.
  3. The islandora-indexing-fcrepo module of Alpaca looks for that flag and fires a call to the versioning endpoint of Milliner.
  4. Milliner uses the Chullo library to create a version in Fedora.