I'm a bit late to the party but +1 to the idea of making wikis 
"virtualMode=true"
all of the time, it will allow code paths to be removed and simplified even
though it will have a (probably marginal) performance hit. I don't see any need
for distinguishing between a non-multiwiki and a multiwiki without any subwikis.

Thanks,
Caleb



On 02/27/2013 11:34 AM, Marius Dumitru Florea 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).
>>
> 
>> 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
> 

_______________________________________________
devs mailing list
[email protected]
http://lists.xwiki.org/mailman/listinfo/devs

Reply via email to