Skip to content
This repository has been archived by the owner on Jul 9, 2018. It is now read-only.

difference(s) since last saved revision #53

Closed
holtzermann17 opened this issue Mar 16, 2010 · 28 comments
Closed

difference(s) since last saved revision #53

holtzermann17 opened this issue Mar 16, 2010 · 28 comments

Comments

@holtzermann17
Copy link

Small things like edit distance or new word count would be helpful to display live.

@holtzermann17
Copy link
Author

And, when reviewing older versions, in addition to “view” and “restore”, how about “diff against current version”.

@laughinghan
Copy link
Contributor

+1
<3 diff

@holtzermann17
Copy link
Author

Marking as high priority because this one seems popular...

@dchandler
Copy link

What about a wiki-style way to move between revisions? Visit any page and click "history" and then to be able to select between revisions. For this to be workable, the people using the document would have had to manually mark revisions at logical places. Etherpad's versioning system "ups" revisions wayyy too quickly for it to be practically useful.

The output would look like this: http://en.wikipedia.org/w/index.php?title=Robert_Hues&action=historysubmit&diff=368472372&oldid=368445724

@redhog
Copy link

redhog commented Jun 18, 2010

I think you really only need two time-sliders, and a normal unified diff or colorized full-text between them :)

@laughinghan
Copy link
Contributor

redhog's suggestion sounds best: I'm imagining a three-column layout, two time sliders above the left- and rightmost columns, the middle column being the diff

@dchandler
Copy link

@laughinghan, that makes a lot of sense. I didn't understand what @redhog meant, but presuming it's that, I think that's a spectacular layout. Way better than what I suggested!

Any ideas on what would be a good diff engine? Is there an open source one that could be leveraged? I found this one so far (Google's diff from diff/merge/patch): http://code.google.com/p/google-diff-match-patch/

Anyone have any ideas of what would be the best kind of diff engine for displaying changes?

@redhog
Copy link

redhog commented Jun 20, 2010

GNU diff can output good stuff. Actually, you only need one text view, not theree, if you use colorization for additions/deletions. I think some wikis already do that :)

@mikkorantalainen
Copy link
Contributor

I believe that the best layout would be as following (ASCII art)
+------------------+
|slider1 |slider2 |
+--------+---------+
|content1|content2|| (vertical scroll bar)
+------------------+ (horizontal bar, possibly draggable)
| unified diff |
+------------------+
That is, a two column display for two diffs side by side (comparable to "meld" display for two files would be really nice, "kdiff3"-like output would be ok). The important part is that both content areas should scroll syncronized with a single scrollbar. In addition to synchronized view, there would be a horizontal panel below the two columns to display an unified diff.

UI behavior:

  • moving a slider would replace the version for that column and redraw all the differences
  • moving the vertical scroll bar should scroll both columns (versions) synchronized
  • moving the horizontal bar above the unified diff vertically would adjust the space that is reserved for side-by-side diff and unified diff.

@dchandler
Copy link

Yes, yes and yes. The one thing I would add is that the time sliders should stay locked (or framed) at the top. Tragically, in the current time slider design, as you scroll down the page, the time slider stays on the page and is no longer visible.

You can't actually drag the slider to see how a document changed. So if you want to look at how text changed that is more towards the bottom of the document, you'd have to scroll up, slide the timer and then scroll down again.

@laughinghan
Copy link
Contributor

@dchandler: I'm assuming you're talking about making the slider position:fixed? Great idea, in fact that would really should be done on the current time slider thing, too.

@redhog
Copy link

redhog commented Jun 30, 2010

Separating the position:fixed issue out into its own ticket

@michaelforrest
Copy link
Contributor

Diffamation is a research project with some good ideas about how to show revisions:
http://www.youtube.com/watch?v=17lz5nt5_jg

The document history shown at the top gives a clear overview of the history of the document, and the sidebar makes it easy to see offscreen changes as you scrub through the history.
The second row of the top consolidates groups of changes into a simplified view, useful to see the outcome of, for example, an edit war, in one step.

The code is open source, written in Java, available here: http://www.aviz.fr/diffamation

Should provide some inspiration :)

@mikkorantalainen
Copy link
Contributor

The diffamation animations look like they could be pretty easy to implement in recent HTML variants. Example:

