Tags:
create new tag
, view all tags
MegaTWiki, with HierarchicallyNestedTwikiWebs, is a great step forward. Although I am not sure I like being called a Corporate Weenie.

This is moving towards Twiki being a transparent filesystem interface.

Along these lines, there will probably arise the need for several different ways of forming names.

(BTW, the prospect of fancier names should not delay the incorporation of MegaTWiki into the core code.)

  • Relative pathnames
    • in the current web - done
    • in subwebs of the current web
    • in parents of the current web (../ParentTopic)
    • in siblings of the current web (../Lib/SiblingTopic)

  • Absolute pathnames

  • "Paths" of directories/webs/pathnames for unresolved names
    • e.g. User.AndyGlew -> /Admin.User.AndyGlew
    • paths that search .;..;../..;../../.. etc. up to the root of the wiki, if a topic page is not found locally. (Years ago I modified the Bourne shell to do this for UNIX commands. Mixed. Main problem, security, just like having . in the path.)

I'm not sure if the following are exactly related, but anyway

  • symlinks - might just expose the base OS functionality, or might be implemented within TWiki (which may give some convenient semantics)
    • symlinking web to web
    • symlinking topic to a web in another web
  • directory continuation
    • a la David Korn - one web, which is the logical concatenation of several other webs. This would have to be implemented in TWiki, since few UNIX systems support it.

-- AndyGlew - 15 Apr 2003

I strongly support ColasNahaboos argument about reorgs and renames in RenameMainWebToHome today. I repeat one of my pet peeves wink Never break existing URLs! Really.

  • Coding organisations into names is a recipe for constant renames.
  • The file system analogy is flawed IMHO. The way how you need to organise your folders is an artifact of your navigational tools.
    • Use a DB, then you don't need to organise records into hierarchies.
    • Use a wiki, then you don't need to create zillions of micro compartents alias folders.
  • Actually, deep hierarchies hurt a (t)wiki. Linking, searching, administration, almost everything gets harder. My recommendation:
    • use as little folders as you can
    • use parents / breadcrumbs / KoalaSkin to (re-)organise your hierarchies without breaking a single URL.
-- PeterKlausner - 15 Apr 2003

I agree about not breaking URLs, but think it needs a more fundamental approach. See KeepingReferenceNamesForever.

It gets ridiculous, eventually: if you rename a function from Foo to Bar, are you still going to keep the wikiname FunctionFoo, and not create FunctionBar? Well, no, you will create FunctionBar, and perhaps create an entry for FunctionFoo that says "renamed on date DDD to FunctionBar".

And if function Foo is recreated, perhaps with a different behaviour... then FunctionFoo gets reused, perhaps with a historical note that it used to do something else.

This is part of XP, eXtreme Programming: never be afraid to name things what they should be named. XP is a philosophy strongly associated with wiki.



But this is a red herring. What does placing things in a filesystem hierarchy have to do with preserving names forever? The very same issue applies to the filesystem. You are just afraid because, in your experience, filesystems get reorganized more.



Now, I confess an ulterior motive. Want Wiki in Filesystem for Literate Programming

Apart from that rant, let me also say: my wiki server is already being used by 4 groups and projects, of differing jurisdictions and security consciousness. It will be used in more. As I explained in UsingUnixGroupsForTWikiSecurity, I base my security system on UNIX groups. I use the group stick bit on directories to get correct group ownership. I basically just plain cannot do that if the groups share the same web, since a web is a single UNIX directory. So the question for me, using the best security arrangement I have been able to come up with and have seen recommended on TWiki, is not whether I put the different projects and groups into the same web, but whether I use lots of top level webs, or can arrange the webs in a nested hierarchical fashion.

Names collide. Multiple namespaces are needed. Namespaces nest.

You statement "Use a DB, then you don't need to organise records into hierarchies." is inconsistent with my experience. I have extensive database experience. I have used Zwiki, the wiki based on Zope, which is on a database. And, y'know, Zope/Zwiki do provide what is essentially a nested, hierarchical, view. I have nested one Zwiki within another, and so on.

What the database did do, however, was provide a system so that links within the database were always maintained consistently (more so than TWiki does). And the appropriate breadcrumbs were left behind for links from outside to inside.

