Hi

2013/10/17 Eduard Moraru <[email protected]>

> Hi,
>
> On Wed, Oct 16, 2013 at 12:18 PM, Guillaume "Louis-Marie" Delhumeau <
> [email protected]> wrote:
>
> > Hi Edy
> >
> >
> > 2013/10/11 Eduard Moraru <[email protected]>
> >
> > > Hi,
> > >
> > > On Thu, Oct 10, 2013 at 11:46 AM, Guillaume "Louis-Marie" Delhumeau <
> > > [email protected]> wrote:
> > >
> > > > Hi Eduard,
> > > >
> > > >
> > > > 2013/10/9 Eduard Moraru <[email protected]>
> > > >
> > > > > Hi,
> > > > >
> > > > > On Tue, Oct 8, 2013 at 4:41 PM, Guillaume "Louis-Marie" Delhumeau <
> > > > > [email protected]> wrote:
> > > > >
> > > > > > Thanks for all your answers.
> > > > > >
> > > > > > I continue to iterate until we reach something nice. You can see
> > the
> > > > work
> > > > > > there:
> > > > > >
> > > > > >
> > > > >
> > > >
> > >
> >
> https://github.com/gdelhumeau/xwiki-platform/tree/feature-wiki-properties-group/xwiki-platform-core/xwiki-platform-wiki/xwiki-platform-wiki-api/src/main/java/org/xwiki/wiki
> > > >
> > >
> > > Side note: I`ve noticed that you have 2 branches where you work, both
> > > feature-wiki-properties-group that you`ve linked to now and
> new-wiki-api
> > > that you`ve linked to in the initial post. Please use only one since
> it`s
> > > already quite confusing and hard to follow.
> > >
> > >
> > > > > >
> > > > > > I think my mistakes until now was the fact that I didn't want to
> > > > deviate
> > > > > > too much from the wiki-descriptor module of Vincent. But now, I
> > > > > understand
> > > > > > it is better to make something new.
> > > > > >
> > > > > > Now, the API has a complete javadoc.
> > > > > >
> > > > > > = Modularity =
> > > > > > == Reduce responsibility ==
> > > > > >
> > > > > > The first advantage of creating several modules is to reduce the
> > > > > > responsibility of each module. I want one API to handle the wiki
> > > > creation
> > > > > > and basic management, one API for the template feature (which
> could
> > > be
> > > > > > optional as soon as we have flavors),
> > > > >
> > > > >
> > > > > This transition will most certainly require some considerable
> > > refactoring
> > > > > and possibly some method deprecating, for which we already have a
> > > > strategy,
> > > > > at least for the workspaces UI.
> > > > >
> > > >
> > > > Currently, the workspaces UI is a kind of a hack.
> > > WorkspaceManager.Install
> > > > create a new template where we install a standard XAR UI + Workspace
> > > > Template Feature (that overwrites some standard pages) + delete some
> > > pages
> > > > that we don't need, etc... It forces us to ask the user to create
> > > > workspacetemplate first, it does not work out of the box.
> > >
> > >
> > > Neither does wiki manager work out of the box. The current technical
> > > limitations require that the user first creates a template wiki that is
> > > used in the creation of new wikis/workspaces.
> > >
> >
> > Yes, and it is bad, IMO. Today, we have the Distribution Wizard which is
> > launched the first time we go to the wiki. There is no reason to force
> > having a template anymore.
> >
> >
> > >
> > >
> > > > And we need to
> > > > have 2 distinct XARs to handle the 2 use-cases: farm and workspaces.
> It
> > > is
> > > > definitively not clean.
> > > >
> > > > When talking with Vincent about this, we decided that it would be
> > better
> > > to
> > > > create a unique XAR that handle the 2 use-cases.
> > >
> > >
> > > But again, this does not fix the "out-of-the-box" issue.
> > >
> > >
> > > > It will just look at the
> > > > wiki configuration to know if we have local users or not, what is the
> > > > membership type of the wiki, etc...
> > > >
> > >
> > > The idea was that an admin could come with his own customized XAR that
> > > would then be "adapted" to be used as a workspace template, if the
> admin
> > > did not already do that. It was not desired that the user be limited to
> > the
> > > standard XE xar, since that would have been rather easy to implement
> and
> > > automatically "install".
> > >
> > >
> > About the ability to create a template that is automatically "adapted" to
> > be a workspace template, I have the feeling that there are more drawbacks
> > than benefits:
> > - it's too complex
> > - it is useless for the majority of users
> > - the wiki creation does not work out of the box
> > - we have to write documentation about this...
> > - If a user wants to create his own customized XAR, he can start from the
> > default we provide
> >
>
> You also need to be aware that when this application (workspaces) was
> developed, it was to be developed as an addon. Even the minor and almost
> necessary "hacks" (read "IFs") that were added into platform for the top
> menus were frowned upon even to this date. Stating that the current
> implementation is not optimal when viewing this no longer as an added
> feature, but a basic and integrated feature is, basically, comparing apples
> to oranges.
>
> My only concern is that, whatever approach we chose, we preserve the
> ability of an admin to provide his own, customized, workspace template,
> either through a xar, a flavour or whatever, just as long as he still has
> the means to build it and deploy it (without having to publish it to a
> public extension repository, since it can be private stuff).
>

