Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Warning

These training archives may be out of date, but have been retained and kept available for the community's benefit in reviewing previous sessions.

Current training documentation can be found here: Training

Table of Contents

Learning outcomes

  1. Communicate value of cross-institutional collaboration process
  2. Feel comfortable getting involved in development sprints
    • What are minimum requirements
  3. Be able to articulate technology stack and tools
  4. 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 

      ...

        • Jetty and

      ...

        • Tomcat, or one-click

      ...

        • Deployed as a war

      ...

      jersey library

      • Configuration via 
        • Configuration files
        • System

      ...

        • -properties
        • Repository objects/resources

      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

      ...

      https://github.com/fcrepo4-labs

      Git process

      standard

      • Standard: fork the codebase, commit to a branch, send PR

      ...

      • Facilitates collaboration

      Application stack

      Top - Fedora webapp

      ...

      • Adds preservation and access sensibilities
          linked
          • Linked data,
          ldp
          • 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

            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)

            jax-rs (jersey)

            jcr

            infinispan

            modeshape

            maven

            git-flow

            guava

            wiki - process, documentation, roadmapjcr