|
From: Kristian O. <kri...@he...> - 2001-02-26 19:28:17
|
I'm taking a course on GUIs at my university, and I got an interesting idea that gets rid of the "Save" feature completely by saving the file automatically when needed. To make this work properly, the editor needs an internal version control system, much like CVS but simpler, that lets the user go back to any earlier version of the file. From the users' point of view, the file on hard disk and the editable copy in memory are always synchronized, so he doesn't need to think about saving at all. Also, he gets the benefits of version control. A local GUI design/research group is doing research on how to do this in MS Word. The research is still unpublished (and unfinished, I think), but the lecturer, who is part of the research group, told the main idea. I began to wonder if this could be usable in jEdit. Here's how it works: jEdit periodically checks if the file has been modified since last auto-save. If so, it generates a diff between the versions and saves it in a file that contains the version history of the edited file. This is much like CVS. The edited file itself is also saved, in a normal (plain) format that makes exporting easy. The whole thing is transparent to the user. IVCS also supports snapshots, or tags in CVS language. The user creates a snapshot of his work whenever he wants, and can easily go back to it whenever he wants. He can also go back to any version, as in CVS. As jEdit is a programmers' editor, there should be support for working with projects, like making a snapshot of a bunch of files. However, IVCS is not ment to "replace" CVS, but to make text editing more comfortable. There is a project called Subversion that is supposed to replace CVS eventually. The Subversion project documentation has a good description of a modern version control system. I think it's worth reading before designing IVCS. The URL is <http://subversion.tigris.org/index.html>. This would require quite a bit coding (but at least the diff algorithm is implemented in jDiff:) and there are a lot of details to be worked out, but do you think this is a good idea? -ko |