I understand. That is why I still have the notion of "wiki templates". An
admin can create a new template, customize it, and propose it at the wiki
creation.


> >
> > >
> > > > So, I apologize to not having talk here about that. I think that we
> > > should,
> > > > indeed, refactor a lot of things to have a very clean multiwiki
> feature
> > > in
> > > > 5.3.
> > > >
> > > >
> > > > >
> > > > > Basically, you`d right now be using a
> > > > $services.wiki.createWiki('newWiki')
> > > > > to create the wiki followed by a
> > > > > $services.wikiTemplate.apply('someWikiTemplateName', 'newWiki') to
> > > > > initialize the wiki with content.
> > > > > When we`d have flavours, you`d probably follow the creation step
> > with a
> > > > > $services.extension.install('someFlavourExtensionID',  'newWiki')
> to
> > > > > initialize the wiki with the content of a flavour extension.
> > > > > We`d probably also want to keep the option of importing the content
> > > from
> > > > a
> > > > > XAR, so that might be a option too.
> > > > >
> > > > > So this wikiTemplate service would probably contain some methods
> > like:
> > > > > - create/convert (since the argument would probably be a wikiID to
> > mark
> > > > as
> > > > > template. The content of that wiki would have previously be
> > initialized
> > > > > from an extension of from a XAR)
> > > > >
> > > >
> > > > I have proposed setTemplate(boolean template);
> > > >
> > >
> > > Maybe setTemplate(String wikiID) as in,
> > > $services.wikiTemplate.setTemplate('someWiki')
> > >
> > > ...or even setTemplate(String wikiID, boolean isTemplate) to avoid
> > having a
> > > second removeTemplate(String wikiID) method.
> > >
> >
> > Yes, I like this one.
> >
> >
> > >
> > >
> > > >
> > > >
> > > > > - list/getAll (wikis marked as templates)
> > > > > - delete/revert (remove the template mark, resulting in a regular
> > wiki
> > > > once
> > > > > again)
> > > > > - isTemplate (wikiID)
> > > > > - apply (as seen above, copy the content to an empty wiki)
> > > > >
> > > >
> > > > I was thinking about createWikiFromTemplate() instead, but maybe it
> > does
> > > > not provide enough flexibility.
> > > >
> > >
> > > Didn`t you mention something earlier about separation of concerns? :)
> > >
> > >
> > I see the template feature as an helper for the creation of a wiki. We
> > don't need template for anything else than the creation of a wiki. So it
> > does not disturb me to have createWikiFromTemplate() (which internally
> call
> > createWiki).
> >
> >
> > >
> > > >
> > > > >
> > > > > Side Note1: It could get a bit ugly fast when having to list wikis.
> > > What
> > > > do
> > > > > you do with templates? What do users see, what do admins see if you
> > > plan
> > > > to
> > > > > have a single view(UI) for everything? Probably 2 UIs would fit
> best
> > > > > (similar to what we have not with WikiManagerUI and WorkspacesUI).
> > The
> > > > > WikiManager part would probably go in the main wiki's
> administration
> > > (for
> > > > > admins) and the WorkspacesUI part would be in the main wiki's
> > WikiIndex
> > > > > (for users).
> > > > >
> > > >
> > > > That is an interesting question. I did not think that much about the
> UI
> > > > until now. I wanted to have a clean API first.
> > > >
> > >
> >
> > I propose, with Caty:
> > * 1 UI which is the "Wiki Directory" that display only wikis that users
> can
> > use
> >
> * 1 UI, in the administration, to manage templates only.
> >
>
> >
> > > >
> > > > >
> > > > > Side Note2: While thinking about templates, I thought that we might
> > > need
> > > > > some "copy" and "rename" methods for the WikiManager API, since
> they
> > > > might
> > > > > operations that the user might want to perform without having to
> use
> > > > > templates or some other weird operations.
> > > > >
> > > >
> > > > - Rename would be hard to implement (copy the wiki and delete it?)
> > > >
> > >
> > > No, just rename the database and the descriptor. Is there any
> limitation
> > to
> > > that?
> > >
> > >
> > There is nothing in the XWikiStoreInterface to rename a database.
> >
> > - DB2 does not support the database renaming:
> > http://bytes.com/topic/db2/answers/185194-i-want-rename-table-schema
> > - Derby neither:
> > http://apache-database.10148.n7.nabble.com/Rename-Schema-td95708.html
> > - Neither oracle:
> >
> >
> http://asktom.oracle.com/pls/asktom/f?p=100:11:0::::P11_QUESTION_ID:30020192108317
> >
> > But it's OK for PostGreSQL, MySQL and HSQLDB.
> >
> > So, if we want to rename the database from A to B, we can:
> > - create the database B
> > - import all the data from A into B
> > - delete the database A.
> >
> >
> We had the same problem with renaming documents. We did not take it into
> account in the initial API/model and then we had to fake it with a
> delete+remove. If we have to do the same for wikis, fine, but IMO we have
> to include these common sense operations or we will hit them in the future
> and we will be forced to do even dirtier things, or worse, leave the user
> to have to do them.
>
> Also, implementation would not be hard (we already do wiki copy and
> delete). We`d just need to be careful :)
>

