Applied Agile and
Open Source Development
Sean Crowe / Glen Horton / James Van Mil
* Open Source
## 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)
* System administration
Self-submission repository responsive to University research and instruction community.
Scholar@UC - [http://scholar.uc.edu](http://scholar.uc.edu)
Gem created by Notre Dame and developed in consortium including UC
## Scholar@UC features
## User groups & Task forces
* Digital Repository Taskforce
* Early Adopters Working Group
* User Stories Working Group
* Metadata Working Group
* Digital Repository Task Force; Winter, 2013
* Scholar@UC campus-wide rollout; Winter, 2016
## Ruby/Rails culture
* Convention over configuration
Digital Collections and Repositories
*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)
Not planning the project milestones from the end-to-end...
A lot of communication throughout the project.
A short "sprints" of development, usually a week or two,
with daily "stand-ups",
followed by communication and reflection.
The product backlog,
and the sprint backlog.
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.
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
Product owner committee
Scrum Master / Development Team
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
The [product backlog](https://github.com/uclibs/scholar_uc/issues) and the [sprint backlog](https://huboard.com/uclibs/scholar_uc)
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)
IT@UC (the Ops)
## Why Devops?
breaks down silos
good for agile
reduces bottlenecks and errors
faster (continuous?) delivery
## Infrastructure Automation
(Ansible, Puppet, Chef)
## Continuous Integration
(Bamboo, Jenkins, Travis)
## Quality Assurance
specs and manual testing
## Production Deployment