This is a huge surprise! I had been under the assumption that asynchronous semantic edits were the only true way forward. Synchronous large-scale edits?! If you can make it work, even only half of the time... that is an enormous productivity boost.
Well--fair warning, it's happy hour--but allow me dump my incoherent gut armchair objections.
- Large-scale edits mess with large-scale invariants. Can this edit calculus and scoping mechanism truly deal with arbitrary changes? Or is "arbitrary changes" a white rabbit, and can you come up with a calculus that handles all "reasonable" changes?
- I had previously thought that the only way we're going to get past the {software upgrade,data migration} bottleneck is through semantic VC. Developers make mistakes. Software evolution as a gradient (rather than the status quo of progress in fits-and-starts) seems extremely unsafe. Does Unison make all mistakes undo-able?
- Won't "branchless" conflict-free versioning be the same as constant forking, creating an enormously fragmented software project? (So postmodern!) How do you get everyone back on the same "master" mainline; surely not all possible Edits can commute?
I guess all these concerns are irrelevant if you treat synchronous editing as the golden path, and fall back to async for the hard stuff.
Well--fair warning, it's happy hour--but allow me dump my incoherent gut armchair objections.
- Large-scale edits mess with large-scale invariants. Can this edit calculus and scoping mechanism truly deal with arbitrary changes? Or is "arbitrary changes" a white rabbit, and can you come up with a calculus that handles all "reasonable" changes?
- I had previously thought that the only way we're going to get past the {software upgrade,data migration} bottleneck is through semantic VC. Developers make mistakes. Software evolution as a gradient (rather than the status quo of progress in fits-and-starts) seems extremely unsafe. Does Unison make all mistakes undo-able?
- Won't "branchless" conflict-free versioning be the same as constant forking, creating an enormously fragmented software project? (So postmodern!) How do you get everyone back on the same "master" mainline; surely not all possible Edits can commute?
I guess all these concerns are irrelevant if you treat synchronous editing as the golden path, and fall back to async for the hard stuff.