4 ms·
A few comments here about lack of version control being a problem generally with low code. We're a low code platform (app integration) and what's worked well f
by danjc 3y ago
A few comments here about lack of version control being a problem generally with low code.
We're a low code platform (app integration) and what's worked well for us is to have the platform store the generated workflow design (yaml/json) in source control.
Additionally, we map environments on to source control branches so merging to a branch is what promotes a design version to qa or prod.
- v-erne 3y agoAnyone who lived through Model Driven Development era (late 90 and early 2000) knows that this solves only like 20 percent problems that those who complain about lack of version control are really talking about. The real unsolved problem is lack of visual comparators that could show what really changed between versions. If you try to do diff those text serialization formats (those being yaml, json or, in old days, xml) you have to do a lot of mental gimnastic to map those onto visual changes that are meaningful. And most potential users of your low code tools are not capable enough to use it this way. If you take into considetation that visual comparators of workflows is extremely hard problem to solve (probably only bunch of people in the whole world is cable enough to do this in a way that anybody sane would use) then you easily see why all visual dev tools of last 30 years went bankrupt. And if you did any sensible research you would know there were hundreds attempts at it with some spending hundreds of millions of dollars (Rational and later IBM being main ofenders here)
- jsunderland323 3y agoI wish I could show you something I’m working on — I’m just finishing up documentation now. I don’t think many people get this too. I haven’t launched yet but I think I solved this problem, my email is in my bio if you have any interest in talking about sane visual diffing and merging
- v-erne 3y agoYou mean floro (your nearby comment mentions it)? Hmm this looks more like na attempt at building better merger by getting rid of unstructured text and replacing it with some kind of structured/hierarchical data. I think that this can be useful but I don't see how this helps to solve general problem of visualizing diffs between workflow versions (and making it readable and mergeable for mere mortals)
- jsunderland323 3y agoYeah, sorry (as I said in the below comment the site is super incomplete, showing screenshots of visual diffs is actually not that easy and I am yet to upload a demo video). Probably can’t give a great pitch here but the whole thing is based around building diffable plugins (which are really just html documents that are run in an iframe). Most of the documentation at this point is based on teaching version control to mortals rather than demoing the 4 diffable applications I made to launch with. But it really is built for mortals and is generalized so anyone can build applications that can meaningfully diff. There’s some snippets of a visual diff in the docs here https://floro.io/docs/product/product-and-terms https://floro.io/docs/product/product-and-terms. If you do want to give feedback or see a demo I’d love to chat. Again, my email is in my bio.
- JonChesterfield 3y agoIt is deeply stupid that I spend much of my time looking at C++ (and asm, and IR...) diffs in a tool that looks at the raw bytes instead of at the AST they represent. Likewise git merge would do a lot less damage to codebases if it spliced the AST instead of the raw bytes. I'm at some risk of replacing that with something hacked together out of XML. Hopefully you're doing something useful in this space.
- jsunderland323 3y agoTotally. Sadly I’m focused on GUI use cases and not AST. I’m more focused on making distributed version control for tasks that are handled better by visual editors than plain text. Universal AST diffing and merging is probably an impossible problem to solve (entirely). You could write a driver for llvm that would work for any language that shares the same IR state. Even then there’d be a lot of cases where you’d have to depend on a developer to manually resolve syntactic conflicts and enforce consistency in the IR state, which makes it pretty impractical. But two things, first, I would look at Pijul, my understanding is there is (some) support for AST diffing and merging. Second, git does support custom merge and diff drivers — I’m not sure if this is where you’re going with your xml hack but I don’t think it’s too cumbersome to write a custom differ if your painful conflicts are relatively constrained to certain functionality or part of your code base. My site is half built (lots of broken links and only half of the documentation is done so please don’t judge me), but I think my technical explanation does an okay job of talking through some of the complexities to think through in regards to structured diffing and merging. It might be helpful to you if you do decide to write a git merge driver. https://floro.io/technical-overview-part-1 https://floro.io/technical-overview-part-1