On Wed, Feb 27, 2013 at 11:21 AM, Eduard Moraru <[email protected]> wrote: > Hi devs, > > To further fuel this discussion, I will mention some points that are more > or less problematic when removing the notion of virtual mode (checks for > xwiki.isVirtualMode()), since a direct change would leave a some pieces of > code dead (never called) or just need a bit of discussion on them: > > 1. c.x.x.s.XWikiHibernateBaseStore.initHibernate(XWikiContext context) [1] > > That piece of code seems to only run when the wiki is not in virtual mode. > From what I managed to understand from Thomas [2], it's probably this case: > "in your hibernate configuration if you set a database which is not called > 'xwiki'. In virtual mode this configuration is not taken into account and > you have to indicate the name of the database in xwiki.cfg". > I think we need to review this behavior. IMO, we should do take this > configuration into account in virtual mode as well, as long as there is no > other technical impediment. It is a configuration for the main wiki after > all, and it should still be valid. > > 2. c.x.x.XWiki.onPluginPreferenceEvent(Event event, XWikiDocument doc, > XWikiContext context) [3] > > This piece of code seems to reload the plugins if the "plugins" property > changed in XWikiPreferences, but only if the wiki is not in virtual mode. I > think we need to change this to happen for any wiki and the plugins need to > be reloaded only for that specific wiki for which the change happened (if > it is possible). >
> 3. extension.vm - extensionActionButton macro [4] > > This UI code decides when to displays the (Un)Install button of an > extension for the current wiki or for the entire farm. Removing the virtual > mode check will always show the (un)install on farm button. I think Marius > had some concerns about his one. As I said in my comment on GitHub I think the isVirtualMode() test should be replaced in this particular case with something like hasVirtualWikis() . It makes sense to display EM buttons that target multiple wikis only if you have multiple wikis. > > 4. distribution.vm - displayMainUiStep_unknownPreviousUI [5] > > This code assumes that if virtualMode is true, then the product is XEM, > otherwise it's XE. This is used to propose old version names for the 2 > products. Obviously this is needs to be refactored and use a different way > of determining which is which. Yes. Thanks, Marius > > 5. c.x.x.p.w.WikiManager > public List<Wiki> getAllWikis(XWikiContext context) throws > XWikiException [6] > > We have decided that c.x.x.XWiki.getVirtualWikisDatabaseNames will also > return the main wiki's name. However, the WikiManager plugin can not do > this so easily because the main wiki's descriptor may not exist. How could > we handle this, in order to be consistent? Would creating programmatically > the main wiki's descriptor with default values on ApplicationReady event do > any good? Will it do any harm? > > Thanks, > Eduard > > ---------- > [1] > https://github.com/xwiki/xwiki-platform/blob/3019c6e0df112adf980641c75aaaffb2f0b17c6f/xwiki-platform-core/xwiki-platform-oldcore/src/main/java/com/xpn/xwiki/store/XWikiHibernateBaseStore.java#L214 > [2] > https://github.com/xwiki/xwiki-platform/commit/ce3d9d28aefdb327d407ef179a4c869ccce74478#commitcomment-2679994 > [3] > https://github.com/xwiki/xwiki-platform/blob/3019c6e0df112adf980641c75aaaffb2f0b17c6f/xwiki-platform-core/xwiki-platform-oldcore/src/main/java/com/xpn/xwiki/XWiki.java#L6521 > [4] > https://github.com/xwiki/xwiki-platform/blob/3019c6e0df112adf980641c75aaaffb2f0b17c6f/xwiki-platform-core/xwiki-platform-web/src/main/webapp/templates/extension.vm#L971 > [5] > https://github.com/xwiki/xwiki-platform/blob/3019c6e0df112adf980641c75aaaffb2f0b17c6f/xwiki-platform-core/xwiki-platform-web/src/main/webapp/templates/distribution.vm#L194 > [6] > https://github.com/xwiki/xwiki-platform/blob/3019c6e0df112adf980641c75aaaffb2f0b17c6f/xwiki-platform-core/xwiki-platform-wiki-manager/xwiki-platform-wiki-manager-api/src/main/java/com/xpn/xwiki/plugin/wikimanager/WikiManager.java#L223 > > > On Fri, Feb 22, 2013 at 3:48 PM, Eduard Moraru <[email protected]> wrote: > >> Hi devs, >> >> To be more precise, the essence of my proposed change [1] is to actually >> always return "true" in the isVirtualMode() method, ignoring any >> configuration and marking the method as @deprecated, to be removed in >> future versions. >> >> Is there any reason not to do this? (Why) Would we want to preserve the >> possibility of going back to a non-virtual mode? (mostly addressed to >> Thomas, but to others as well) >> >> Thanks, >> Eduard >> >> ---------- >> [1] >> https://github.com/xwiki/xwiki-platform/commit/ce3d9d28aefdb327d407ef179a4c869ccce74478 >> >> >> >> >> On Fri, Feb 22, 2013 at 3:39 PM, Eduard Moraru <[email protected]>wrote: >> >>> Hi devs, >>> >>> As some of you have already noticed and already started providing >>> feedback (thank you), I have pushed a feature branch [1] that proposes the >>> removal of the virtual mode concept (making it enabled and fixed by >>> default). >>> >>> I have also gone trough the code in xwiki-platform and removed, in the >>> feature branch, dead code (code branches that will never be reached because >>> of this change). Some tests were also adapted to the new change. I have >>> also tried a build of xwiki-platform with these changes and it built >>> successfully. >>> >>> First of all, I want to make sure that we agree on the change, since >>> Thomas already mentioned that he does not agree (but I need more details). >>> >>> Second, if we agree, please take the time to look over the changes >>> (particularly in the modules that you each have experience in) and double >>> check that the logic of the code was not altered in any way. >>> >>> I will not be merging this branch until I get a general green light from >>> the committers, and until everybody is happy :) >>> >>> Please share your opinion both on this mail and/or on the specific >>> changes in the github commits. >>> >>> Thanks, >>> Eduard >>> >>> ---------- >>> [1] >>> https://github.com/xwiki/xwiki-platform/commits/feature-deprecate-virtual-mode >>> >>> >>> >>> On Mon, Feb 18, 2013 at 4:53 PM, Thomas Mortagne < >>> [email protected]> wrote: >>> >>>> On Mon, Feb 18, 2013 at 3:48 PM, Thomas Mortagne >>>> <[email protected]> wrote: >>>> > On Mon, Feb 18, 2013 at 3:38 PM, Eduard Moraru <[email protected]> >>>> wrote: >>>> >> Hi Thomas, >>>> >> >>>> >> On Mon, Feb 18, 2013 at 3:45 PM, Thomas Mortagne >>>> >> <[email protected]>wrote: >>>> >> >>>> >>> On Mon, Feb 18, 2013 at 2:07 PM, Eduard Moraru <[email protected] >>>> > >>>> >>> wrote: >>>> >>> > Hi devs, >>>> >>> > >>>> >>> > According to the Roadmap of 5.0 [1][2] we will be deprecating the >>>> virtual >>>> >>> > mode API and moving to a virtual-by-default mode instead. >>>> >>> > >>>> >>> > The idea is that the multiwiki environment should be the default >>>> and, >>>> >>> > anyone wanting to use the single-wiki mode (as XE was doing in the >>>> past), >>>> >>> > will simply not create any subwiki. It is just pointless to have 2 >>>> >>> products >>>> >>> > for such a simple fact and it also confuses users that have >>>> downloaded >>>> >>> and >>>> >>> > started to use one product and later on realise that they needed >>>> the >>>> >>> other. >>>> >>> > Also, when installing the wiki-manager and/or workspace >>>> extension(s) >>>> >>> > (because you might want to create subwikis/workspaces), there will >>>> be no >>>> >>> > need to stop the wiki, enable-virtual mode and restart it; all >>>> will be >>>> >>> > doable in the browser. >>>> >>> > >>>> >>> > Therefore, I`m sending this mail to ask your opinion about this >>>> topic, in >>>> >>> > case you might have something to say against it, and also to >>>> brainstorm >>>> >>> on >>>> >>> > the required changes and implications on existing code so that the >>>> >>> > transition is as smooth and invisible as possible. >>>> >>> > >>>> >>> > Proposed changes: >>>> >>> > - Remove "xwiki.virtual" from xwiki.cfg(.vm) >>>> >>> > -- remove the usage of the "$xwikiCfgVirtual" maven property from >>>> >>> > xwiki-platform (, xwiki-enteprise and xwiki-manager) >>>> >>> > - Deprecate boolean com.xpn.xwiki.XWiki.isVirtualMode() (and the >>>> >>> api.XWiki >>>> >>> > version) >>>> >>> > -- change its code to >>>> ((getVirtualWikisDatabaseNames(context).size() == >>>> >>> 1) >>>> >>> > ? true : false) until it is removed by the deprecation process. >>>> >>> >>>> >>> -1. It means that you are going to be in non virtual mode when >>>> >>> starting XEM which is very wrong and the complete opposite of what we >>>> >>> want here. We should deprecate and don't touch it's implementation in >>>> >>> any way other that returning true by default instead of false when >>>> >>> there is nothing in the configuration. Again as you said the goal is >>>> >>> to be in virtual mode by default, period. If the UI want to do >>>> >>> something different when there is only one wiki the UI should test if >>>> >>> there is only one wiki but breaking all extensions counting on the >>>> >>> virtual mode is very bad API breakage. >>>> >>> >>>> >> >>>> >> I agree. The isVirtualMode check was supposed to tell you if "there >>>> can be >>>> >> more than one wiki", while I was suggesting to transform it to "are >>>> there >>>> >> currently more than one wikis?", which is obviously not equivalent. >>>> >> >>>> >> >>>> >>> > >>>> >>> > Possibly needed changes: >>>> >>> > - Add main wiki default descriptor to xwiki-enterprise-ui (so that >>>> >>> > getVirtualWikisDatabaseNames includes the main wiki and also to >>>> avoid DNS >>>> >>> > issues (?) caused by how we handle virtual mode) >>>> >>> >>>> >>> This is useless IMO: >>>> >>> * the fact that getVirtualWikisDatabaseNames does not return the main >>>> >>> wiki when there is no descriptor for it is a bug that should be fixed >>>> >>> >>>> >> >>>> >> Ok. I have created the jira issue for it: >>>> >> http://jira.xwiki.org/browse/XWIKI-8829 >>>> >> >>>> >> Also, on the same topic, I think that we should also expose the >>>> >> getVirtualWikisDatabaseNames method in api.XWiki. Maybe we should >>>> rename it >>>> >> to something simpler like api.XWiki.getAllWikis() or >>>> getAllWikiNames(). >>>> > >>>> > Yes, "getVirtualWikisDatabaseNames" is not very nice. >>>> >>>> This name is also pretty wrong btw since that's wiki names and not >>>> database names which could be very different. >>>> >>>> > >>>> >> >>>> >> >>>> >>> * I don't see how having a descriptor with localhost in it will help >>>> >>> in any way not having DNS issue, it's not helping much in XEM it's >>>> not >>>> >>> going to be better in XE. IMO the right solution is to fallback on >>>> >>> main wiki by default when the wiki is unknown instead of sending a >>>> >>> redirect to some URL which cannot work and only allow to enable this >>>> >>> redirect URL as an option >>>> >>> >>>> >> >>>> >> Ok, so we comment out xwiki.virtual.redirect in xwiki.cfg and, by >>>> default, >>>> >> redirect to the main wiki's Main.WebHome. >>>> > >>>> > I carefully chose "fallback" and not "redirect" because a real >>>> > redirect is impossible here since no URL will really be right or the >>>> > main wiki. The idea would be to do exactly the same thing we do with >>>> > IP, www.*,. >>>> > >>>> >> >>>> >> An existing jira issue that is very related to this topic is >>>> >> http://jira.xwiki.org/browse/XWIKI-479 We could reuse that. >>>> > >>>> > Yes we can reuse it but not follow the proposal in the comments. >>>> > >>>> >> >>>> >> Thanks, >>>> >> Eduard >>>> >> >>>> >>> >>>> >>> > -- or have it generated programmatically at startup if it does not >>>> exist >>>> >>> > (might be safer this way, since people might be using a different >>>> UI than >>>> >>> > xwiki-enterprise-ui) >>>> >>> > >>>> >>> > I will start working on this locally and see if I can spot other >>>> issues, >>>> >>> > but please share your thoughts. >>>> >>> > >>>> >>> > Thanks, >>>> >>> > Eduard >>>> >>> > >>>> >>> > ---------- >>>> >>> > [1] http://markmail.org/message/o6adfbscpidnn7zr >>>> >>> > [2] http://jira.xwiki.org/browse/XWIKI-8822 >>>> >>> > _______________________________________________ >>>> >>> > devs mailing list >>>> >>> > [email protected] >>>> >>> > http://lists.xwiki.org/mailman/listinfo/devs >>>> >>> >>>> >>> >>>> >>> >>>> >>> -- >>>> >>> Thomas Mortagne >>>> >>> _______________________________________________ >>>> >>> devs mailing list >>>> >>> [email protected] >>>> >>> http://lists.xwiki.org/mailman/listinfo/devs >>>> >>> >>>> >> _______________________________________________ >>>> >> devs mailing list >>>> >> [email protected] >>>> >> http://lists.xwiki.org/mailman/listinfo/devs >>>> > >>>> > >>>> > >>>> > -- >>>> > Thomas Mortagne >>>> >>>> >>>> >>>> -- >>>> Thomas Mortagne >>>> _______________________________________________ >>>> 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