1) compute HTML diff with INS and DEL elements
2) create page where INS elements have CSS style that make's it
     transparent and size 0x0, DEL elements are displayed as normal content
3) trigger CSS transitions for size and background color and transition INS style
    from transparent and size 0x0 to opaque and normal size, and apply reverse
    transition to DEL elements. A suitable trigger could be a inserting or removing a
    class from BODY element.

The diffamation seems to be about animating the addition of inserted content and deletion of removed content. A pretty simple CSS transition will do and can be displayed by any web browser supporting CSS transitions. The only hard part is HTML diff (and keeping the vertical scroll position stable in case of big changes to document).

@redhog
Copy link

redhog commented Aug 19, 2010

Diffamation seems very much like what the timeslider already does, plus a bit of red and green instead of by-the-letter-diffs...

@michaelforrest
Copy link
Contributor

That's the bit that it sells itself on, but personally I find that timeline along the top that shows you the entire document history more interesting. It also goes a bit further toward solving the problem of viewing changes outside the visible window. If you're not convinced I think fanny chevalier would be interested in discussing her ideas further. She did a nice talk at the last ubuntu developer summit.

@holtzermann17
Copy link
Author

let me add my 2 euro cents and say, I think what we need is to get those "stars" to correspond to saves in git.

@redhog
Copy link

redhog commented Aug 20, 2010

holtzermann17: What??? The stars corresponds to "Save revision" in the document editing UI. What has git got to do with it???

@redhog
Copy link

redhog commented Aug 20, 2010

michaelforrest: Please invite her to the IRC channel (tell me/everyone in advance when she's gonna show up if it's just a one off and she doesn't wanna hang out there forever)

@holtzermann17
Copy link
Author

@redhog: I should have linked to http://github.com/ether/pad/issues/issue/42 --
the idea is that if "save revision" also committed changes to a git, we could
do diffs in lots of useful ways outside of the etherpad environment.

@onetom
Copy link

onetom commented Aug 5, 2011

+1

I just heard some universities (language and linguist faculties) are still not switching to OpenOffice, because the revision handling in it is buggy. (or tracking / recording changes feature in other words).
Indeed I found a couple of unclosed tickets (years old ones...) which talk about such issues.
Now here is etherpad which has change tracking at it's heart and it doesn't feature a good diff display?! wtf?... :/
I can't recommend any good alternatives to MS Word then...
Don't forget, these are not technical people...

I was just trying to use etherpad for putting together a business proposal.
3 pages. It's impossible to do multiple rounds of refinement in it if it's not happening realtime :(

@fchevalier
Copy link

Hi, just came across this thread. Thanks Michael for mentioning my work on Diffamation. I would be happy to talk more about it, if you guys are interested.

You may also find another, more recent project I worked on of your interest: Gliimpse - http://www.aviz.fr/gliimpse/

Don't hesitate to contact me for further discussion!

Fanny
fannychevalier.net

@JohnMcLear
Copy link
Member

Oh this is really old but good timing(as of today) as this is now available on etherpad master in 2 formats.

  1. through a plugin that shows a diff view
  2. through the api that shows the humanified HTML representation of a diff.

So all bases covered if you don't use the old etherpad.

Update today @ http://etherpad.org

@fchevalier
Copy link

The novelty of Diffamation and Gliimpse lies in the smooth animated transitions. It doesn't look to be what etherpad supports (or I can't find it?)

My understanding is that the timeslider replays a screencast (which differs from Diffamation, which smoothly transitions between two revisions).

@JohnMcLear
Copy link
Member

Right but the title of this issue and the original request was "difference(s) since last saved revision
Edit" and I believe we accomplished that.. It would be possible to do some sort of animation on new/removed/modified content though. I guess if diffiamation/glimpse is really that important whack a plugin request on the etherpad lite repo and see if you can secure some sponsorship for it and I will be happy to oblige.

@fchevalier
Copy link

Thanks for your reply john. I came across this thread serendipitously yesterday, and since my work was mentioned there, I was just offering to follow up the discussion in case I can facilitate the integration in your tools.

@JohnMcLear
Copy link
Member

Ah okies :)

@JohnMcLear
Copy link
Member

exists in etherpad lite

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Projects
None yet
Development

No branches or pull requests

9 participants