(By the way, the reason I decided to go with TWiki rather than Zwiki was that TWiki stores its files as ordinary UNIX files, so that ordinary UNIX tools like grep, CVS, etc., can be used.)

Your statement "deep hierarchies hurt a (t)wiki. Linking, searching, administration, almost everything gets harder." is exactly what I used to hear from OS vendors (like Microsoft, Digital RSX) trying to excuse their lousy filesystems before hierarchical filesystems took over. IT's a tool problem. The tools get fixed.



Yes, database techniques will revolutionize filesystems. But hierarchy is one of the most powerful tools we have, and even in databases is a useful view.



Enough ranting. As is plain, I consider your objection to hierachy short-sighted.

But, you make two valid points above:

  • It is highly desirable to have a system that preserves link names, URLs, etc.
  • Tools to manipulate a nested hierarchy are helpful
    • Don't delay implementing a nested hierarchy until they are available, but expect the need.

Preserving lnk names is an orthogonal issue. even present non-hierarchical twiki breaks link names, when topics are moved. (At least, if you do a checkout of an old version of the RCS database, they are broken because the RCS file was moved.) The right thing is to figure out how to solve that problem properly.

By the way, PeterKlausner, you have pulled this topic off-topic. It has become an exchange of rants about HierarchicallyNestedTwikiWebs, not a discussion of naming syntaxes for such a web. I think we need top pull the rants into a topic of their own.

-- AndyGlew - 16 Apr 2003

Sorry, I didn't want to rant or sound impolite. I'll never, ever again use that yellow marker wink
Still, I think it is not too off-topic, because I am not at opposed to hierarchical organisation, I just don't like to have them fully visible in the namespace:

  • Most wikis map their topic name into the URL;
    consequently, you propose to map hierarchy names into the URL
  • Your vision of implementing a kind of LiterateProgramming with a wiki by overlaying the project code tree is great, but note:
    • In practice, the code hierarchy depends on the way we all use fs hierarchies
    • Therefore, the wiki namespace is based on fs needs
    • fs hierarchies tend to change constantly -- isn't this your experience as well? Granted, CVS trees are an exception to this rule because CVS makes it really hard to move anything. But then, this is the most requested feature.
  • Besides this cool new idea (are there other special cases?), a wiki web needs not be constrained by the underlying fs: while it is unpractical, to have just 100 files in one directory, a wiki easily handles 1000 pages in a web
  • My point is to use this fact and have the hierarchy as meta information outside of the path, thus keeping the visible URLs unaffected by any hierarchy reorganisation.
  • Of course, there are many possible solutions to this problem. But a TWiki with a KoalaSkin and applied parent/child linking works right now.

Overall, your ulterior motive is indeed a very tempting reason to implement the directory nesting anyway. I might actually overcome my (irrational?) fear of "corporate weenies", who could abuse this feature to force the orgchart of the day into the URL namespace.

-- PeterKlausner - 16 Apr 2003

Urg... Started responding, went away, open edit window gone. Sigh. Shorter response as a result, probably better.

(Aside: collided with your lock. CVS could merge, but merging has problems. Zwiki has an "append mode" for comments, that does not require locking.)

