Hi Vincent,
Sounds good to update the SVN structure for addressing the growing
complexity :-)
Here are below some questions and suggestions.
Vincent Massol wrote:
Hi,
Note: This email supercedes all my other proposals on the SVN directory
structure.
The rationale for this mail is that we're starting to have lots of
applications built on top of the xwiki platform: XWiki Enterprise
(default wiki), XEM, Watch, Curriki, Chronopolys, etc. We need to
accomodate them in our directory structure.
Top level structure
===============
/svnroot/xwiki/
|_ xwiki-platform/
|_ xwiki-applications/
|_ xwiki-enterprise/
|_ xwiki-enterprise-manager/
|_ xwiki-watch/
|_ curriki/
|_ chronopolys/
|_ xwiki-extensions/
|_ xwiki-eclipse/
|_ xwiki-concerto/
|_ sandbox/
where:
* xwiki-platform is the xwiki platform on which all the applications are
built.
* xwiki-applications are applications that extend the platform with:
skins, xwiki pages (XAR), plugins
* xwiki-enterprise is the name of our previously known "default wiki"
application.
* xwiki-extensions are any other extensions of xwiki not fitting in
xwiki-applications. For example the XWiki Eclipse integration, etc. I've
put concerto there but I'm not sure what it'll look like.
Definition of xwiki-platform
=====================
/svnroot/xwiki/xwiki-platform/
|_ tools/
|_ core/ (JAR)
|_ plugins/ (JARs)
|_ skins/ (ZIPs)
|_ dodo/
|_ finch/
|_ albatross/
|_ web/ (WARs)
|_ gwt/
|_ standard/
|_ xarlets (XARs)
|_ selenium/
|_ blog/
|_ calendar/
|_ ...
where:
* tools/ contains tools used to build the platform and xwiki applications
If they are used both by the platform and the applications, shouldn't we
put the "tools" folder at the root level (/svnroot/xwiki/tools/)?
Regarding the xarlets: why should they be considered as part of the
platform? They build upon the platform, but they are rather extensions
of the platform than part of it, aren't they?
I have also this question: should we really distinguish in the structure
between the concepts of plugins, xarlets and xwiki-applications? They
have a different nature indeed, but won't splitting them into different
folders make the life of developers more complex? If I write a
BlogTrackBackPlugin that does some specific stuff with blogs, where will
I put it in the repository? It should probably go to the "blog xarlet",
which then contains xwiki-documents + Java classes. Isn't it likely that
our xarlets, or at least some of them will evolve to full-fledged
"applications" that will use all the XWiki concepts? Along the same
lines, won't we have plugins that will have their xwiki-documents?
If this happens, we can of course let the xarlet become an application
and move it in the repository, but we may then consider putting plugins
and xarlets in the xwiki-application folder, and distinguish between the
following concepts not at the repository structure level but only at the
deployment API and configuration levels:
1) application that contains only documents ("xarlet"): can be installed
on any xwiki instance
2) application that contains plugins and possibly other Java classes,
and possibly some xwiki documents (could be dubbed "xwiki application",
"xwiki plugin" or "xwiki extension"?): can be installed on any xwiki
instance, but it requires a restart of the application server
3) application that contains Java classes, xwiki documents and other
contents: need specific deployment. -> "xwiki product"?.
What do you think?
Regarding the extensions you mention: I don't understand why we wouldn't
consider xwiki-eclipse as part of the platform: how is it different from
the /xwiki-platform/web/gwt?
Here 's a modified tree to summarize my suggestions:
xwiki-platform
==============
/svnroot/xwiki/xwiki-platform/
|_ core for now
|_ xwiki-model, xwiki-storage etc. in the future
|_ webapp
|_ gwt
|_ standard
|_ xwiki-platform-ui (the components below may be moved to the
component level in the future, i.e. would be at the same level as
xwiki-model etc.)
|_ eclipse-ui
|_ flex-ui
|_ xul-ui
|_ web-ui-standard
|_ templates
|_ skins
|_ gwt
|_ plugins: only the platform core plugins: image, packaging,
fileupload, zipexplorer, but not: flickr, graphviz, ...
xwiki-applications
==================
/svnroot/xwiki/xwiki-applications/
|_ xwiki-blog
|_ wiki
|_ xwiki-calendar
|_ plugins/
|_ com.xpn.xwiki.plugins.CalendarPlugin
|_ wiki/
|_ xwiki-enterprise-manager
|_ wiki
|_ web
|_ distribution
|_ xwiki-watch
|_ xwiki-concerto
my .2 Xcents
Stéphane
* xarlets/ contains independent xwiki apps (we need a
word better than
xarlets and different than applications which we should reserve for
things like curriki, xwiki enterprise, xem, etc) that can be installed
in any running xwiki app
* In the future core/ will be replaced with:
|_ components/ (JARs)
|_ xwiki-model/
|_ xwiki-storage/
|_ ...
* In the future web/ will be replaced with UI components (see the UI
proposal for more)
Definition of xwiki-enterprise/
=======================
/svnroot/xwiki/xwiki-applications/xwiki-enterprise/
|_ wiki/
|_ distribution/
|_ distribution-test/
where:
* wiki/ contains the xar pages
Generic definition of an xwiki-application/
=================================
/svnroot/xwiki/xwiki-applications/<app name>/
|_ wiki/
|_ web/ (optional)
|_ plugins/ (optional)
|_ skin/ (optional)
|_ distribution/
|_ distribution-test/
For example for xwiki-watch/:
/svnroot/xwiki/xwiki-applications/xwiki-watch/
|_ wiki/
|_ web/ (the gwt stuff)
|_ distribution/
|_ distribution-test/
I think this pretty much includes everything we currently have in SVN.
WDYT?
Thanks
-Vincent
--
Stéphane Laurière
slauriere(a)xwiki.com
XWiki Research
http://www.xwiki.com
http://concerto.xwiki.com
http://nepomuk.semanticdesktop.org