Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Keep track of graph operations #23

Closed
bergie opened this issue Nov 20, 2013 · 7 comments
Closed

Keep track of graph operations #23

bergie opened this issue Nov 20, 2013 · 7 comments

Comments

@bergie
Copy link
Member

bergie commented Nov 20, 2013

Currently we operate on the JSON graph format from NoFlo. That format is a good snapshot of the graph state, but what we really need is a format recording the graph state as a history of operations performed on it.

So instead of having a list of nodes, you'd have a history of operations like Add node Foo.

This would enable multiple useful things:

  • Infinite undo
  • Easier implementation of real-time collaboration
  • "Replaying" graph creation as a teaching tool, consider flowcasts, maybe even synchronized with audio/video recorded from the collaboration session

Here is some argumentation for the importance of undo:

In the case of NoFlo UI, having easy availability to undo would also have the benefit of making our various gestures a lot safer, as you can always step back.

On implementation:

@bergie
Copy link
Member Author

bergie commented Jan 8, 2014

@jonnor has put some thought into this with GEGL: https://git.gnome.org/browse/gegl/tree/docs/journal.txt

The text/event-stream format might be suitable for storage: https://developer.mozilla.org/en-US/docs/Server-sent_events/Using_server-sent_events#Event_stream_format

@bergie
Copy link
Member Author

bergie commented Jan 9, 2014

It might make sense to follow the same operations convention as in the Graph protocol

@alfa256
Copy link
Contributor

alfa256 commented Jan 30, 2014

A journal file is desirable for the purpose of documentation, e.g: How to add plug-ins to this program? And the recorded operations show the process of connecting a new plug-in component to the system step by step.
Another approach for existing flows can be a semantic diff between the json representations of them. Changes on iips, process names ( detected if the same component has the same connections as before ), component names ( detected if process name and connections stay the same), changes on connections, positions based on the metadata, icon, etc.

@jonnor
Copy link
Member

jonnor commented Feb 3, 2014

Yes, we ideally want to enable playback of the creation of a graph in a viewer, and to allow annotations like audio/video commentary

@jonnor
Copy link
Member

jonnor commented Feb 3, 2014

I've started prototyping a backend for this now: https://github.com/jonnor/noflo/tree/graph-journal

@bergie
Copy link
Member Author

bergie commented Feb 14, 2014

The initial Graph Journal has now been merged into NoFlo: noflo/noflo#139

@jonnor
Copy link
Member

jonnor commented Feb 25, 2014

#93

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

No branches or pull requests

3 participants