On Dec 18 2012, Peter TB Brett wrote:
There are a few ideas I've had for "general principles":
1) Use whichever tools / languages / libraries will let us get something
working fastest. If that means using Vala, GObject & Clutter, so be
it. If it makes better sense to use C++ & Qt, that's fine too. Yes,
the same goes for file formats.
Various more random thoughts...
Regarding file-formats, consider also:
Database vs. file? (Would a database even require explicit saving?)
ZIP container vs. separate files
We could consider making the format deliberately transactional (possibly
related to the operational transform stuff). This might make some types of
changes in the design friendly to view as a diff in a version-control
system. (It might also make simple edits look more complex of course).
Undo is an interesting, and partly related question too. Should it be
supported by the core library, or a feature of the editor(s)? (We might
want to turn it off for automated input).
Should undo be inherent to manipulation of the data-set, or explcitly
requested? (If the former, some logical grouping hints might be required to
bundle change-sets together).
A transactional file-format, where the transactions are part of the on-disk
format would allow us to undo/redo by clipping or extending the list of
transactions we apply to the data-set. It would also mean undo data could
be saved persistently on disk.
Can we use GObject properties to implement undo? We might need an object's
entire internal state to be completely defined by its properties so this
can work? (That is probably a good thing anyway).
What about copy-on-write like various modern file-systems? Objects then
basically become immutable, and undo / redo becomes switching between
snapshots of the state.
Do we _want_ undo data to persist on disk somewhere? (We could have a
manual operation to throw it away and condense the design history).
Best wishes,
Peter
--
Mailing list: https://launchpad.net/~geda-developers
Post to : [email protected]
Unsubscribe : https://launchpad.net/~geda-developers
More help : https://help.launchpad.net/ListHelp