From: Joel U. <uck...@no...> - 2001-06-10 07:23:25
|
In an effort to see what versioning features are embodied in other Wikis, I went to the list of Wiki implementations (http://c2.com/cgi/wiki?WikiEngines ) and took the grand tour. Here's what I found. There aren't a lot of Wikis that have versioning; I made some notes about the ones that do. The notes became shorter as I went, mainly because I started seeing the same features repeated in the latter Wiki clones. Here goes: TWiki http://TWiki.org/cgi-bin/view/Main/WebHome Diffs are hard to read, too cluttered. The version links at the bottoms of pages provide quick access to the four most recent page versions as well as diffs from one to the next. The ">.." link will allow you to retrieve any version, as well as show diffs between any two versions. These diffs are incremental, though, e.g., if you want to see the diff between 1.30 and 1.1, you get all of the diffs in between, not a nice single diff. UseMod Wiki http://www.usemod.com/cgi-bin/wiki.pl "View Other Versions" link leads to a list of archived page versions, for which there are links to view full pages and diffs. Diffs are clean, easy to read. Diffs are always against current version, which is obnoxious if what you want is a diff between two non-current pages; moreover, this makes diffs with older pages just about useless, because the diffs are so huge. A neat feature is the way major and minor revisions are handled. The edit page has a checkbox for designating an edit a minor revision, in which case it's noted as such in the revision list. Also, there's something called an "author diff", the function of which I have yet to determine. Why Clublet http://clublet.com/c/c/why?page=HomePage I don't like their versioning system at all. There are VCR-like buttons for moving between versions, but apparently going from version 900 back to 500 would require 400 clicks. Also, the diff mechanism is too austere for my tastes---it shows you what's new, but not what's gone. The "gold bar" for marking new material isn't a bad idea, but then how do you mark something that has disappeared? Web Macro http://wiki.webmacro.org/WebMacro Previous versions are accessed via a "View previous version" link at page bottom which decrements the page version by one. Same too-many-clicks problem as Clublet above. No diffs. Wikki Tikki Tavi http://tavi.sourceforge.net/WikkiTikkiTavi "View document history" links to a version listing much like the Use Mod one. Diff is attractive, easy to read for someone who doesn't know anything about diffs. Any two versions may be checked to see a diff between them. Does this mean the diffs are generated on the fly? (If not, the number of stored diffs would grow exponentially.) The "Compute Difference" button makes me think so but I can't find it on their site. MoinMoin http://www.python.org/cgi-bin/moinmoin Version links are tiny little icons in the upper right. It is not obvious what they do on first glance. The "Info" one contains a table of revisions. The diffs are all against the current version. Color coding is a good thing, I think. PikiePikie http://pikie.darktech.org/cgi/pikie?PikiePikie Previous versions are accessible via numbered links at the bottom of the page. Probably not a good solution if there are lots of revisions. No diffs. Swiki http://pbl.cc.gatech.edu/myswiki/ Uses strikeouts for diffs, not overly easy to read. (Little icons are neat, though). Previous versions are available in full, or as diffs with immediately prior and later versions. Button interface and large spacing is not overly attractive, and it is not obvious what buttons will do when viewing diffs. WikiWorks http://wiki.cs.uiuc.edu/VisualWorks Diffs are poor. History displays as a table, with links to old versions. END OF TOUR So, here's what looking around has suggested to me: 1. Should changes be stored incrementally, and old pages built from them? Or should diffs be calculated from stored pages? The former conserves storage at the expense of CPU cycles, the latter the opposite. Or maybe incremental diffs and old pages should both be stored, period? This seems like a basic design decision, rather than something that would be user-configurable. 2. Buttons/links associated with versioning (and everything else!) should have obvious functions, or at least ones that can be determined after a few tries. Duh. MoinMoin was a particularly egregious offender in this regard. 3. Diffs should be easy to read, but not so sparse as to omit useful information. I like the way diffs are done in phpwiki right now. Good job, guys. 4. Computing diffs between arbitrary versions on the fly (as in Wikki Tikki Tavi) is neat, and wouldn't be that resource intensive, since how often would anyone actually use that anyway? Of course, that may also be an argument against implementing it in the first place. 5. Ability to access all revisions from a single page is a Good Thing. Having to click a zillion times to get to the one you want is not. 6. The major/minor revision distinction would provide a good way to tag pages that were altered, e.g., to correct typos. It could also be used by someone malicious who wanted to draw attention away from revisions, though. This, like all things Wiki, would depend on the goodwill of the user. 7. How exactly does the current version of phpwiki decide what to archive? I've noticed pages with archiving for the immediately previous version, a version more than one change out of date, and no previous versions at all. What's the deal? -- J. |