This post is cross-posted to the Wookie and Rave in  Context project
lists. Rave in Context is a short term project I am working. The goal
of that project is to create a set of usable and accessible widget
templates for common functionality such as login, result list search
and browse and data entry. The Rave part in the title is there because
our final deployment platform will be Rave (and yes, that means I have
to integrate Wookie and Rave).

I want to bring the templating functionality into Wookie itself. The
Rave in Context project is short lived and I want its outputs to live
beyond the project itself. Consequently I want to do the design and
development in the Wookie project if the community is interested
(there is no Rave in Context community and we have no intention of
building one).

Here's my rational for offering the code to Wookie:

The template system that I built so far in Wookie is really just a set
of demonstration widgets. You create a widget then edit it to make it
do what you need. Each widget needs to be maintained independently,
which can be time consuming and error prone.

The Rave in Context widgets need to be built from a common set of
templates so that they can all be updated quickly and cheaply. The
goal is for all the widgets to have the same look and feel. Since the
templates themselves will focus on usability, learnabilty and
accessbility this means that we will have a high quality set of
templates from which to build W3C widgets.

I've begun work and have a very simple templating system up and
running [1]. It is a long way from complete, but already we can define
a widget simply by creating a properties file such as:

ric.template.name=home
ric.widget.shortname=myExperiment
ric.widget.name=myExperiment Mobile
ric.widget.description=myExperiment makes it easy to find, use and
share scientific workflows and other Research Objects, and to build
communities.
ric.widget.help=<p>There is no help for this widget at present, please
contact the <a href="http://wiki.myexperiment.org/";>myExperiment
community</a> for support.</p>

Then by running "ant generate-widgets" we generate the widget
described by the properties file (along with any others that have been
defined).

Clearly this is very limited right now. There is currently no ability
to significantly customise the generated widget. For example, at
present all the widgets generated have examctly the same login/signup
buttons. Even worse they will all have the myExperiment action buttons
(which are only appropriate to myExperiment widgets).

My next development goal is to use a templating engine to allow for
widget customisation. I'm thinking of Apache Velocity at present, it's
old but it is simple and it works, at a later date we could introduce
more complex systems to do really cleaver stuff, but for now I just
want to make it work.

Once implemented widget definitions will be able to define something like:

ric.login.enabled=false
ric.widget.content=content.vm

Where content.vm is a template that is included in a predefined
location in the template and ric.login.enabled indicates whether the
login buttons should be included. Now we have truly individual widget
but with a consistent look and feel.

My question to the Wookie list is "do you want to see this work in the
scratchpad area of Wookie rather than in it's current invisible home
at Rave in Context".

I'd be thrilled if people here wanted to help develop the code, but
I'm very happy to drive this forwards myself and welcome feedback and
suggestions along the way. I won't get any of that in the Rave in
Context project so I want to bring it here early.

Ross

[1] If anyone wants to have a look at how it works then run an
instance of Wookie, checkout the code at [2] and do "ant
generate-test-widgets" then look in your Wookie widget gallery for the
Rave in Context logo.

[2] http://code.google.com/a/apache-extras.org/p/rave-in-context/source/checkout

-- 
Ross Gardler (@rgardler)
Programme Leader (Open Development)
OpenDirective http://opendirective.com

Reply via email to