Rifidi roadmap

From RifidiWiki

Revision as of 19:53, 30 April 2008 by Kyle (Talk | contribs)

(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search

This page discusses some long range plans for the Rifidi project.

Current State

Currently, the Rifidi products (Designer, Tag Streamer, and Emulator) are three totally separate software packages with little code reuse (except for readers) and loose coupling integration. Functionality is separated into osgi plugins, but code is not being developed with the service-oriented paradigm that osgi provides. this causes several problems:

  • Three Separte Development Cycles for Rifidi Designer, Tag Streamer, and Emulator
    • Version Numbers apply only to releases, not to underlying services provided by osgi plugins
    • too much code is copied and not shared
  • There is alot of functionality that is not separated into plugins
    • Stable code mixed with development code
    • If only one small part of a class changes, the whole plugin has to be updated
  • Rifidi is missing an eclipse-like 'update' functionality

As a result, we end up with three separate, but related projects that are loosely-coupled

Solution through Service Oriented Architecture

In order to tie the three products closer together, we should use the services-oriented design that osgi allows for. We can achieve this by following the following best practices:

  • Functionality needs to be separated into services (i.e. plugins).
  • osgi plugins should be versioned separately from releases. We can do this in the manifest file of the plugin
  • Each bundle should have a maintainer. This can also be specified in the plugin's manifest.
  • The most important idea is that Rifidi should be treated as one application with several possible ways of assembling functionality.

Rifidi As Single Application

If Rifidi is a single application, it gives several benefits:

  • Single Installer There can be a single, small Rifidi Installer that allows users to install the Rifidi functionality that they want. For example, once they have the base application running, they can choose to install the 'designer' packages or the 'tag streamer' pacakges.
  • Update Functionality When a user wants the latest version of the code, he can update the application, which will install only the latest osgi plugins instead of having to download the whole rifidi application again