Hi devs,
While working on a UI feature that makes use of skin extensions (both
script and style), I was faced with a difficult choice: where to put
these extensions?
The difficulty comes from several factors:
- This is a small feature that doesn't deserve its own application
- Yet, it does not fit in any of the existing applications
- I don't want to put the js and css in Albatross, as it was done until now
- Resource-based extensions are not as flexible as document-based ones,
and I'd still need a .jar module to stick them to.
Since this is just the first in a long series of such small extensions,
leading to a simpler and more modular skin mechanism, I think we should
take a decision.
A while back, when designing Interface eXtensions, I also proposed
Interface Components, which is exactly what I would like to do (as the
packaging, since the code is already structured like a component). See
http://dev.xwiki.org/xwiki/bin/view/Design/InterfaceExtensions#HAfterwards
So, the choices are:
1. Stick to the past and put the code in Albatross, registering it in
platform-web/javascript.vm and stylesheet.vm.
2. Put the files as resource skin extensions inside xwiki-core.
3. Force the documents into an existing application, for example
administration or enterprise-wiki.
4. Create a new application for holding Interface Components.
5. Create a new application for each IC.
Currently, my preference is +1 for 5, with a +0 for 4 and -1 for the
rest. Here's some of my motivations:
Going further, since there are no objections, I propose the following
structure:
- platform
- skins
- albatross
- toucan
- components (pom id = xwiki-skin-components)
- attachments (pom id = xwiki-skin-attachments)
- jump
- suggest
The packaging for components is XAR, and they are declared as
dependencies in products (enterprise/wiki/pom.xml).
--
Sergiu Dumitriu