Fedora, providing a robust, durable repository layer for persisting and managing digital objects. Fedora's disseminator features allow us to place an abstraction layer between it and our Hydra heads, shielding an institution's applications from any future changes to the repository structure.

Solr indexes, providing fast access to information about the institution's resources. Solr can be used as a lingua franca: content from any source that can generate a Solr index (perhaps an OPAC, or repository metadata records with different schema) can potentially be brought into a Hydra discovery environment.

Blacklight, a Ruby on Rails gem that provides faceted searching, browsing and tailored views of objects

HydraHead, a Ruby on Rails gem that works with ActiveFedora to provide create, update and delete actions against objects in the repository, as well as to support various content management actions (e.g., upload file, edit metadata, change permissions)

CRUD in Repositories

This first diagram shows the most common pattern of how you Create, Retrieve, Update and Delete (CRUD) objects in a Repository-driven application. The second diagram shows how the Hydra Framework applies that pattern by using the Hydra Plugin on top of Fedora for managing content (Create, Update and Delete operations) and Blacklight on top of Solr for Search and Discovery (Read operations) with Solrizer handling the crossover -- ensuring that anything stored in Fedora is indexed appropriately in Solr.

Taken altogether, these technical components support the following five primitive functions, essential for any digital asset management solution:

Hydra Terms

Hydra Framework refers to this entire structure - Hydra Plugin + Blacklight + Solrizer sitting on top of Fedora & Solr, as well as implementations & documentation of the recommended Hydra Content Models

Hydra Head Plugin -- one part of the Framework. It is a Rails Plugin (Note: Blacklight is also a Rails Plugin) that combines ActiveFedora, Opinionated Metadata (OM) and a number of other libraries to provide the baseline functionality and tools that you need in order to make a Hydra Head that Creates, Updates and Deletes Fedora Objects.

Hydra Heads-- full stack, user-facing solutions that use the Hydra Framework to provide a specialized interface for specific users, content types and workflows. Hydrangea is the reference example of a Hydra Head.

Hydra Content Types -- reusable code that defines the structure & metadata for a given type of content along with information about how to display objects of that type as search results, object detail, and edit forms.

OM provides the ability to map between your application's terminology and the underlying XML metadata structures

Note: Though the Hydra Plugin is one distinct part of the whole framework, it can only function when used with the rest of the framework. This is because the Plugin is designed to extend Blacklight by adding Create and Edit behaviors to the existing Blacklight experience. Likewise, the Plugin needs Solrizer in order to ensure that everything is indexed into Solr. The Plugin also assumes that you have both Fedora and Solr running underneath.

The Point of Having a Framework

Notice that a Robot or a Service, neither of which generates metadata editing forms or search interfaces, might only need ActiveFedora & OM in order to do its job. It doesn't need the full Hydra Plugin, nor Blacklight. However, it does need some assurance that it is doing things in the same way as the Plugin. This is where the idea of the Framework becomes especially important -- so we can build robots, services, and any other sort of utilities that will merely conform to the assumptions and expectations of the Framework. Ideally, the Framework not only defines how an application or tool should work, but actually makes it easier to do things, so that the correct way to implement something is also the easiest way.