HYDRA: SHARING TECHNOLOGY

Mark Bussey Chief Information Leafblower What Is Hydra? (from a technology standpoint)

• Framework: Technical and Design Principles

• Code: Services and Code Libraries (gems)

• Development: Collaborative Practices Technical Goals A common repository infrastructure • Flexible, atomistic data models • Modular, “Lego brick” services • Library of user interaction widgets • Easily skinned UI

Resulting in Tailored applications and workflows for different content types, contexts and user interactions Content Framework • Enable re-use through common object base • Objects must include rights metadata • Objects must include a statement of what content models the objects adhere to • That’s it! • Existing projects provide a variety of content models • Combine and/or extend these to meet your needs • Or build your own… Design Principles • The Hierarchy of Promises • Specific, Pragmatic, and Reusable from the bottom up

• Separation of Concerns • Persistence, Application, Presentation

• Best of Breed Components • Fedora, Solr, Blacklight, Hydra gems Services and Code Libraries • Standing of the shoulders of others • Fedora, Solr, Blacklight, Ruby, Rails

• Core Hydra Gems • Rubydora, Active-Fedora, Solrizer, Hydra-Head, Hydra

• Other Components • Cloud upload, collections, authorities, editor, batch edit, role-management, xml metadata Core Hydra Components • Fedora: a durable repository layer to support object management and persistence • Solr: provides fast access to indexed information • Blacklight: a plugin that interacts with solr to provide customized search, faceting, and custom object views • Hydra Head: a Ruby on Rails plugin that provides create, update and delete actions against Fedora objects Core Hydra Components CorePRODUCTION Hydra Components STACK

• Web Server (Apache, Nginx, Webbick) • Solr • [FITS] • Application Code • Fedora • Assets • [FFMpeg + (CSS, Logos, • Java Application Server localization) (Tomcat, Jetty, JBoss) codecs] • RDBMS • [ImageMagik] • Gemfile + (MySQL, SQLite, …) Dependencies • [libxml, etc.] • Deployment Scripting • Bundler (, , , ) • [Matterhorn] • Package Manager • Ruby + Rails (Apt, Yum, Homebrew, MacPorts) • [Resque] • RVM • • [Redis] • Passenger/ • Hardware OPTIONAL Unicorn SYSTEM STACK MODULES RAILS STACK

v1.0 ©2013 Data Curation Experts LLC Interlude: Why Rails • The repository conundrum: long lived data, short-lived code

• Rails grew up with the web: [Rails is] designed to make programming web applications easier by making assumptions about what every developer needs to get started

• Minimize the cost of your code… Because you’re going to have to throw out your code long before your data… More about Rails • Rapid: “Convention over configuration” • 10x productivity • Supportable: MVC (Model-View-Controller) and Rails framework make code well-structured, predictable • Testable: Rspec and Cucumber give powerful, automatable, testing tools • Learnable: Stanford went from 1 to 8 Ruby savvy developers in one year (no new hires) • 1 week learning curve to basic proficiency Collaborative Development Goals • Sustain an active developer community • Over 80 contributors from more than 20 institutions • Enable the smooth integration of new contributors • Provide scaffolding to welcome newcomers • Ensure high quality, reusable code • Project Hydra supports >50K lines of code • Enable the rapid development of new functionality • browse_everything (cloud uploads) and questioning_authority(controlled vocabs) gems in beta after 1 week of shared development at Q3-2013 Partner meeting projecthydra on github Best Practices in Development • Agile, user-centric development process • Test driven development & continuous integration • Distributed version control via github using public software repositories • Weekly “stand up” meeting w/issues in github • Continuous developer interaction via IRC • Documentation & Training Code Licensing • All Hydra code is available under Apache License, Version 2.0 • All code commitments are being managed through Contributor License Agreements • Individual – so each developer is clear about what they are contributing • Corporate – so each institution is clear about what it is contributing • Contributors maintain ownership of their IP • And grant a non-exclusive license to the project and its users So What is Hydra? • A Framework for generating Fedora front-end applications w/ full CRUD functionality • That follows design pattern with common componentry and platforms • Fedora, Solr, Blacklight, Ruby on Rails • That supports distinct UI’s, content types, workflows, and policies • Built by a cross-institutional team of developers and technologists Connect • Weekly developer calls: • Mondays 8:30 AM California time • Email list: [email protected] • IRC: chat.freenode.net #projecthydra • HydraCamp • Dublin – April 8-11, 2014 • Minneapolis – May 6-9, 2014 • US East Coast – Fall 2014 • Mark Bussey / DCE • [email protected] Resources • Hydra Community Framework: https://wiki.duraspace.org/display/hydra/Hydra+Community+Framework • Hydra Technical Framework: https://wiki.duraspace.org/display/hydra/Technical+Framework+and+its+Parts • The Hierarchy of Promises https://wiki.duraspace.org/display/hydra/Hydra+Stack+- +The+Hierarchy+of+Promises • Hydra for Developers https://wiki.duraspace.org/display/hydra/Developers • Hydra on Github https://github.com/projecthydra Help us Build it Better!

http://projecthydra.org