todo.txt 2.0 KB

1234567891011121314151617181920212223242526272829303132333435
  1. Todo, when I find the time:
  2. - See if composite deltas can be re-implemented with primitive deltas that depend on their contents
  3. Motivation:
  4. - No more need for a 'CompositeLevel' class that keeps track of which delta is contained by which composite.
  5. - Composites that contain a common delta could be made conflicting (this is consistent with our "rules": a conflict can only occur between deltas that have a common dependency)
  6. Difficulty:
  7. - Still want to show/hide deltas at certain level.
  8. - Add Version.getGraphState()
  9. Motivation:
  10. - Often, we need the graph state (i.e. snapshot) associated with some version, e.g., to make an update to it (creating a new version).
  11. - Currently, we use all kinds of tricks (sometimes very slow replaying of all deltas since big-bang, sometimes the more efficient rollback/forward from our current graph-state) to get a certain graph state.
  12. - Code would be easier to read if we can just get the GraphState out of any Version.
  13. Difficulty:
  14. - Decide how often to store snapshot. Tradeoff between memory use and speed.
  15. - In a first (naive) implementation, could just keep all generated snapshots (in lazy manner) in memory, forever.
  16. - Make Version.findPathTo(v:Version) more efficient (use breadth-first search)
  17. Motivation:
  18. - This function is used very often. It makes code easy to read.
  19. - Currently implemented using Depth First Search (with a little heuristic)
  20. - Fix import/export (serialization) of versions.
  21. - Think: should self-embedding really be used for 'tagging'?
  22. Pro: Self-embedding already exists implicitly, why not allow it explicitly as well?
  23. Con: Makes several parts (e.g., merging) of the codebase more complex (need explicit tests to prevent infinite recursion)
  24. Con: Do we even need tagging? A global operation like "give me all versions with tag X" will never scale as the number of versions goes up. Everything should be scoped. A tag should only have meaning within a well-defined scope.
  25. - Think: Introduce read-dependencies