6 ms·
> Also, no version control. Or, in our case since we used XML for output: poor version control. Reading horror stories about Excel also confirm this, it is hard
by bmitc 6y ago
> Also, no version control. Or, in our case since we used XML for output: poor version control. Reading horror stories about Excel also confirm this, it is hard to do correct complex programs in visual environments.
Just because some visual systems don’t have version control doesn’t mean they can’t exist. It isn’t like text-based diffing just poofed into existence. Someone had to build them, and even then they aren’t all created equal. For example, I use P4Merge to diff and merge from Git instead of using the poor UX of the built-in terminal tools.
I would argue that visual programming languages are much more ready to be diffed and merged than text since they usually already represent a graph.
- yoz-y 6y agoGraph annotations matter a lot for diffing I think. I think this is actually a good space to explore as it is a hard problem, and would require some serious UX research on how to handle this. I feel that the one-dimensionality of text makes merging and reasoning about diffs simple, because they are easy to represent side by side. To diff something like an image, or a graph, you probably want to see them on top of each other, however that makes it harder to see the whole.
- Wowfunhappy 6y ago> To diff something like an image, or a graph, you probably want to see them on top of each other I look at revisions of Keynote slides this way (side by side) via Apple's "Show Revision History", a feature I'm frankly much too reliant on. The only difference is that with code, editors actually highlight the changes between snapshots. Ideally, you'd want to add that.
- endergen 6y agoAbstract has pretty impressive diffing for Sketch assets and is basically Git/Github for designers
- HPsquared 6y agoFor Excel there is Microsoft Spreadsheet Compare, which shows the files side-by-side, highlighting differences in data/formulas/properties, and also shows the differences as a list. It can be quite clever, e.g. figuring out that columns or rows have been added or deleted (much like a diff on a text file).
- lmm 6y agoThat sounds like vaporware to me. I might be interested in adopting a visual programming system that had good version control. But so far they don't actually exist.
- deleted 6y ago[deleted]
- theamk 6y agoThe problem is that text is universal, while each visual language is different. One would need “universal visual language representation” file format if they want the visual languages to become as popular text-based ones are.
- bmitc 6y agoAnd yet, semantic diff and merge is a thing exactly because text is not universal when it comes to programming. Text is universal when you want to diff text but not when you want to diff programs.
- theamk 6y agoSure, semantic diff is nice, but it is purely optional. One can diff programs as text and get pretty far -- after all, that's what practically every version control system does today. The current products do have a bit of semantic knowledge, in the form of syntax highlights and function navigation, but those do not require full language understanding, fail gracefully if they are wrong, and often can be implemented with just a bunch of regexes. This makes then writing a new text-based tool simpler (even if semantics is wrong, it is still useable). It also makes writing a new text-based programming language simpler (even though existing tools don't know my language's semantics, they can still work with the text including diffs).
- josephg 6y agoSpeaking as someone who's been working in the space of collaborative editors for a decade or so: There are universal-ish formats for data (eg XML, JSON, etc). There are also sets of pretty standard operations for modifying data - for example, "insert", "move", "remove", etc. The same set of basic operations show up again and again for a reason - in ShareDB, Automerge, Yjs, etc. And you can use those operations to implement most applications. I don't think semantic diff is ever what you want. Ideally you want your editor to capture the user's intent directly through the semantics of their actions. (Signal is lost reconstructing that in a diffing tool). But I bet visual programming could be expressed pretty well in a standard language of semantic changes. And then version control is something you could build on top of that in a pretty straightforward, and reusable way. (It'd be an awful lot of work - but I doubt there's unknown unknowns lurking out there.)