[xwiki-dev] [Proposal] New SVN directory structure to accommodate the different applications we have
Vincent Massol
vincent at massol.net
Wed Jun 13 10:08:50 CEST 2007
On Jun 13, 2007, at 1:39 AM, Sergiu Dumitriu wrote:
> I'm a bit tired right now, so I can't decide which one makes more
> sense. However, I have my own questions :)
hehe :)
> 1) How about the decision to move skins in a distinct place?
They are there in xwiki-platform/skins.
> 2) Where in the structure are the trunk/branches/tags defined?
> 3) Why are the xarlets inside the platform?
I think this is the most controversial issue as Stephane raised a
similar issue. See my answer there.
To summarize, in my proposal:
* platform = reusable bits
* platform != core
* platform = core + other reusable bits
That said, core isn't materialized in my initial proposal. For
example in plugins/ there are plugins that will be included in the
core and other plugins that won't be but which can be included by
applications for their distribution/needs. I'm not sure if we need to
materialized core but possibly.
> I'll be back with more when I'll be awake.
cool
Thanks
-Vincent
>
> On 6/12/07, Vincent Massol <vincent at massol.net> wrote:
>> Hi Stephane,
>>
>> Thanks a lot for your comments. See below.
>>
>> On Jun 12, 2007, at 9:56 PM, Stéphane Laurière wrote:
>>
>> [snip]
>>
>> > 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/)?
>>
>> The xwiki-applications all depend on the platform. I was viewing the
>> platform as providing the core infrastructure be it at runtime or at
>> build time.
>>
>> > 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?
>>
>> They are reusable xarlets and as such, like plugins or component
>> jars, they can be reused by the xwiki applications.
>>
>> Maybe our differences of view is that you view the platform as only
>> JARs whereas I view the platform as providing all the pieces required
>> by applications to be built upon (build tools, components, UI pieces,
>> etc). Application are end products for me.
>>
>> > I have also this question: should we really distinguish in the
>> > structure
>> > between the concepts of plugins, xarlets and xwiki-applications?
>>
>> They are different right now. In the future, hopefully everything
>> will be a component.
>>
>> > 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?
>>
>> Stephane I think you're jumping ahead about 6 months to 1 year... ;)
>> This is indeed what we want but we're far from there and the
>> structure I'm proposing is for now with the ability to evolve to
>> something else in the future. Right now it means these blogging
>> features will be split between xwiki-platform/plugins/blog and xwiki-
>> platform/xarlets/blog.
>>
>> Regarding the evolution, 2 possibilities:
>> - the blogging features are components meant to be reused by
>> applications. In this case they can go in the platform which will
>> then offer blogging features for applications
>> - the blogging features are not meant to be reusable and embedded in
>> xwiki applications. They form a standalone blogging application and
>> should be located in xwiki-applications.
>>
>> If I follow your direction, then everything is potentially an
>> application and the platform becomes the core. I'm viewing the
>> platform as core + reusable components and I differentiate between
>> reusable components and end applications (products if you prefer). I
>> wouldn't mind:
>>
>> xwiki/
>> |_ xwiki-core/
>> |_ xwiki-components/ (or whatever you want to call it)
>> |_ xwiki-applications/
>>
>> But my preference currently goes to what I proposed:
>>
>> xwiki/
>> |_ xwiki-platform/
>> |_ xwiki-core/
>> |_ xwiki-components/
>> |_ xwiki-applications
>>
>> > 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?
>>
>> I've put 1) in xwiki-platform/ and 3) in xwiki-applications/. For 2),
>> my proposal also puts them in 1) as they are reusable pieces.
>>
>> > 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?
>>
>> web/gwt is offering an API for developing applications. The IDE
>> extension is a client/application using the XWiki API. It's not like
>> we're offering an Eclipse API for people to build Eclipse
>> applications that interact with XWiki.
>>
>> > 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
>>
>> Re the UIs I'm fine but I think we should wait till we have more UIs
>> before creating a deep structure. For now we only have web UIs which
>> is why I put the web/ directory.
>>
>> > |_ plugins: only the platform core plugins: image, packaging,
>> > fileupload, zipexplorer, but not: flickr, graphviz, ...
>>
>> Where would you put the flickr/ and graphviz/ plugins? I'd still put
>> them in xwiki-platform as they are reusable for xwiki-applications.
>>
>> > xwiki-applications
>> > ==================
>> > /svnroot/xwiki/xwiki-applications/
>> > |_ xwiki-blog
>> > |_ wiki
>>
>> xwiki-blog is not an application. It's not runnable. It's a component
>> that can be integrated into an application.
>>
>> For me the definition of an Application is:
>> * A set of plugins
>> * A set of components (JARs)
>> * A set web pages (velocity templates, etc)
>> * A set of xwiki documents in a database
>> * All this inside a configured container
>> * An application distribution is a zip/exe/tar.gz
>>
>> I'd agree with xwiki-blog as an application if we were delivering a
>> standalone blogging application but that's not the purpose of the
>> blog xarlet (it's meant to be used as a component by xwiki
>> applications) as it exists as we're not making a product out of it
>> (at least no yet).
>>
>> > |_ xwiki-calendar
>> > |_ plugins/
>> > |_ com.xpn.xwiki.plugins.CalendarPlugin
>> > |_ wiki/
>>
>> Same as for the blog.
>>
>> > |_ xwiki-enterprise-manager
>> > |_ wiki
>> > |_ web
>> > |_ distribution
>> > |_ xwiki-watch
>> > |_ xwiki-concerto
>> >
>>
>> [snip]
>>
>> Thanks for this interesting POV! :)
>>
>> Let's see what Sergiu, Ludovic and the others say.
>>
>> Thanks
>> -Vincent
>>
>
> Sergiu
> --
> http://purl.org/net/sergiu
>
> --
> You receive this message as a subscriber of the xwiki-
> dev at objectweb.org mailing list.
> To unsubscribe: mailto:xwiki-dev-unsubscribe at objectweb.org
> For general help: mailto:sympa at objectweb.org?subject=help
> ObjectWeb mailing lists service home page: http://www.objectweb.org/
> wws
More information about the devs
mailing list