From 7d8a92945526628830e5d92c813a61481c5dad4e Mon Sep 17 00:00:00 2001 From: Heather Greer Klein Date: Fri, 4 Aug 2023 14:27:37 -0400 Subject: [PATCH] Update technology-stack.md --- .../repository-solutions/technology-stack.md | 25 +++++++++++-------- 1 file changed, 14 insertions(+), 11 deletions(-) diff --git a/markdown/repository-solutions/technology-stack.md b/markdown/repository-solutions/technology-stack.md index 3e37e99e9..b64996032 100644 --- a/markdown/repository-solutions/technology-stack.md +++ b/markdown/repository-solutions/technology-stack.md @@ -2,25 +2,28 @@ title: "Technology stack" date: "2016-10-07" --- +Samvera is not one single software product; it is a collection of components built and supported by the Samvera Community to create a repository solution. In addition, Samvera draws on many more open source components that are maintained by other open source communities. -A Samvera repository solution provides functionality for the full range of CRUD services (create, read, update, delete).  To do this it employs a number of Ruby on Rails based components (or "gems") in conjunction with three other "best of breed" open source software products: Fedora, Solr and Blacklight. +A Samvera repository solution provides functionality for the full range of CRUD services (create, read, update, delete). To do this it employs a number of [Ruby on Rails](https://rubyonrails.org/) based components (or "gems") in conjunction with other open source software products. -![Samvera technology stack diagram](../images/Samvera-Components-Diagram.png) +![Samvera technology stack diagram](../images/technology-stack.png) -At the top of our architecture diagram is "Samvera Applications." Broadly, these are [Ruby on Rails](http://rubyonrails.org/) based applications that follow Samvera conventions. We are focusing our development efforts here on [Hyrax](http://hyr.ax/about/) as a Samvera application. These Samvera applications generally use a number of plugins to provide specific, additional functionality. +At the top of the stack are three options for repository application solutions that have been bundled in such a way to deliver functionality for a specific set of use cases: -As noted above, most new Community development efforts at the Samvera Application level are happening in a project called Hyrax, an application code base that the Community will jointly support and maintain. If you are starting a new Samvera project, we strongly recommend you start with [Hyrax](http://hyr.ax/about/) for this part of your architecture.  (Hyku, Hydra's turnkey solution bundle, is built using Hyrax.) While it is possible to create your own Samvera application by assembling the right components, and this has been a common practice in the Samvera Community in the past, ongoing maintenance of home-grown solutions will be more expensive than sharing maintenance costs with the rest of the Community. +* **[Avalon Media System](https://www.avalonmediasystem.org/)** is a platform for managing and providing access to large collections of digital audio and video, and is built on Samvera core components. -At the bottom of the diagram are Fedora and Solr. We use [Fedora 4](http://fedorarepository.org/) as our persistence layer. This is where the actual content and its associated metadata (or pointers to them) are stored. Interaction with Fedora happens via an HTTP API. Fedora 4 stores content as linked data. We use [Apache Solr](http://lucene.apache.org/solr/) as the basis for our search functionality. Content from Fedora is indexed into Solr via [ActiveFedora](https://github.com/projecthydra/active_fedora), one of our middleware gems. Interaction with Solr also happens via an HTTP API. +* **[Hyrax](https://hyrax.samvera.org/)** is a fully featured repository front end with self-deposit and administrative workflow features. One benefit of starting your application with Hyrax instead of starting your application with just Ruby on Rails is that Hyrax has a rich and growing set of features built in that are especially useful for repository owners, such as the ability to create and edit user profiles, configure workflows, generate work types and work type images, upload multiple files and folders, set user level control over metadata and more. \ -In the centre of our architecture diagram is a range of "middleware" components. +* **[Hyku](https://hyku.samvera.org/)** offers multi-tenancy. It’s built on top of Hyrax so it comes with all of the features of Hyrax, but being multi-tenant means that there’s a single repository owner that can create multiple Hyrax instances for that repository. In addition, Hyku adds IIIF Image & Presentation API support, the Universal Viewer, and bulk import scripts as well as greater customization options like adding fonts and custom CSS. Hyku as a hosted service is offered by service providers. -_hydra-head_: [Hydra-Head](https://github.com/projecthydra/hydra-head) is a Ruby-on-Rails gem containing the core code for a web application using the full stack of Samvera building blocks. +Other open source software used in the stack include **[Blacklight](https://projectblacklight.org/)** to display search results; **[Spotlight](https://github.com/projectblacklight/spotlight)** for attractive collection display; and the **[IIIF Universal Viewer](https://universalviewer.io/)**, a high quality item viewer. -[](https://github.com/projecthydra/projecthydra.github.io/blob/refactor_docs/pages/hydra/1_new_start_here/our_technology_stack.md#active_fedora)_active_fedora_: Ruby on Rails usually follows the [Active Record](http://guides.rubyonrails.org/active_record_basics.html) pattern to persist objects to a database. We instead use [ActiveFedora](https://github.com/projecthydra/active_fedora) to persist objects to Fedora. +A set of core components (Ruby gems) provide interfaces interacting with [Fedora](https://fedora.lyrasis.org/) and [Solr](https://solr.apache.org/), [PCDM-compliant data models](https://pcdm.org/models) and other commonly-needed features like characterization, text extraction and derivative generation. Samvera also has core components that can be used by institutions who want to create fully custom front ends for their repositories while still benefiting from community supported components for some common repository processes. -[](https://github.com/projecthydra/projecthydra.github.io/blob/refactor_docs/pages/hydra/1_new_start_here/our_technology_stack.md#ldp)_ldp_: We use a ruby gem called [ldp](https://github.com/projecthydra/ldp) to implement the LDP ([Linked Data Platform](http://www.dataversity.net/introduction-linked-data-platform/)) interaction patterns for interaction with Fedora 4. +The base of this stack of components is the data store layer. A data store is a repository for continuously storing and managing collections of data. It is used as the persistence layer and is where the actual content and its associated metadata are stored. **[Fedora](https://fedora.lyrasis.org/)** is a popular option as a persistence layer in Samvera Community repositories. -[](https://github.com/projecthydra/projecthydra.github.io/blob/refactor_docs/pages/hydra/1_new_start_here/our_technology_stack.md#rsolr)_rsolr_: [Rsolr](https://github.com/rsolr/rsolr) is a ruby client for Solr. +**[Solr](https://solr.apache.org/)** is an indexed based data store, used to power the search functionality of our Samvera applications. It’s quick because it allows for indexing records by ID as well as by other metadata, like ‘author’, which means a record can be linked to multiple pointers and referenced in many different ways. It answers the question: What items have metadata that match? And returns the ids to look up the actual data in a database. -[](https://github.com/projecthydra/projecthydra.github.io/blob/refactor_docs/pages/hydra/1_new_start_here/our_technology_stack.md#blacklight)_blacklight_: Much of our search and display behavior is inherited from [Blacklight](http://projectblacklight.org/). Many Samvera institutions also run Blacklight applications separately from Samvera itself, to provide search and discovery for their collections. The Blacklight Project also has many of its own plugins, such as [Spotlight](http://spotlight.projectblacklight.org/) for building virtual exhibits, and [GeoBlacklight](http://geoblacklight.org/) which enhances Blacklight for use with geospatial data. +**[Valkyrie](https://github.com/samvera/valkyrie)** is a data mapper that is used with data stores. It’s a gem for enabling multiple backends for the storage of files and metadata in Samvera. Valkyrie can talk to various versions of Fedora and other storage engines as well. + +For a deep dive into Samvera development, see the [Developers section of the Samvera Community wiki](https://samvera.atlassian.net/wiki/spaces/samvera/pages/405211345/Developers).