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 :)

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

Reply via email to