On Tue, Oct 1, 2013 at 5:09 PM, Guillaume "Louis-Marie" Delhumeau <
[email protected]> wrote:

> Hi Eddy!
>
> 2013/10/1 Eduard Moraru <[email protected]>
>
> > On Tue, Oct 1, 2013 at 3:25 PM, Guillaume "Louis-Marie" Delhumeau <
> > [email protected]> wrote:
> >
> > > Hi Vincent,
> > >
> > > My comments below:
> > >
> > > 2013/10/1 Vincent Massol <[email protected]>
> > >
> > > > Hi Guillaume,
> > > >
> > > > On Oct 1, 2013, at 12:21 PM, Guillaume Louis-Marie Delhumeau <
> > > > [email protected]> wrote:
> > > >
> > > > > Hi devs !
> > > > >
> > > > > In 5.2, we have introduced Workspace Application in XE. Now, we
> > should
> > > go
> > > > > further and merge Wiki Application with Workspaces.
> > > > >
> > > > > = New idea =
> > > > > * Add a "hidden" field to the Wiki. For example, I would like to be
> > > able
> > > > to
> > > > > create wiki:
> > > > > ** which can not be seen by others
> > > > > ** which does not appear in searches
> > > > > ** e.g: workspacetemplate, or on a farm if I don't want people to
> > know
> > > > that
> > > > > I host a company AND its competitor
> > > >
> > > > So if i understand correctly:
> > > > * This "hidden" field would be in the wiki descriptor right?
> > > > * If the user selects "show hidden documents" (which might need to be
> > > > renamed to something more generic now) the wiki would be visible and
> > > appear
> > > > in searches/etc, right?
> > > >
> > >
> > > Yes, but we can refine this concept. We could imagine that hidden wikis
> > > should be visible by administrators only.
> > >
> > >
> > > >
> > > > > = Options =
> > > > > * In your wiki, do you want to have the "Home" menu?
> > > >
> > > > See comments on http://jira.xwiki.org/browse/XWIKI-9518
> > > >
> > > > > * In your wiki, do you want to create your own users?
> > > >
> > > > I would not phrase it like this. Rather: "Allow local users". If
> > enabled
> > > > then global users would work too, in addition to the ability to
> create
> > > > local users.
> > > >
> > >
> > > OK.
> > >
> > >
> > > >
> > > > > = XARs and template =
> > > > > * The home menu is enabled only if the user want it (trivial)
> > > >
> > > > How is that different from above (ie
> > > > http://jira.xwiki.org/browse/XWIKI-9518)?
> > > >
> > > > > * The registration button should redirect to the home wiki
> depending
> > on
> > > > the
> > > > > configuration (trivial)
> > > >
> > > > Why based on configuration? Why not redirect automatically when the
> > user
> > > > doesn't allow local users?
> > > >
> > >
> > > It is why I meant.
> > >
> > >
> > > >
> > > > > * Disable XWiki.AdminRegistrationSheet, XWiki.AdminUsersSheet from
> > the
> > > > > Administration (depending on the configuration)
> > > >
> > > > Ok so if the wiki doesn't allow local users then don't show admin
> > options
> > > > related to users. Good.
> > > >
> > > > > * Create a new UI, partially based on the current WorkspaceManager
> > and
> > > > > WikiManager spaces.
> > > >
> > > > Any more details on this? :)
> > > >
> > >
> > > Not for now ;)
> > >
> > >
> > > >
> > > > > = API =
> > > > > * Create a new API: xwiki-platform-wiki.
> > > > > * The old modules (xwiki-platform-wiki-manager and
> > > > > xwiki-platform-workspace) go into legacy, and we mark them as
> > > deprecated.
> > > > > * The new API will use the new modules of Vincent:
> > > > >
> > > >
> > >
> >
> https://github.com/xwiki/xwiki-platform/compare/feature-resource-and-wiki-modules(wiki-descriptor)
> > > > >
> > > > > = Proposal for the API =
> > > > > * xwiki-platform-wiki
> > > > >  ** xwiki-platform-wiki-descriptor
> > > > >    *** xwiki-platform-wiki-descriptor-api
> > > > >      **** WikiDescriptor.java
> > > > >         ***** ID
> > > > >         ***** Alias
> > > > >         ***** Hidden
> > > > >         ***** Description?
> > > > >         ***** Ability to add custom data (where all will be stored)
> > > > >      **** WikiDescriptorManager.java
> > > > >         ***** getAll()
> > > > >         ***** set()
> > > > >         ***** remove()
> > > > >         ***** getByWikiAlias()
> > > > >         ***** getByWikiId()
> > > > >  ** xwiki-platform-wiki-manager (but this name conflicts with the
> > > > previous
> > > > > module that we put into legacy...)
> > > > >    *** WikiManager.java
> > > > >      **** createWiki() (create an empty wiki)
> > > > >      **** deleteWiki()
> > > > >      **** copyWiki()
> > > > >  ** xwiki-platform-wiki-template
> > > > >    *** WikiTemplateManager.java
> > > > >      **** setWikiAsTemplate()
> > > > >      **** unsetWikiAsTemplate()
> > > > >      **** getWikiTemplates()
> > > > >      **** isWikiTemplate()
> > > >
> > > > What is the rationale for 2 modules instead of one for
> > > > xwiki-platform-wiki-manager and xwiki-platform-wiki-template? (not
> > saying
> > > > it's bad, just curious)
> > > >
> > > > Is it because you want to see template wiki as something optional?
> > > >
> > >
> > > Yes, it is. Because in the future, we will have the notion of
> "flavors",
> > so
> > > we may decide to not use template wiki anymore. I wanted to have a
> > minimal
> > > wiki-manager module and some optional ones.
> > >
> > >
> > > >
> > > > >  ** xwiki-platfrom-wiki-user (handle or not the local users)
> > > > >    *** WikiUsersManager.java
> > > > >      **** canWikiHasLocalUsers()
> > > >
> > > > Bad name! Suggestion: hasLocalUsers() or supportsLocalUsers()
> > > >
> > >
> > > I prefer supportsLocalUsers(), because it can return true even if there
> > is
> > > actually no users in the wiki!
> > >
> >
> > Another suggestion: hasLocalUsersSupport()
> > - respects the has* convention for boolean methods
> > - leaves room for a hasLocalUsers() method if we might need it
> >
> > Alternatives:
> > - isLocalUsersEnabled()
> > - hasLocalUsersEnabled()
> >
> > Just pick one :)
> >
> >
> > >
> > > >
> > > > >      **** setCanWikiHasLocalUsers()
> > > >
> > > > Ouch… Suggestion: hasLocalUsers(boolean) or
> > supportsLocalUsers(boolean).
> > > >
> > >
> >
> > > OK.
> > >
> >
> > Bad suggestion, IMO, using has* to set* something :)
> >
> > Try:
> > - setLocalUsersSupport(boolean)
> > - setLocalUsersEnabled(boolean)
> >
> >
> > >
> > >
> > > >
> > > > >      **** getWikiOwner()
> > > > >      **** setWikiOwner()
> > > > >      **** getMembershipType() (join/invite only/ask to join)
> > > > >      **** setMembershipType()
> > > > >      **** getWikiUsers() (list of the local users + those who are
> > > > > 'members' of the wiki)
> > > >
> > > > Whether the wiki accepts local users or not should be stored in the
> > wiki
> > > > descriptor.
> > > >
> > > > Since you put this in a separate module, does it mean you want to see
> > it
> > > > as some optional module?
> > > >
> > >
> > > Yes. Someone might want to build a wiki with absolutely no notion of
> > users.
> > >
> >
> > What about the notion of members? (from workspaces)
> >
> > The difference is that we used rights to express members (global users
> with
> > rights on the current workspace) and the entire UI talks about membership
> > and members to a workspace/wiki.
> >
>
> In my proposal, API WikiUsersManager#getWikiUsers() returns both local
> users and global users that are members of the wiki. Do you think we should
> subdivide this notion?
>

