There is a huge need for a diffs module!

This Wikit is an excellent Wiki and it is certainly one of the very best.

Please see what I wrote here here: http://c2.com/cgi/wiki?InnovativeWikiFeatures . # 18. You guys have the best reverse links module of all the Wikis!. I also discuss your free links and your number for files system. (# 7 and # 8). But there is more to come: I like the system where a page returns to the saved page after 2 or 3 seconds. I will also discuss this feature.

Well done Jean-Claude!

But IMHO there is a huge lack here: a good diffs module. This is to inform the user of the changes between the last version and the new so that he/she does not have to read the whole page to see what has changed since the last version.

NEM - Have a look at wikidiff. It's hosted externally, but does a decent job.

RA Thanks NEM! But this module needs to be integrated here and we should be able to view diffs for each page. See C2.com to see how they do it (click on the date at the bottom of each page).

Andstuff.org has another way of doing it. The Diffs is simply the act of comparing a page version and the one before it. Look at the history module. In the history module you have 3 functions: a possibility to view different versions for each page; a comparison of different versions and a diffs (a comparing of the last and the new version). Usermod.com has the same system. So does OddMuse. This is what you need here. A good history module. TCL Can do a real good job for it.

Come on you guys you are so many gifted programmers! Go for it!. If you want I can give you the code for a diffs module written in Python so that you could get good inspiration! unperson

Is saying it once not enough? How many pages are you going to fill with the same message? -jcw

T'as raison Jean Claude. Desole! je pensais pas que l'on avait lu ma page. Bon alors enchante de te connaitre quand meme! :-)

Je peux te demander. Pour installer Wikit localement sur mon ordi, ca prend quoi comme programme? (je suis sur Windows 98). Un grand merci.

Salut/hi. Depends on whether you want a server or a local Tk mode. The server uses the command-line tclkitsh [L1 ], for a local GUI, use [L2 ]. Plus wikit.kit [L3 ]. The wikit docs are not very good, nor easy to find. Best is probably to start here [L4 ]. -jcw

In English: sorry! I didn't know you guys actually read pages entirely so I took the liberty to repeat the same message twice just in case its reading was skipped! No offence I hope! :-) unperson

LV Well, many people read the wikidiff highlights, as well as the Recent Changes page religiously. However, if you will pardon me saying this, your perceived need is just one of many perceived needs by people, and in this case, one which has been addressed out of band for this particular web site. If you browse the archives of the tclers wiki mailing list, you will see that people have in fact worked on this need. I don't know what the status of any of that work is though.

Addressed out of band? If it's "out of band" which I suppose means unneeded, then why would some people have worked on it? Doesn't make sense. Unless I don't understand what you're saying! :-) Perceived need! You are kidding! Who wants to read whole pages all the time to see what the changes are compared to the last version? A diffs is a huge need like the title says. It's not just another fancy feature! unperson

LV by out of band what I meant was that one can use wikidiff or use the WWW cvs interface to the wiki pages to create your own equivalent. I don't mean unneeded - just not perceived by the those doing maintenance on the wiki as being needed enough to put it in.


NEM This is all getting a bit heated. The features that RA mentions are some which I have thought might be useful. An in-built diff function, with more fine-grained versioning (rather than the daily wikidiff) would be useful. As would being able to add a brief description of changes made when editing a page (a quick one-liner which shows up on Recent Changes). However, typically, few changes are made to an individual page in a day, and so wikidiff (or a quick manual scan of the page) is usually sufficient. Also, most people tend to add new content at the bottom of pages (as I am doing here), making it pretty easy to see what's been added.

I'm glad RA is making constructive comments (although, in future it might be best to add them to Suggestions for Wikit rather than creating new pages). Ultimately, though, like much in life and free software --- if you aren't prepared to do the actual coding, then it is unlikely to get done. The wiki isn't perfect, but it works.

MR See ProjectForum for an example of a Wiki that does fine-grained versioning and highlight of diffs. So yeah, I agree its useful!

Another example of a very nice, professional looking wiki: http://www.wikitravel.org/article/Main_Page

Try also: http://www.andstuff.org and http://www.usemod.com unperson


male - 2003-11-07:

Sorry to say - there is IMO a big need to diff wiki pages!

