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
Sprints
2-week long sprints
schedule in 6-month phases
community developers
Weekly schedule
first Monday is sprint planning
stand-up meeting every day at 11am ET
every Thursday has technical community call
Thursday of second week is sprint wrap-up meeting
Friday of second week is tying loose ends
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
code coverage
code problem areas, or hotspots
total lines of code and complexity, etc
Background reading
jax-rs (jersey)
jcr