Hi devs,
As part of the process of integrating the Workspaces feature into XEM, I
have identified certain problematic integration points.
== Context==
For those that don't know about the Workspaces feature, here's an initial
design page that can still be considered relevant with respect to the
current prototype
http://dev.xwiki.org/xwiki/bin/view/Design/Workspaces
Technically, workspaces are subwikis that can be created by any user (not
just admins), that handle only global users (don`t allow local users) and
that manage 3 types of workspace/subwiki membership (1. open, 2. on request
with admin validation and 3. only on invite). The main wiki contains the
workspaces application and is the entry-point from where you can
create/browse workspaces. Of course, since it's part of the Wiki3.0 research
project (
https://wiki30.xwikisas.com ), the main focus is the user and
social interactions.
The current prototype (
https://github.com/xwiki-contrib/wiki30 and issue
tracker
http://jira.xwiki.org/jira/browse/WIKITHREEDOTO ) was built as a
forked XEM distribution that comes with 2 features (workspaces and real-time
editor).
== Issues ==
For the integration of the Workspaces feature (as a XEM extension), the
following problems restrict the Workspace feature from overriding certain
XWiki elements while extending them:
I) Main Wiki level (for the Workspace Manager Application)
1) Extend XWiki.GroupSheet and templates/getgroupmembers.vm
- Add 'follow' action to the group's livetable
- Add 'comment'(About) and 'tags' columns to the group's livetable
2) Extend XWiki.XWikiUserSheet
- Add 'Workspaces' tab with list of joined workspaces and possibility to
list their activity.
3) Extend XWiki.SearchSuggestConfig
- Show Workspaces in search suggestions without affecting existing ones.
4) Extend menuview.vm
- Show 'Workspace' entry in the 'Add' menu
- Show 'Workspace Directory' entry in the 'Wiki' menu
- Show 'Main Wiki' entry in the 'Wiki' menu
II) Workspace level (for the workspace template)
1) Extend Main.Dashboard
- Add new widgets(Workspace Information, Top active users, List of available
Apps) without affecting the existing ones.
-- There should be a clear difference between Gadgets (contain just the code
and are reusable), Dashboard descriptor (for taking care of which gadgets to
include and how to do the layout) and the Dashboard macro. To add some
gadgets in a dashboard from an application, you should only have to override
the dashboard descriptor but not also the existing gadgets.
2) Extend XWiki.AdminSheet
- Add 'Workspace' sections in the 'Configuration' category
- Replace the section 'Users' from 'Users & Groups' category with a
'Workspace Users' section
3) Customize templates/rightsUI.vm
- Hide scope selector for Users in rights UI and use global users as default
There is always the option of doing all of the above trough JSX, but that is
a far from perfect solution.
The general topic of these issues is that applications should be allowed to
better extend XWiki and should not be confined to only the "content" section
of a wiki page.
In particular, almost all of these issues require their own thread and can
be considered part of bigger problems, but I think it's a good start to list
them here and see what discussions come out of them.
The goal is to be able to install Workspace Manager on top of XEM without
partially overriding certain pages or touching templates so that the upgrade
of the underlying XEM is not affected.
Any feedback on these issues is greatly appreciated.
Thanks,
Eduard