I recently joined Scientist.com Software Services team, folks may know them previously as Notch8. This is a return to the Samvera community, with a focus on helping extend and maintain Blacklight, Spotlight, Hyrax, and Hyku by code contribution and team development.
The Software Services team of Scientist.com also provides non-Samvera services as well:
- Design, Planning, and Architecting
- iOS and Android Development with React Native
- Code Audits and Reviews
- Full Stack Development
- Samvera / Hyku Data Preservation Solutions
- Framework Upgrades
- Monitoring and Support
- Deployment Optimization and Containerization
In this series, my plan is to introduce approaches and idioms to Samvera that are also generally applicable to Ruby on Rails applications.
Introduction to the Technology
The Samvera stack is built using Ruby on Rails; making extensive use of the Rails engine paradigm. If you’ve used the ubiquitous Devise gem, you’ve used a Rails engine.
The quick one sentence explanation of a Rails engine is that it is and abstract application; you
inherit mount the Rails engine within your application and get it’s functionality.
One of the challenges of the Samvera stack is the layers of engines and gems. The design intention was to create composable parts to build your application.
A colleague and friend of mine once explained it as the Samvera gobstopper; layers of functionality.
The foundational engine is Blacklight, an “open source user interface discovery platform.” Your search engine if you will.
The next engine is Hyrax, a “foundation for creating many different digital repository applications.” Your administrative and access functionality for your digital items.
Both of those are “abstract” and require that you create an application; In the case of Samvera one instance is Hyku, “a multi-tenant Hyrax application.”
Again, the goal is to create composable parts to build an application that meets your institutions needs. Aside from Hyku, none of these parts are “shippable” applications. You need to bring your toolbox.
The goal is that a consortia of institutions will help maintain and extend the tools in your toolbox; however that leaves the work of assembly up to you.
All of this means that once you have an application built from these components, you may need to modify or extend an underlying component.
That wraps up the quick introduction, later in this series I’ll write about more technical details.