(Aside: I think I'll refactor the above. Does TWiki use to OriginalTopic/DiscussionOfOriginalTopic idiom?)

Responding to PeterKlausner's poins that can be moved back to the HierarchicallyNestedTwikiWebsNaming topic:

  • I am not at opposed to hierarchical organisation, I just don't like to have them fully visible in the namespace:

Well, having the hierarchy at least partially visible in the namespace is one of the reasons for hierarchy. Names collide. WikiNames collide. Separate namespaces mean that you do not have to use ComplexWikiNamesJustToAvoidCollidingWithOtherPages.

I agree that we want to flatten the namesapce as much as possible. Too much hierarchy is just as bad as too little.

I am also interested - this is why I started this topic - in naming syntax that make hierarchy less likely to complexify names. E.g. (I should have mentioned this originally), paths that search .;..;../..;../../.. etc. up to the root of the wiki, if a topic page is not found locally. (Years ago I modified the Bourne shell to do this for UNIX commands. Mixed. Main problem, security, just like having . in the path.)

  • Most wikis map their topic name into the URL;
    consequently, you propose to map hierarchy names into the URL

Yep, probably.

But also note: that doesn't mean that there cannot be other URL to filesystem mappings. I gotta writte KeepingReferenceNamesForever.

By the way, one of the advantages of TWiki over collaboration tools, including some other wikis, that put some uneadable number in the URL, is that TWiki URLs are moderately informative in and of themselves.

  • Your vision of implementing a kind of LiterateProgramming with a wiki by overlaying the project code tree is great, but note:
    • In practice, the code hierarchy depends on the way we all use fs hierarchies
    • Therefore, the wiki namespace is based on fs needs
    • fs hierarchies tend to change constantly -- isn't this your experience as well?

I've certainly worked with companies where this was the case. But I managed to persuade them to see the error of their ways.

In other words, I've had some modest success in persuading companies to make filenames durable, in much the same way we want URLs to be durable.

The biggest obstacle is the act that poorly managed filesystem hierarchies mix up logical naming and physical disk partitions and fileserver assignments. I've found that I can nearly always hide that with symlimks; and I can often do better when I have cooperative sysadmins who will create alternate mount points.

The biggest problem is when a single large logical directory needs to be split across two physical disks. Not a problem when it contains subdirectories, but a problem when it is flat, with a lot of large files. There's a decades old technological fix to this - Stephen Korn's directory continuations (or, in a database, a view which is the concatenation of several tables). I expect to run into this problem with wiki webs within 2 years.

Granted, CVS trees are an exception to this rule because CVS makes it really hard to move anything. But then, this is the most requested feature.

Yep, with me being one of the people requesting CVS rename. Look to KeepingReferenceNamesForever; the same issue applies here.

By the way, renaming in TWiki is broken with regards to version control.

  • Besides this cool new idea (are there other special cases?), a wiki web needs not be constrained by the underlying fs: while it is unpractical, to have just 100 files in one directory, a wiki easily handles 1000 pages in a web

Well, I have worked on projects that had 64,000 files in a directory (running into some filesystem limits preventing going larger). typically, with a database frontend rather like twiki.

Other special cases? Like I said (1) my ulterior motive, mapping wiki onto the project source code tree; (2) making wiki security match UNIX security; (3) name collision.

Frustrating: like I said, all of the same arguments that made filesystems go hierarchical apply.

  • My point is to use this fact and have the hierarchy as meta information outside of the path, thus keeping the visible URLs unaffected by any hierarchy reorganisation.

Flip side:

(1) One of the things that is most awkwad about Apache is that so much remapping can go on. It's good to be able to map; it's bad to have to essentially run Apache to figure out where the file for an URL lives. Most sites adopt conventions that allow big subtrees of the URL space and the file space to match, modulo a prefix.

(2) It sould be possible to map filenames to URLs. But it should also be possible to handle URLs which are no longer in the filesystem. If I can only have one, I'll take mapping, but eventually both.

(3) One of the big reasons why I chose to adopt TWiki rather than Zwiki/Zope was that it is trivial to map the URLs to the filesystem. I've got guys in my project who insist on using UNIX tools like find and grep to search for stuff - who insist on working outside wiki.

How about: I want there always to be an URL that maps to the filesystem. But I also want URLs that are guaranteed not to change, if the fuilesystem gets reorganized. And I want people to use wiki names as much as possible, which similarly do not change.

  • Of course, there are many possible solutions to this problem. But a TWiki with a KoalaSkin and applied parent/child linking works right now.

Helps. And we are not going to lose that.

But it doesn't help me with the fact that I have to coexist with UNIX filesytem security, some of which is most conveniently done at directory granularity.

  • Overall, your ulterior motive is indeed a very tempting reason to implement the directory nesting anyway.

Glad to have tempted you - or are you just saying that to appease me? smile

  • I might actually overcome my (irrational?) fear of "corporate weenies", who could abuse this feature to force the orgchart of the day into the URL namespace.

Just say no. Change your organization, or change your organization. Actually, we probably want the ability to map the orgchart of the day, but we do not want to invalidate existing URLs as a side effect.

Maybe I am just lucky to have worked in companies that are not so short sighted. But, if so, why should you make MY job harder, because your corporate weenies are stupid.

-- AndyGlew - 17 Apr 2003

Interesting discussion. I agree with PeterKlausner, better to use as few webs as possible, and to depend on parents / breadcrumbs within a web. This has worked very well for Wind River where we have now over 20K pages. I have not found a reason yet why we would need hiearchical webs. Breadcrumbs, easy cross-linking, and search are important for a web site, and that does not map well into a file system hierarchy.

And yes, we had many reorgs and have been tempted to rename webs. We decided not to do so, but to introduce a "hierarchical map" of all TWiki webs, reflecting the org chart of the company. This is in lieu of the automatically generated SiteMap. The map mimics a hierarchy, but all webs are flat as we know. Here is a non-functional example for illustration purposes: (links and background color missing)

  • Start here:
    • home.gif searchtopic.gif changes.gif notify.gif Main web: TWiki Users, Groups, Offices
    • home.gif searchtopic.gif changes.gif notify.gif TWiki web: TWiki documentation
    • home.gif searchtopic.gif changes.gif notify.gif Term web: Glossary of terms
  • Sales -- John Smith
    • home.gif searchtopic.gif changes.gif notify.gif SAtech web: Technical sales -- Tom Miller
    • home.gif searchtopic.gif changes.gif notify.gif SAcall web: Call center -- Mr Beans
  • Engineering -- Foo Bar
    • home.gif searchtopic.gif changes.gif notify.gif Dev web: Development -- Albert Einstein
      • home.gif searchtopic.gif changes.gif notify.gif Bread web: Bread slicer -- Aaa Bbbb
      • home.gif searchtopic.gif changes.gif notify.gif Toast web: Toasters -- Ccc Dddd
    • home.gif searchtopic.gif changes.gif notify.gif QA web: Quality Assurance -- Eeee Fffff
      • home.gif searchtopic.gif changes.gif notify.gif QAtest web: Test result database -- Eeee Fffff

and so on, you get the idea. Since this hierarchy does not reflect the underlying TWiki web structure it can be changed easily with each reorg. Problem solved.

-- PeterThoeny - 17 Apr 2003

Yes, an interesting discussion. I assume that your "hierarchical map" is based on the bread crumb trail?

I guess some of us (not me) use the breadcrumb trail far more than others — my intent was to use multiple webs to organize my private LAN and eventually WikiLearn. But, maybe I can / need to rethink that. Here are the problems that I see with the breadcrumb trail approach (correct me if I misunderstand / am missing something):

  • The bread crumb trail approach doesn't avoid the problem of name space pollution -- I can't have, for example, a page named IfSyntax for both C++ (Cpp) and Pascal unless I actually prefix the page name with Cpp and Pascal (like CppIfSyntax and PascalIfSyntax).

  • If, on the other hand, the bread crumb trail let me have two pages, something like this, that would be helpful:
But, since all pages are in one web that is not possible.

  • Another advantage of separate webs is limiting the scope of a search. If I want to find the "else" in C++, I search in the Cpp web, if I want to find "else" for Pascal I search in the Pascal web. If I was to switch to the bread crumb trail approach I'd want some simple way to similarly limit the scope of a search (and without having prefixes like Cpp, Pascal, etc. for each page).

  • I assume you (who are using the bread crumb trail approach) are not using prefixes -- I'd see little value in having to do this:

  • Tools (of various sorts) don't exist to allow you to easily see and adjust the bread crumb trail. (Maybe some of these problems are just due to my mental habits of observation because I started using TWiki before the bread crumb trail existed and just haven't integrated it into my thought processes — I should be able to change that if it makes overall sense.):
    • In the default skin there is nothing like a "tree view" to show what pages are children of a particular parent. (For example, if I wanted to see a list of all Cpp or Pascal pages. You can't even find them by a "structured search", unless you use prefixes as mentioned above.)
    • Setting the parent of a page is [implicit | somewhat invisible] — if you simply put a link on a page that page becomes a child of the page you put it on. If you want to assign it to a different parent, you must adjust the parent after saving the page (using the "more" menu). Contrast that to the ease of creating a link to a page in another web using the <Web>.<PageName> syntax, with or without the double square brackets. (I am aware that you can use the parenttopic parameter in a URL to explicitly parent the topic as you desire, but that is not the level of convenience I'd like to have — first of all, how many people are going to remember that exists, and how many of those will bother to use it?)

Then, if you have both webs and the bread crumb trail, and you create a page in a different web than the parent page, you can have the interesting situation of a bread crumb trail like this:

TWiki > <Web> > <PageInThisWeb> > <PageInADifferentWeb>

... which seems to create a lot of potential for confusion.

  • And, when people don't pay attention to the bread crumb trail and the length of the names of parent pages, you can get extremely long bread crumb trails:

TWiki > Codev > HierarchicallyNestedTwikiWebs > HierarchicallyNestedTwikiWebsNaming > KeepingReferenceNamesForever

... this is not the worst example I've seen, it was just convenient and, fortunately, it is sensible — mnay times the bread crumb trails that I get (because I'm not conscious of the bread crumb trail or trying to keep it sane) do not make much sense.

For WikiLearn, I had serious thoughts about figuring out how to turn off the bread crumb trail (or reallly, the parent / child relationship portion of it) and use only webs for organization. But, I would like to have the ability to have hierarchical webs.

So why did I write this? I guess first to learn how others deal with the problems I see using the bread crumb trail.

-- RandyKramer - 17 Apr 2003

Just a response to PeterThoeny's comments about virtual hierarchy, and a general comment on how even smart customers can seem pretty dumb.

This is going to sound harsh, but only the people who understand the code or spend all their time thinking about web sites could ever understand or appreciate the beauty of virtual hierarchy, unless extra-ordinary measures are taken by the site owner. I personally think it's great and I have absolutely no problem getting around, because I'm used to looking things up and figuring out things for myself. The average users of most corporate web sites, however, have extremely poor library skills, and don't care what's behind the interface they're using as long as they can quickly and intuitively get to the data they need or publish data to others without any fuss.

Arrr, Tharr Bee Yer Problem... Intuition. Most people don't have it (yes, even smart people) when it comes to using web sites, unless they're presented with something familiar.

Before I wrote MegaTWiki, the folks in my organization (somewhat average to brilliant chip designers) were thouroughly confused by the fact that the URL didn't match hierarchically to the place they had gone to in the web site. Folks generally seemed confused as to where they were and where they wanted to go, because people pay much more attention to URL's than you would think. Implementing hierarchy in the URL that matched what the UI was showing them in MegaTWiki cleared up most of the problem (although it took several weeks of coding && debug). You have to watch out for what these little inconsistencies will do to your average user, and my average users are not necessarily going to react the same way as your average users.

This little book, Don't Make Me Think by Stephen Krug, discusses all the little things that can make a website completely unusable to your customers, and how you can go about making it work. I used it to make make minor improvements to the MegaTWiki skin, but you can only help so many people.

I'd tell you all about the book and how cool it is, but the link should be sufficient wink

While I agree that minimal hierarchy is best, compartmentalization of data is sometimes a necessary evil, if only to keep the unwashed users from stepping on one another.

-- PeterNixon - 09 Jun 2003

Peter, I don't think anyone discussing logical/virtual hierarchies is saying that the URL wouldn't look nested to the end user - it's just the server side implementation people seem are discussing AFAICT. That way the hierarchical view of the website would look the same as the URL. The mapping of logical to physical would happen behind the scenes. (Or at least the way I read it). In this scenario, direct mapping of URL to filesystem is one idea, but a logical mapping allows greater flexibility. (At a trade off for a systems admin performing backups!)

-- TWikiGuest - 11 Jun 2003

Edit | Attach | Watch | Print version | History: r13 < r12 < r11 < r10 < r9 | Backlinks | Raw View | Raw edit | More topic actions
Topic revision: r13 - 2003-09-07 - MichaelSparks
 
  • Learn about TWiki  
  • Download TWiki
This site is powered by the TWiki collaboration platform Powered by Perl Hosted by OICcam.com Ideas, requests, problems regarding TWiki? Send feedback. Ask community in the support forum.
Copyright © 1999-2015 by the contributing authors. All material on this collaboration platform is the property of the contributing authors.