A revision-marking feature displays a page with its entire history included.
The idea is that you render a page with all changes in it, using <insert> and <delete> HTML tags for insertions and deletions. Each tag is marked with a class identifying the version that the stuff was inserted and deleted. You use CSS to make sure <insert>s are rendered just as regular text, and <delete>s are rendered invisible.
For example, let’s take this history. Edit one is this sentence:
Now is the time for all good men to come to the aid of their country.
The next version is:
Now is most definitely the time for all good men to come to the aid of their party.
A third version:
Now is most surely our chance as good men to aid of our party.
The page renders as follows:
<insert class=“rev1”>Now is <insert class=“rev2”>most <delete class=“rev3”>definitely</delete> <insert class=“rev3”>surely</insert> </insert><delete class=“rev3”>the time for all</delete> <insert class=“rev3”>our chance as</insert> good men to come to the aid of <delete class=“rev3”>their</delete><insert class=“rev3”>our</insert> <delete class=“rev2”>country</delete><insert class=“rev2”>party</insert>.</insert>
Note that the first deletion by the third person is split, since we have to have things tree-like to make XHTML happy. The outer <insert> may or may not be necessary.
Anyways, with a CSS statement like:
delete { display : none }
…the above HTML will show the correct stuff. The interesting part is that you can use some kind of JavaScript thingy to show or hide the different tags and classes, according to some kind of input. The user could ask to see the difference between revision 1 and revision 2, and by flipping some CSS switches, we could hide everything that came after that, and show inserts somehow (colored text sounds good) and deletes somehow (strikethrough text sounds good).
It’d be a huge hairy pain in the keester to make this work, but an interesting hack. If there were a technical gain, it would be that a user could look at the changes to a page without any extra hits to the server – all history exploration happens on the client side.