Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Sipity: Patron Oriented Deposit

Sipity: Patron Oriented Deposit

Sipity is a patron-oriented deposit interface into CurateND. At least that is what it started out as...

Sipity is an evolving modular workflow tool for Notre Dame’s library; And I hope others.

Presented at LDCX 2015

Jeremy Friesen

March 25, 2015
Tweet

More Decks by Jeremy Friesen

Other Decks in Technology

Transcript

  1. Introduction Jeremy Friesen Digital Library Frameworks Specialist University of Notre

    Dame [email protected] @jeremyfriesen github.com/jeremyf ndlib.github.io Presentation at http://goo.gl/4g44F4
  2. Sipity is a patron-oriented deposit interface into CurateND. At least

    that is what it started out as... Sipity is an evolving modular workflow tool for Notre Dame’s library; And I hope others. What is Sipity?
  3. But What Does Sipity Do? Sipity guides a group of

    collaborators: depositors, approvers, catalogers, etc., through the preparatory steps of depositing a work wortem PCDM work.
  4. Regardless of planning, our shared understanding of the workflow kept

    drifting The Workflow “planning poker warm up” https://www.flickr.com/photos/fsse-info
  5. As it drifted I had to keep updating the •

    working prototype • documentation I hate updating “what is happening” documentation Because I see the code as the authority on what is happening The Workflow “I said “I'm busy!”” https://www.flickr.com/photos/stitch
  6. The Workflow “Fortune Telling Wax Robot Gypsy Grandma 4296” https://www.flickr.com/photos/93779577

    No matter how hard our team tried, our understanding of what is needed for the workflow kept changing overtime. We needed to reduce the impact of those changes on our development process.
  7. The Workflow The workflow’s state machine – states, actions, guards,

    and permissions – are defined by several database entries. The diagram on the right is the state machine for our ETDs: $ rails runner scripts/processing_to_dot.rb > etd-workflow.dot $ open etd-workflow.dot
  8. The Workflow What happens for a given action is still

    defined within the code: • Required fields • Related data should be updated/changed • Who receives what notification ‡ ‡ This is moving to the database
  9. Users, Groups, Collaborators “Many mani” https://www.flickr.com/photos/roberto_ferrari Collaboration of Different Units

    • Individuals • Groups • Non-university individuals All at differing degrees of participation And at differing times
  10. Users, Groups, Collaborators No matter how hard our team tried,

    our understanding of what is needed for user permissions kept changing overtime. We needed to reduce the impact of those changes on our development process.
  11. Users, Groups, Collaborators “Actor” https://www.flickr.com/photos/47476117@N04 Enter stage left, the processing

    actor: A proxy for something that can participate in the workflow process of Sipity.
  12. Users, Groups, Collaborators “Boundary” https://www.flickr.com/photos/batiks In creating the processing actor,

    Sipity exposes a narrow interface to allow us to introduce our own: • User management system • Group management system • User’s that act on behalf of someone And swap in an upcoming new system
  13. The Design “Actor” https://www.flickr.com/photos/47476117@N04 No matter how hard our team

    tried, our understanding of what is needed keeps changing overtime. We need to reduce the impact of those changes on our development process.
  14. The Design “NYC - Queens - LIC: 5 Pointz -

    You're Entering a World of Pain” https://www.flickr.com/photos/wallyg We spent time looking at the pain points of our previous projects and collaborations. And I’d like to show you some of our reflections.
  15. The Design “Painful Stab Wounds Heal My Soul, I Beg

    for Mercy” https://www.flickr.com/photos/thirtyfootscrew Conjecture: That which is painful to test is painful to change. Therefore, reduce the pain in testing.
  16. The Pain Human vs. Machine Response What is the HTTP

    status? What is the message to send to the user?
  17. The Pain This is a far cry from Single Responsibility…

    It is the intersection of numerous disparate concerns.
  18. A Solution to the Pain “The Corner of Church and

    State” https://www.flickr.com/photos/wy_jackrabbit Decompose the Responsibilities
  19. The runner composes: - authentication layer - authorization layer -

    repository layer It is HTTP agnostic A Solution to the Pain
  20. We can dive deeper into the code if you are

    inclined? Or answer questions? Further Down the Rabbit Hole “Has he gone yet?” https://www.flickr.com/photos/jm999uk
  21. Thank You Jeremy Friesen Digital Library Frameworks Specialist University of

    Notre Dame [email protected] @jeremyfriesen github.com/jeremyf ndlib.github.io This presentation available at http://goo.gl/4g44F4