up to all Development Components for VIVO 1.5

Component description

Work to evaluate and prepare for a modularity framework for Vitro.
This framework should facilitate the creation and use of optional features in Vitro (extensions),
and the easy configuration of Vitro to use alternate implementation of core functionality (modules)
at configuration time. The framework will be based on OSGi.

Scope of the component for v1.5

In scope:

  • Modules and extensions that are:
    • part of the VIVO (Vitro) webapp under Tomcat,
    • running in the JVM,
    • written in any language that executes as Java bytecode (JRuby, Scala, Groovy, etc.)

Out of scope:

  • Connecting to external applications/processes (Drupal, Facebook, etc.)

Design work needed for the component

This framework needs to be designed from the ground up. How will we introduce OSGi into Vitro, and Vitro into OSGi? How should Vitro be segmented into bundles and services?

In order to prevent this change from being debilitating to developers, we also will need to research and document the processes they will use for developing, testing, and debugging in this new way of working.

Can this component be addressed in stages?

This needs to progress along three parallel tracks: learning, implementing, and documenting.

Learning

 

Task

Depends On

Time

L1

Learning about OSGi

 

10 days (1 person spending 4 days, 2 people spending 3 days each)

Implementing

 

Task

Depends On

Time

I1

Install and demonstrate a minimal implementation of Sling Launchpad

 

3 days

I2

Modify Vitro to include 1 OSGi-based module (not a servlet)

  • Perhaps the File Storage system, slightly refactored to give a minimal interface.
  • This will not occur in the Vitro trunk, but how will it appear? A branch? A separate repository? What are best practices for including components into a project?

L1, I1

5 days

I3

Modify Vitro to include 1 OSGi-based extension (servlet and accessories)

  • Perhaps the RevisionInfo, perhaps something more ambitious

L1, I1

5 days

I4

Create a list of candidates for modularity

  • Perhaps start with the items that are available through the ServletContext, converting to services that are available from the OSGi ServiceRegistry.

L1

2 days

I5

Adapt the build process to accommodate modules and extensions.

L1, I2, I3

5 days

I6

Re-assess

  • Are we on the right path?
  • How do we move forward?
  • Incremental transition or complete conversion?
  • Create a road map

L1, I1, I2, I3, I4

6 days

Documenting

 

Task

Depends On

Time

D1

Overview documents

  • How Vitro is structured around OSGi, what are the interfaces, services, etc.?
  • The road map for completing the transition.

L1, I6

3 days

D2

Recipes for developers to use

  • How to set up in Eclipse,
  • How to check out from Subversion
  • How to create a new module
  • How to debug in Eclipse

L1, I6

4 days

D3

Recipes for implementers

  • Installation guide
  • Upgrade guide

L1, I6

4 days

Dependency on any other component

None.

A suggested incremental plan

The work listed above should be completed by the time that version 1.5 is released, even though none of it will be incorporated into that release.

We should be ready to incorporate the framework into the beginning of the version 1.6 development cycle.

  • No labels