User's perspective on software quality
5 posts • Page 1 of 1
Showing gephi to some new users one thing they were soon looking for was an 'undo' button. What better way for people to learn that experimenting? However without undo the user can be servery punished for this. Plus we all make mistakes from time to time. Any editor that is beyond trivial needs an undo, for we are mere mortals.
I agree undo is very important but unfortunately it's also very difficult to implement and could cause serious performance issues. An undo system introduces the abstraction of an action and all modules needs to use it to be consistent, which is quite hard in a modular architecture like Gephi. To do it right all modules would have to modify the way they do things and declare their action to a central undo system and provide a way to revert their action. The issue is that it's not possible to revert all actions when you manipulate a graph structure. If I delete nodes or change the color and I want to undo these actions, significant amount of memory needs to be used to store states. For instance having undo for the layout means ou have to store the positions of all nodes. So eventually I'm afraid we won't be able to do undo on all actions which would make the system awkward to use. It's not an impossible task though but we need to do it right. We need a good API and action implementation, as lightweight as possible for modules. We also need an implementation that can control the amount of memory it uses and possibly use the disk to serialize objects. Maybe it could be a proposal for next's year GSoC?
Excellent idea, however is a lot of work to implement the logic of undo. My supervisor of my scientific initiative, it is common User is complicated for her most of the time, it was pretty hard to convince her to drop other tools for graphs and start using gephi. We set up the development environment here in my lab machine, I am implementing a way to export large-scale graphs in vectorized images. When finished I try to make this logic unwinding.