SULAIR Application Development Overview

SULAIR Application Development Overview

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 Ruby on Rails 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 (Chef, Puppet, Vagrant, Capistrano) • [Matterhorn] • Package Manager • Ruby + Rails (Apt, Yum, Homebrew, MacPorts) • [Resque] • RVM • Operating System • [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.

View Full Text

Details

  • File Type
    pdf
  • Upload Time
    -
  • Content Languages
    English
  • Upload User
    Anonymous/Not logged-in
  • File Pages
    19 Page
  • File Size
    -

Download

Channel Download Status
Express Download Enable

Copyright

We respect the copyrights and intellectual property rights of all users. All uploaded documents are either original works of the uploader or authorized works of the rightful owners.

  • Not to be reproduced or distributed without explicit permission.
  • Not used for commercial purposes outside of approved use cases.
  • Not used to infringe on the rights of the original creators.
  • If you believe any content infringes your copyright, please contact us immediately.

Support

For help with questions, suggestions, or problems, please contact us