Hi devs,
Context
In the context of this this thread, I’d like to open this brainstorming discussion to clarify the terminology we use.
IMO we need different terms for the following:
- An XWiki installation (with one or several wikis)
- An XWiki installation with several wikis (e.g. xwiki.org)
- An XWiki installation used to host several independent wikis (e.g. myxwiki.org)
Analysis
Some definitions of wiki farms:
- Wiki hosting service - Wikipedia
A wiki hosting service , or wiki farm , is a server or an array of servers that offers users tools to simplify the creation and development of individual, independent wikis. Wiki farms are not to be confused with wiki “families”, a more generic term for any group of wikis located on the same server.[1]
- https://wiki.c2.com/?WikiFarms which lists independent wikis.
- PmWiki | PmWiki / WikiFarms
- wiki farm - Wiktionary, the free dictionary
Thus for me the logic would be to use:
- An XWiki installation with one or several wikis
= an XWiki instance
- An XWiki installation with several wikis (e.g. xwiki.org)
= a multi-wiki XWiki instance (it is also an XWiki instance, and a multiwiki XWiki instance is a specific XWiki instance). Short version: a multi-wiki instance.
Synonym: a multi-tenant XWiki instance, see Multitenancy - Wikipedia
- An XWiki installation used to host several independent wikis (e.g. myxwiki.org)
= an XWiki farm (it is also a multi-wiki instance, and an XWiki farm is a specific multi-wiki instance)
Note that inside companies, it’s possible to setup an XWiki instance to be used by different projects or entities of the company. In this case, the wikis are considered independent and the term “farm” would apply.
We could imagine keeping “farm” as a synonym of “instance” but I see at least 2 problems:
- It’s not the usual acceptation of the term “farm” which, in all links I’ve found is meant to represent independent wikis.
- We won’t have any word to mean “An XWiki installation used to host several independent wikis” and “farm” is the one that matches this the best by far. An idea would be to call it an “XWiki independent farm” but it’s not that great and the misuse of the word “farm” remains.
Regarding the “install on farm” label used by the EM UI, I’d say we could have:
- “Install for current wiki” (instead of just “Install”). We could imagine keeping just “Install” if the instance has a single wiki.
- “Install for all wikis” (instead of “install on farm”). Another idea is “Install on instance”. Side note: I think we need some tooltip (if we don’t already have one, I haven’t checked) to explain that this means that any future wiki will have the extension available on it when created.
Also note that when https://www.xwiki.org/xwiki/bin/view/Documentation/AdminGuide/Virtualization/ was created, it was meant to be used for hosting independent wikis, at least as the main use case. This is why we give the example of myxwiki.org in the doc. AFAIR we never really considered initially that we could use several wikis for an instance having a single purpose, i.e. the reason Ludovic created the concept of “virtual mode” with independent DBs, was to host independent wikis.
Now, it’s more work to change the terminology than to not do anything, so we need to decide if we want to go in this direction or not. Regarding APIs, the term “farm” is used in several places:
DistributionManager
WikiFarmFilter
AbstractCopyOrMoveRequest
SecurityReference#FARM
Right#FARM_ONLY
- There’s also
solr.synchronizeAtStartupMode=FARM
inxwiki.properties
That’s quite a lot of changes… And too much work to change them IMO.
Conclusion
So, in conclusion, even though I believe we’re using the term “farm” a bit wrongly (i.e. differently than the common acceptation), I’d like to suggest that:
- We keep it as a synonym of “XWiki instance”, “multi-wiki” and “multi-tenant” (and “virtualization”, “virtual mode” which are deprecated).
- We define a terminology for “An XWiki installation used to host several independent wikis” and I propose an “independent farm” for lack of a better idea.
- I update the following wiki page to explain our terminology.
WDYT?
Thanks