Hi Denis, Nice feedback! Please see below...
On Wed, Feb 27, 2013 at 10:23 PM, Denis Gervalle <[email protected]> wrote: > Hi again Eduard, > > Regarding point 5., this is where it may get complex to support properly > existing configuration file. So, the first question would be to know if we > accept to disrupt upgraded wiki that use an old configuration file ? > If the answer is yes, than good release notes should allow explaining how > to be careful and adapt existing configuration to avoid unreachable wiki. > > Personally, causing such disruption has not my preference, since upgrading > has not done so until now, AFAIK. Moreover, IMO being able to put by > configuration the main wiki unreachable could only cause a negative feeling > to newcomers. Option like autowww is probably useless complexity for the > benefit. And the worse is the unknown wiki page that is never reach since > it come from the main wiki to say it is itself unreachable (XWIKI-479). > > What you propose is not so easy, since creating the descriptor implies > knowing the hostname when usepath=0 which may happen in old config even if > unused. So here is what I would suggest: > > 1) Follow Thomas proposal: ensure getVirtualWikisDatabaseNames() always > return the main wiki, even when no descriptor is available, but not by > creating such descriptor. This ensure main wiki availability anytime. > Already done in the feature branch. However, how do we handle point 5, as I have described it wrt. the wiki-manager plugin? The getAllWikis() method basically returns the list of wiki document descriptors. While for XWiki.getVirtualWikisDatabaseNames() it was easy to add a new string to the list of results, how would we handle it for the wiki-manager plugin, where we have to add an unexistent document (with objects -- what values?) to the list of results? > 2) Stop using a redirect to reach the unknown wiki page. This is also > annoying for a simple typo in an URL since you loose that URL from the > address bar. I see no usual need for going to a page outside XWiki, so stop > using that configuration and eventually provide a configuration for > deciding the page name of the main wiki that will be rendered. Anyway, use > a .vm like other error to render that (optional) page or a default. This > way, you leave a workaround for anyone wishing to restore the old behavior > (you may even suggest commented code for that in the .vm) > I like this idea of using a vm instead of a redirect. > 3) Never proceed to unknown wiki page when there is only one wiki, > considering any unknown as the main. > While I theoretically agree with this, in practice it might be a bit confusing for some users that explicitly wrote a subwiki (in domain based) or maybe they have a bookmark but they end up on the main wiki, where they could continue working without realizing that they are not on the wiki they have requested. Considering this, I think I prefer to display an explicit error. > 4) Deprecate the autowww option, which is now useless > I have just came across this feature, so I`m not really familiar with the details and implications. As far as I understand it, by default, we allow the main wiki to be accessed trough the "www" subdomain (if tomcat is properly configured as well, I assume), "localhost" or ip address without having a descriptor. For all other cases, we proceed to get the descriptor and, if none is found, we redirect to whatever "xwiki.virtual.redirect" says. Which part of this (except point 3 which we cleared above) are you suggesting to deprecate? The default behaviour or the option to disable this default behaviour? Please detail this a bit. 5) Optional, but would be a nice to have for global admin, allow fixing the > main wiki descriptor from the unknown wiki page. > What do you mean by "fixing the main wiki descriptor from the unknown wiki page"? Please details this a bit as well. Thanks, Eduard > With those changes, you will fix most issue regarding the reachability of > wikis in virtual mode, and therefore, having virtual as the default should > not be an issue anymore, whatever your configuration is. > > WDYT ? > > > On Wed, Feb 27, 2013 at 10: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. > > > > 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. > > > > 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 > > > > > > -- > Denis Gervalle > SOFTEC sa - CEO > eGuilde sarl - CTO > _______________________________________________ > devs mailing list > [email protected] > http://lists.xwiki.org/mailman/listinfo/devs > _______________________________________________ devs mailing list [email protected] http://lists.xwiki.org/mailman/listinfo/devs

