Learning outcomes
- Communicate value of cross-institutional collaboration process
- Feel comfortable getting involved in development sprints
- What are minimum requirements
- Be able to articulate technology stack and tools
- Know where to look for more details
Sprints
- 2-Week long sprints
- Scheduled in 6-month phases
- All community developers
Weekly schedule
- A standard scrum approach is taken
Agile/Scrum terms
- Daily stand-up
- Product and Sprint backlogs
- Scrum
- Sprint
- Sprint planning
- Sprint retrospective
- Velocity
Support tools
Pivotal Tracker
- Bug tracking system
- Tightly tied with git commits
- Ticket flow/process
Travis-CI
- Basic sanity build on each commit
Jenkins
- Continuous integration build server
- Publishes snapshot build artifacts to sonatype
- Publishes code-coverage and stats to sonar
Sonar
- Dashboard of codebase health
- Test code coverage
- Code problem areas, or hotspots
- Total lines of code and complexity, etc
The basics
Java7 webapp
Fedora is a standard Java7 web-application that
jetty and tomcat, or one-click
deployed as a war
jersey library
most of the configuration via system-properties
Maven3
build tool
manages library dependencies, build artifacts, code formatting, integration tests, release signing and deployment, code-coverage, etc
release artifacts are deployed to maven-central
Github
Main F4 codebase
core of f4
fcrepo4
Other important projects
ontology
fcrepo-jms-indexer-pluggable
fcrepo-module-auth-rbacl
fcrepo-module-auth-xacml
fcrepo-build-tools
fcrepo-sample-dataset
Experimental projects
https://github.com/fcrepo4-labs
Git process
standard
fork the codebase, send PR
<link>
Application stack
Top - Fedora webapp
adds preservation and access sensibilities
- linked data, ldp abstraction
Middle - JCR implementation
Modeshape - open source jcr reference implementation
<jcr spec>
Bottom - Storage/Caching
Infinispan - open source java caching and persistence
foundation of clustering that is exposed through the stack
Background reading
jax-rs (jersey)
jcr