Saving is Obsolete: Etherpad adds time slider
etherpad.com
etherpad.com
Is it all strictly online? If it also works offline on the client, how does it deal with synchronizing multiple "timelines" created by copying the saved file?
They say "With our new Time-Slider, you can browse the complete history of a document using a familiar user interface." (emphasis mine) It says nothing about editing.
But it seem unlikely the edits you did last week between revision 2.3 and revision 2.4 would especially interesting to look at. Perhaps yesterday's edits would useful...
What I would like would be an editor which would go-back only on a given selection (cutting and pasting would make implementing such a feature hard but git because clever things...).
They don't display it as a tree, but it's logically identical -- just flattened out into a list form with the inactive branches grayed out.
but not for hacks writing web content or your mother writing an email.
I was doing some research for a paper on fine-grained version control to be able to deal with web content, recipes, songs, and other types of "documents" which rely on things other than paragraphs and lines. There has been a LOT of research done on the subject and I found some papers that deal with version control for Web content and some for dealing with XML content.
Drink more water between takes, of course, but also try slicing up a granny apple and having a few bites before and during (that supposedly helps your mouth toe the line b/n too wet and too dry).
Example from notes I took during an interview with Marcus Nelson of Uservoice. https://pstam.etherpad.com/ep/pad/view/ro.XF6No8LU/rev.1087
No one has time to commit EVERYTHING they may want to undo. Also, browsing through history in a version control system takes much longer than dragging a slider.
Another useful case for it is when you're just putting in a bunch of debugging statements that you don't want to be committed later. I find myself doing undo/redo all the time for doing stuff like this. I think a more advanced undo/redo would definitely help out.
That's why you squash the commits when you are done with the profiling. Squashing the commits makes it seem like just one commit (and one commit message) in the log.
This way your log is clean, but you get the advantage of frequent saves.
If you dont want to do this, you could probably hook up something with FUSE
http://akkartik.name/codelog.html (from 2005; now I use git instead of darcs)
But for source code control... I was thinking nuh-uh... but it might actually be helpful at least until check-in. Shucks. I dunno.
The big features are the nice GUI for it and the persistence of the history.
This would be like saving each "undo-able" action with the document. Though, you could also do this by using log-style persistence, saving only the accumulated changes and playing them all back to get the final document. I assume thought that their 'bookmarks' are snapshotted complete copies of the document to limit the 'playback' required.
Algorithmically it shouldn't be complicated. Maybe they just keep history of what happened in the environment and reproduce it. Maybe they even have some checkpoints saved so that there is no need to reconstruct it from the beginning every time. And maybe they can compress events. Instead of: (type a),(type s),(type k) they have just (type ask) and in case you want better granularity they have it recorded somewhere.
Actions can "do" and "undo" themselves against the document trivially. Then to save space, you compress adjacent actions into single actions (e.g. add('a', 0) and add('b', 1) compress to add("ab", 0)).