Applied Agile and
Open Source Development

Sean Crowe / Glen Horton / James Van Mil

University Libraries
Digital Collections and Repositories

## Background
## Culture * Open Source * ICLAs
## Hydra Stack Separation of concerns with best of breed components [*hydra stack - heirarchy of promises*](https://wiki.duraspace.org/display/hydra/Hydra+Stack+-+The+Hierarchy+of+Promises)
## Local team
### Libraries * Developers * Librarians * Co-ops
## IT@UC * Servers * System administration
## Scholar/Curate Self-submission repository responsive to University research and instruction community. Scholar@UC - [http://scholar.uc.edu](http://scholar.uc.edu)
## Curate Gem created by Notre Dame and developed in consortium including UC
## Scholar@UC features * DOIs * Collections * Authentication
## User groups & Task forces * Digital Repository Taskforce * Early Adopters Working Group * User Stories Working Group * Metadata Working Group
## History
* Digital Repository Task Force; Winter, 2013 * Scholar@UC campus-wide rollout; Winter, 2016
## Ruby/Rails culture * Convention over configuration * MVC * DRY

Agile Development

*Agile software development is a set of principles for software development in which requirements and solutions evolve through collaboration between self-organizing, cross-functional teams.* [(Wikipedia)](https://en.wikipedia.org/wiki/Agile_software_development)

This means:

Not planning the project milestones from the end-to-end...

A lot of communication throughout the project.

Scrum

Roles

Product owner, Scrum Master, Development team.

Workflow

A short "sprints" of development, usually a week or two, with daily "stand-ups", followed by communication and reflection.

Artifacts

The product backlog, and the sprint backlog.

Requirements

Requirements are best assembled and documented through conversation, to establish shared understanding functionality

User Story Mapping is an example of this kind of conversation. ([Here's a good book](http://uclid.uc.edu/record=b5957838) on that topic) This process generates a map of workflow, with user roles, which can be used to create the backlog.

User stories

Descriptions of functionality that use business-language to capture what a user needs to do to complete a task.

Formatted as, for example:

As a user-type, I want to function, so that benefit.

Goal to to express testable system behavior in a management-friendly format.

Agile Development (in practice)

How our team applies everything we just covered

Scrum

Roles

  • Product owner committee
  • Scrum Master / Development Team

  • Workflow

  • 2-3 week Sprints
  • Stand-ups 3 times a week (which also serve as department meetings)
  • With a weekly swarm
  • Followed by sprint wrap-up
  • With bi-weekly product owner committee meetings
  • More on Workflow

  • It begins with sprint planning
  • Create local branches with git
  • Collaborate, communicate, and code
  • Push branch, to Github, and open pull request
  • Tests all pass, someone else reviews the branch
  • It ends with sprint planning
  • ###Artifacts The [product backlog](https://github.com/uclibs/scholar_uc/issues) and the [sprint backlog](https://huboard.com/uclibs/scholar_uc)

    Requirements

    For us, this essentially means developing issues

  • A librarian Early Adopter Working Group works with faculty across UC to conduct focused sessions
  • and they pass notes to the Use Cases Working Group, which develops user stories
  • and then the Use Case Working group meets with the development team to analyze the stories and open issues.
  • [Use Case Repository](https://github.com/uclibs/scholar_use_cases)

    UC Libraries (the Dev) cream filling IT@UC (the Ops)
    ## Why Devops? breaks down silos good for agile reduces bottlenecks and errors faster (continuous?) delivery
    ## Infrastructure Automation (Ansible, Puppet, Chef)
    ## Containers (Docker, Vagrant)
    ## Continuous Integration (Bamboo, Jenkins, Travis)
    ## Quality Assurance specs and manual testing penetration testing
    ## Production Deployment Change Management

    Questions?

    [uclibs.github.io/applied-agile-and-scholar](https://uclibs.github.io/applied-agile-and-scholar)

    [github.com/crowesn](https://github.com/crowesn)

    [github.com/hortongn](https://github.com/hortongn)

    [github.com/jamesvanmil](https://github.com/jamesvanmil)