Integrating Component Repositories


There's been some talk about marketing Tapestry on the tapestry-user mailing list. I've been thinking about how the palette can be modified to make discovering and installing third party component libraries an integral part of the development cycle.

I've had to figure out how the Eclipse Plugin Update Site project structure works to implement the update site for the Tapestry Palette plugin. I'd like to implement something similar for discovery and download of Tapestry component libraries into Tapestry projects.

This feature would give a developer access to third party component libraries at remote sites from within Eclipse

A user would be able to add a URL for a 'Tapestry Component Library Update Site' to a list of such locations. The update site would consist of a site.xml file with details of the component library including:

A title
A description
A preferred namespace name for the library (e.g. 'contrib')
A URL for the library JAR file
A version number for the library.
A URL pattern for the component library documentation
A list of components in the library, assigned to named categories
Author/Credits, etc.
A list of Tapestry versions supported.


The palette can then download the site.xml, use the information, including the categories to display what's in the library and offer the user the option of adding the library to the project. If the user chooses the option the library will be added to the Tapestry application specification and to the Eclipse project dependencies and be available from the palette tree to be dragged into pages and components in the application.

The documentation URL pattern would be used to access the component reference documentation from the ? button in the palette component inspector just as it works for the framework and contrib libraries.

If the palette downloads all of these libraries to a folder outside of the Eclipse workspace they can then be automatically added to new Tapestry projects.
The palette can use the update site URLs to check for updates to the library and notify the user of updates and bug-fixes.


There's lots more to think through:

I'd like to be able to display component descriptions in the palette in i18n, right now I'm taking them from the component specification files and they are in one language only

A central repository of library update sites would allow the palette to provide the user with a list of libraries without the user having to enter any URLs.

The palette would be able to prune the list, or warn the developer when components are used which do not support the version of Tapestry in use.

If the update site information is comprehensive the palette can offer a search feature to find out if there is a third party component available that does what the developer wants without having to implement from scratch.


Any comments?



Posted: Sun - November 14, 2004 at 07:09 PM  :    :    :   :   :   :   : 


©