Applied Agile and
Open Source Development
June 18, 2021
Glen Horton | Sean Crowe
Azeez Olanrewaju
University of Cincinnati Libraries
Application Development Unit
## Culture
* Open Source
* ICLAs
## Samvera Stack
Separation of concerns with best of breed components
[*hydra stack - hierarchy of promises*](https://wiki.duraspace.org/display/hydra/Hydra+Stack+-+The+Hierarchy+of+Promises)
## Local team
Glen Horton, Team Lead
Thomas Scherz, Senior Developer
Sean Crowe, Digital Analyst & Developer Librarian
Lisa Haitz, Developer
Azeez Olanrewaju, Dev Ops Engineer
### Libraries
* Developers
* Librarians
* Co-ops
## Library IT
* Servers
* System administration
## Scholar/Hyrax
Self-submission repository responsive to University research and instruction community.
Scholar@UC - [https://scholar.uc.edu](https://scholar.uc.edu)
## Hyrax
Gem created by Penn State and developed in consortium including UC
## Scholar@UC features
* DOIs
* Single sign-on
* License wizard
* Bulk ingest
* Branding
## Governance
* Digital Repository Taskforce and working groups
* Product ownership: task force > individuals
## History
* Digital Repository Task Force; Winter, 2013
* Scholar@UC campus-wide rollout; Fall, 2015
## 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.
Done looks like...
Goal is to express testable system behavior in a management-friendly format.
Agile Development (in practice)
How our team applies everything we just covered
Scrum
Roles
Project Manager / Service Manager
Product owner team
Scrum Master / Development Team
Software Development Workflow
2-3 week Sprints
Stand-ups every day or two
With a bi-weekly swarm to address heavier topics
Sometimes with product owner participation in planning
Software Development Workflow Details
It begins with sprint planning
Collaborate, communicate, and code
Open pull request
Tests all pass, someone else reviews the branch
Reviews include automated style review
It ends with sprint wrap-up
Demo for product owners
###Artifacts
The [product backlog](https://github.com/uclibs/ucrate/issues) and the [sprint milestones](https://github.com/uclibs/ucrate/milestones?state=closed)
Requirements
For us, this essentially means developing issues
(Our old method)
A librarian Early Adopter Working Group worked with faculty across UC to conduct focused sessions
and they passed notes to the Use Cases Working Group, which developed stories
and then the Use Case Working group would meet with the development team to analyze the stories and open issues.
[Use Case Repository](https://github.com/uclibs/scholar_use_cases)
Requirements
For us, this essentially means developing issues
(Our improved method!)
Our product owner team meets to identify and discuss potential issues
With support from the scrum master and project manager, issues are moved through several stages of review.
Issues are then formalized and passed to the development team via Github.
[Use Case Workflow Board](https://trello.com/b/IRACCuwi/use-cases)
## Code and Virtual Machines
Application Development Team (the Dev)
Library IT (the Ops)
and the glue between.
## Dev Ops Responsibilities
+ Design
- provide stack scalability
- prepare for disaster recovery
- tune application performance and user experience
+ Maintenance
- system notifications
- log purging and rotation
- security maintenance
## Why Devops?
breaks down silos
good for agile
reduces bottlenecks and errors
faster (continuous?) delivery
cost management
## DevOps Lifecycle / Phases
Continuous Development
Continuous Integration
Continuous Testing
Continuous Feedback
Continuous Monitoring
Continuous Deployment
Continuous Operations
## Quality Assurance
(specs, manual testing, penetration testing)
Questions?
[uclibs.github.io/applied-agile-and-scholar](https://uclibs.github.io/applied-agile-and-scholar)