On Mon, Mar 4, 2013 at 10:37 PM, Vincent Massol <[email protected]> wrote: > > On Mar 4, 2013, at 9:23 PM, Marius Dumitru Florea > <[email protected]> wrote: > >> On Mon, Mar 4, 2013 at 5:46 PM, Eduard Moraru <[email protected]> wrote: >>> Hi devs, >>> >>> On Wed, Feb 27, 2013 at 6:34 PM, Marius Dumitru Florea < >>> [email protected]> wrote: >>> >>>> 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). >>>>> >>>> >>> >>> Any input on this? >>> >>> >>>> >>>>> 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. >>>> >>> >>> Adding $xwiki.hasVirtualWikis() (convenience for >>> $xwiki.getWikiNames().size() > 1). >>> >>>> >>>>> >>>>> 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. >>>> >>> >>> Any suggestions? >>> >>> Maybe use the EM script service to check if the extension >>> xwiki-enterprise-ui or xwiki-manager-ui is installed? >> >> As discussed in private, for now it's better to use hasVirtualWikis() >
> Just make sure you don't call it like this :) That's the code-name ;) Thanks, Marius > > See the comments on http://jira.xwiki.org/jira/browse/XWIKI-8875 > > Thanks > -Vincent > >> as a quick fix because I'm going to refactor this code soon to take >> the list of available versions for the configured UI so there won't be >> any need to distinguish between xwiki-enterprise-ui and >> xwiki-manager-ui. Also, with Thomas' work to support DW on subwikis >> we're going to split the distribution.vm template so don't spend time >> on distribution.vm changes because soon they will be hard to >> integrate. >> >> Thanks, >> Marius >> >>> >>> Thanks, >>> Eduard >>> >>> >>>> 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 _______________________________________________ devs mailing list [email protected] http://lists.xwiki.org/mailman/listinfo/devs