The discussion was about the membership notion. I`m not sure we should use
the term 'users' as in 'getWikiUsers' to express membership, when, in
XWiki, a 'user' of a wiki means the user that is local to that wiki.

If we have hasLocalUsersSupport() (or whatever we choose) returning 'true',
then a call to getLocalUsers() should return the list of local users.
However, this should not necessarily be the task of the wiki module, but of
some 'xwiki-platform-users-api' module that we should implement in the
future to properly implement user management in XWiki at an API level.
We`re doing bad in this sector :)

For now, I`d suggest that we have:
- getLocalUsers() (only local wiki users, to be used together with
hasLocalUsersSupport() )
- getMembers() (members of the XWikiAllGroup of the local wiki, since that
is the current way we track membership. This will include what you were
proposing, both global and local users.)
-- I`m not sure at this point about the naming, either 'members' or
'users', since we want to both have a generic solution and to have a good
separation of concerns. If we drop the separation of concerns (see above
mention of a future 'xwiki-platform-users-api' module), then we can call it
'users' in both cases (farm/workspace) and applications use only one method.

Hope this helps,
Eduard

>
>
> >
> > Hope this helps,
> > Eduard
> >
> > >
> > > >  ** xwiki-platform-wiki-script (for script services)
> > > >    *** Wiki.java (only an helper)
> > > >      **** getDescriptor()
> > > >      **** getId()
> > > >      **** getAlias()
> > > >      **** addAlias()
> > > >      **** removeAlias()
> > > >      **** getReference()
> > > >      **** IsTemplate()
> > > >      **** setIsTemplate()
> > > >      **** getOwner()
> > > >      **** setOwner()
> > > >      **** canHasLocalUsers()
> > > >      **** setCanHasLocalUsers()
> > > >      **** getMembershipType()
> > > >      **** setMembershipType()
> > > >      **** getUsers()
> > > >      **** isHidden()
> > > >      **** setHidden()
> > > >      **** getDescription()
> > > >      **** setDescription()
> > > >    *** WikiManagerScript.java ("$services.wikimanager" but the name
> > > > conflicts with the previous module...)
> > > >      **** getAllWikis()
> > > >      **** getHomeWiki()
> > > >      **** getWikiByAlias()
> > > >      **** getWikiById()
> > > >      **** getWikiTemplates()
> > > >      **** createWiki()
> > > >      **** deleteWiki()
> > > >      **** copyWiki()
> > > >      **** isWikiExists()
> > > >      **** isWikiNameAvailable()
> > > >      **** joinWiki()?
> > > >      **** askToJoinWiki()?
> > >
> > > -1. All script services should be located in the modules they wrap.
> > > >
> > > > So if you have 4 modules, I see 4 script services (located in a
> script
> > > > package in those modules).
> > > >
> > > > You cannot say that the modules are optional and then have a big
> script
> > > > module that contains everything. It'll obviously not work :)
> > > >
> > >
> > > > Example: I don't have xwiki-platfrom-wiki-user JAR, I shouldn't be
> able
> > > to
> > > > call $services.<name>.canHasLocalUsers()
> > > >
> > > > >  ** xwiki-platform-wiki-ui (pages for both the home AND the
> > (sub)wikis)
> > > > >      *** …
> > > >
> > > > Need to verify that the UI pages are not related to a given module
> > above.
> > > > If so then that module should have its own UI module to make it
> > optional.
> > > >
> > > > To summarize:
> > > > * Either the modules above are optional and they need to be fully
> > > optional
> > > > (api, script service, UI)
> > > > * Or they're not optional and why do we need to have so many modules?
> > One
> > > > would be enough (with possibly different packages though).
> > > >
> > > > > + write tests
> > > > > + need a migration path
> > > > > + in the future:
> > > > > * Create a new wiki from a flavor:
> > > > > ** instead of creating a wiki from a template, you give an
> extension
> > ID
> > > > >
> > > > > If you like this proposal, I will try to implement it as close it
> is
> > > > > possible, but I may change some elements to minimize dependencies.
> I
> > > will
> > > > > tell you.
> > > > >
> > > > > WDYT?
> > > >
> > > > Sounds good in general.
> > > >
> > > > Thanks
> > > > -Vincent
> > > >
> > > > _______________________________________________
> > > > devs mailing list
> > > > [email protected]
> > > > http://lists.xwiki.org/mailman/listinfo/devs
> > > >
> > > _______________________________________________
> > > devs mailing list
> > > [email protected]
> > > http://lists.xwiki.org/mailman/listinfo/devs
> > >
> > _______________________________________________
> > devs mailing list
> > [email protected]
> > http://lists.xwiki.org/mailman/listinfo/devs
> >
>
> Thanks,
> Louis-Marie
> _______________________________________________
> devs mailing list
> [email protected]
> http://lists.xwiki.org/mailman/listinfo/devs
>
_______________________________________________
devs mailing list
[email protected]
http://lists.xwiki.org/mailman/listinfo/devs

Reply via email to