Applied Agile and
Open Source Development
Sean Crowe / Glen Horton / James Van Mil
University Libraries
Digital Collections and Repositories
## 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)
### 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)