Hierarchical Groups
This page explains why PmWiki doesn't currently use hierarchical or nested groups.
Pm's Explanation
When implementing WikiGroups I did think for a while about implementing hierarchical groups but ultimately decided against it for several reasons:
- It doesn't seem to add any additional power or flexibility
- It adds complexity in terms of referencing pages in other (sub)groups
- I examined other systems that implement hierarchical groups and didn't like the complications it seemed to impose
To see the first point, and to borrow from the example given, instead of writing Animal.Mammal.Canine.StBernard one can just as easily write AnimalMammalCanine.StBernard and get basically the same results and capabilities. Or, if we really need separators, perhaps allow hyphens in WikiGroup names and do something like Animal-Mammal-Canine.StBernard.
Many of these issues could be worked around by allowing wildcards on group names in the various context. The ramifications of this approach haven't been well explored yet.--JoachimDurchholz? May 24, 2006, at 05:00 PM
On the second point, the problem comes from trying to decide what one should do with markup such as "Canine.StBernard" inside of the "Animal.Mammal" group, especially if there's a top-level group named "Canine". If we treat Group.WikiWord links as always being absolute, then there's not much organizational advantage to having hierarchies. If we allow relative paths, then there's all sorts of room for ambiguity unless even more markup is added to resolve it, and it's possible that someone creating a page in an intermediate subgroup inadvertently changes the target of existing links. All of which just makes things more difficult for naive users.
--JoachimDurchholz? May 24, 2006, at 05:32 PM
--JoachimDurchholz? May 25, 2006, at 03:27 PM
--Romiras (romiras@sources.ru)
Hello, I would like to point out that Cookbook:Cluster is a very workable solution to this particular problem. It is not a perfect solution in that it is not as closely integrated by default as a core solution would be, however I believe this is the best solution to this problem currently and VERY functional.
In my own case I was having a very difficult time translating to PmWiki's style of content separation; It is in essence simply is not how I work and shoehorning me into that thought process was not, in my opinion, working well. ;)
Let me illustrate and let us use the presented example, Animal-Mammal-Canine.StBernard.
In my view the problem with a single level hierarchy, such as the default PmWiki handling of WikiGroups, are simply that there is no coherency between fake levels. For example If I change the GroupHeader in Animal, this is to say Animal.GroupHeader, I would expect that to be reflected in it's children, such as Animal-Mammal/. This can be accomplished automatically via the Cluster? recipe. (As well as a style of simplifying links between children and or parents.) A similar failing, in my opinion, of this base method is that I expect to be able to easily shift my focus to a parent group. Ye olde cd ..
;) My modifications to the Cluster? recipe alleviates this via a clickable trail that can be included in a page, (I.e. GroupHeader in my personal usage).
In essence with the Cluster? recipe the problems with the Animal-Mammal-Canine.StBernard style of hierarchy become very manageable. I prefer this method to PmWiki's "flat hierarchy" and have had no problems to date and I have only nice things to say.
My personal thoughts are that something of this nature is important enough to usability to be suitable for an optional CoreCandidate such as creole markup is, however the recipe method works fine as long as we all know about it, and of course can get it to work.
My best regards to you,
''' Perhaps not the right platform
I would have to agree that for some applications or perhaps for some of us that have a mental construct of hierarchical systems that pmwiki is difficult to wrestle with. I have been searching high and low to figure out how trails, links, and groupings work. I suppose I assumed I could group within groups. The result was that links and pages seemed to disappear. Trails led to places that made no sense and renaming a group disconnected what I thought were children.
Reading this says to me that there are ways to change my thought process about relationships but I think I am too old and set in my ways to rethink all of this and perhaps my best solution is to find another platform. That is not to say the decisions on this platform are not well thought out and work for many (or perhaps most) people.
Does anyone have a suggestion on a platform that would be a good replacement?
History
This topic has been discussed on the pmwiki-users mailing list at great length on several occasions throughout 2003 and 2004, and the general consensus seems to be this:
- The current one-group-level mechanism is seen as the best (or the least bad) of the available choices
- Once a good syntax and semantics for hierarchical groups has been found, we'd like to have it. But we don't want a bad solution here.
The software has been designed such that it could eventually support hierarchical groups via a Cookbook? recipe, if we ever resolve the outstanding issues.
Alternatives
There are also other alternatives to using the group hierarchies to organize page content -- WikiTrails, Categories, and WikiFarms can often resolve the issue with more power and flexibility than what WikiGroups can do.
The Cookbook.SubgroupMarkup? recipe adds one level of subgroup to the current wiki structure. For many problems, this may be sufficient. It introduces [[,subpage]] markup to designate a subpage of the current page. The subpages of a particular page form a subgroup of the current group. For example, [[,proposals]] and [[,discuss]] are pages in the PmWiki.HierarchicalGroups subgroup of the PmWiki group.
Proposals
The issue has been discussed on and off on the mailing list. Summaries of proposals, conceptual backgrounds, and other discussion results can be found on the HierarchicalGroups-Proposals? page.
Category: PmWiki Design
This page may have a more recent version on pmwiki.org: PmWiki:HierarchicalGroups?, and a talk page: PmWiki:HierarchicalGroups-Talk?.