Why? Just because, many people work on many pages adding, changing, removing much text, but it is very often very difficult to realize what was changed, added, removed, ...! Many wiki pages grow, but grow to be confusing more and more.

So - people authoring wiki pages should claim and then keep standards to allow pages to be reviewed much better, or we need a diff system to allow a much better review.

One standard could be to begin a page new content with the author name, authoring date (and perhabs time) and to seperate this new content with horizontal lines from older contents.

Sometimes I desperate trying to analyse what's new on a wiki page, what's changed, ... .

So please claim and keep standards or extend wiki's functionality with a diff module.


Many people agree! But the problem is there are not many people who would like to program it. I am sure this is not an easy task to do! I'll be putting on the code I have for diffs in Python. Maybe some people could understand it. it is public domain; written by Scott Moonen of And Stuff.org

NEM Woah... easy there fella. We already have diff in Tcl and wikidiff. The work which needs (if you feel the need) to be done is to actually put the code into wikit, and to convince jcw (who wrote wikit) and others that it is worth while including. If you really want this feature, then learn Tcl, grab the wikit code, and start hacking. Then ask on the wikit mailing list about submitting a patch. The code below isn't terribly useful, as it's in Python, and most of the work appears to be done in SequenceMatcher imported from "difflib", for which code is not shown.

MR FYI, the core algorithm akin to Python's SequenceMatcher is in Tcllib (the list code inside the struct module.. an update of the diff in Tcl page noted above)

KBK - In fact, I wrote struct::list::longestCommonSubsequence and the earlier diff in Tcl because someone (Pascal Scheffers?) was working on a diff module for Wikit, and was struggling with the core algorithm. I don't know what became of the project, but the hard part is done.

jcw - Adding diff would be great, but it needs some thought. All pages are in one MK datafile, but the history is not. That was done so one can always grab wikit.tkd.gz (wiki database for offline use) as a snapshot of this wiki. Pages changes are optionally saved as one file per page in a separate directory. On mini.net, there is a daily cron job which feeds each change into CVS. This could be changed to feed each change right away (some issues here with concurrency / race conditions). Then a built in diff could work with the CVS repository (as PS's wikidiff does, from another server).

Another option would be is to store all versions in another way (a VFS file would provide compression), and then ignore CVS and do diffs against that archive. In that case, I'd prefer to keep the history of each page limited. The current CVS setup could be kept and store full history.

Lot's of can's and could's, but yes, it can - and could - be done. I welcome suggestions. Better still: code and patches... (the best venue for discussing this is probably the tclerswiki mailing list at yahoo groups).


KPV 2003-11-07: check out Wiki History Diff for a simple way of checking the changes on any given wiki page.


unperson KPV, Yes indeed this module is a great start!

Thanks JCW! How about doing this right here on this page or on a page called Wiki Diffs code?

I don't know how to program but I am pretty good at algorithms. It would be great if we did it all together the way I used to do it with my programmer: we'd be writing the function in full words and someone else would come and put the TCL/TK code.

Ex: "1) Open the file"

But of course the sentence in plain English would be hidden from the code. Something like /* and */ there is on C. Or //.

Also there is no rush so it's great! We can move at our speed!

Last point: we could do all sorts of things collectively this way here on this wiki. I believe TCL/TK kicks ass and it would be awesome to work on projects here collectively.

To tell you the truth I am more enclined at doing things on Wikis more than expressing my opinions on this and that. I have started atrnding forums in May 2003 and wikis in July 2003 and already I have had it with discussions. I want action, I want to do things and I am sure a lot of us here feel this way.

I believe the first step is to make a Diffs Code Module in progress. We'll put Scott's code in Python and try to establish what the algorithm in Python was.

That could be a great start!

What do you think?

PS: I need to ask you. Here when we save a page we get this ... page saved. Is that equivalent to the Thank you page on C2? I know that in some wikis we have to click on the page saved. It's a sort of refresh procedure. Here if we don't do anything for 3 seconds the page goes to the view mode. This is very innovative. Was that the idea? To refresh the page?

The aggressive exchange I had on this page with MS was funny! Can we get a copy somewhere?


February 20, 2004 sm See Wiki Revision History Feature for a solution to this need.


LV Of course, this whole topic is moot, now that the wiki has the History link on each page. From that page, one can find at least two different types of diffs, and can get the diffs between various versions of the page.