OK.


>
>
> >
> > > > - What "copy a wiki" means? Should we copy the history of every pages
> > > too?
> > > > Should we copy the recycle bin? I did not want to provide a copy
> > feature
> > > > because of these questions. The template feature actually does a copy
> > > > operation but with its own opinion concerning this aspects : no
> history
> > > > copied, no recycle bin.
> > > >
> > >
> > > 1-to-1 copy of the source wiki. This means everything.
> > >
> > > Sure, there might be some applications that use custom mapping and add
> > some
> > > tables to the source database that might not be copied in the process.
> > But,
> > > if we have no way of detecting and copying this data, I think it's not
> a
> > > bit problem. History and recycle bin are core notions of which we have
> > full
> > > control so they should not be an issue.
> > >
> >
> > Then we need an option to not copy history and recycle bin, because when
> > you create a wiki from a template, you don't care about deleted documents
> > and the history. Only the template creator needs them.
> >
> >
> > >
> > > Anyway, since we`re reviewing these processes and thinking about them
> > now,
> > > maybe we should do it right. Copy and Rename are basic operations that
> > > should not miss from any data model.
> >
> >
> > I agree.
> >
> >
> > > We should *at least* include them in
> > > the API and implement them when time allows (and expose them in the UI
> > when
> > > implemented). It would be a shame to have yet another half baked API.
> > >
> >
> > Can we create an implementation with missing features?
> >
>
> We do things iteratively. I don`t see why we can`t apply that to
> implementations of an API, as long as we don`t have any UI using it, thus
> risking to crash.
>

OK.

Thanks,
Louis-Marie.
_______________________________________________
devs mailing list
[email protected]
http://lists.xwiki.org/mailman/listinfo/devs

Reply via email to