That being said, I find the rationale a little bit confusing. I rather love IaC, and consider a GUI or no-code/low-code tool to be more of a dead end (not for any fundamental reason, but for more practical reasons) than plain text. I do really appreciate the problems solved by the simulation approach, but to me these two things are orthogonal. I feel like you could have a product that functionally does what your product does, but with a plain text interface. I appreciate that you're really going for something different here, but I am sure I am not the only person who feels this way.
But you're not alone in thinking this, and I completely understand why you would. The history of things that look like this in this space is.. not great. :)
I'm really not sure that this is a bad thing.
> there isn't a good way to "see" what the real world is like
If the IaC system had the same under-the-hood functionality as System Initiative, what's to stop someone from also building a GUI visualization of the IaC-code?
So what we do instead is have a reactive data model, and shift the code part to a reactive graph of functions.
The same way you update any other code from multiple places. A version control system (eg.: git and github), with CI/CD.
> How do you visualize drift?
Why do you have drift in the first place? Gitops is an obvious solution to drift.
> It’s easy enough to imagine how you would update a single declaration, but thinking about how to make the code reactive will break your brain.
I’m sorry, I don’t follow at all here. I’m not sure what the problem is with IaC. If your IaC is declarative, it’s no more complicated than data.
First, we turned everything into data - a rich system of digital twins that enable safe, easy simluation of changes, and map 1:1 to the upstream resource.
Second, we made it all programmable and reactive by modeling it on top of a hypergraph of functions. When one property on a model changes, anything dependent on that property automatically re-calculates.
Third, we built a multiplayer user interface that makes working with the model fast, safe, and fun.
Seems cool, though I'm far from needing it. AFAIU: it's an attempt to build a reactive infrastructure system from the ground up using a cute Functional Programming paradigm, not just building off of code-like YAML files like we do today.Personally the GUI gives me flashbacks to the dark days where "programming" in my mind was "using Eclipse", but that's a biased take! I can see why WYSIWYG-style functionality was considered too fundamental to make optional.
Or is it just a blob in the database for SI?
What I took away is: it’s a collaborative IDE for infrastructure? with some nifty simulators to catch issues earlier, and “somehow” changes are managed outside the popular git+pipelines workflows?
There are elements of this that I like (faster validations that CDK deployments ). Those aspects are bundled with confusing, either unnecessary or poorly communicated, other elements. “Replacement for IaC” - is there a new paradigm? Or is IaC just now a graph in this local application? Because you tout being able to program new service models, so the code isn’t gone…
It looks like it is in the same space as terraform, but uses a gui instead of defining your infrastructure as code, but allows you to "simulate" and review changes before actually applying them.
The example component code reminds me a lot of mobx-state-tree (you have no idea how much cog. diss. I get reading the docs for that thing given they acronym the name everywhere ;) though I find myself much preferring the API shape of mobx-keystone at this point.
(I've been experimenting a lot with reactive graphs of late though while it seemed an obvious thing to try at some point I haven't attempted to wire it up to systems automation yet; shall have to do my usual cover-to-cover documentation read on your site and then hopefully I'll be in touch with a baseline to actually chat about that part ;)
But yeah, you're not wrong that it's got a lot of inspiration from things like mobx and rxjs.
> But yeah, you're not wrong that it's got a lot of inspiration from things like mobx and rxjs.
Please figure out how to deploy a subset of the reactive graph into a k8s operator. It'll be a really cool feature and also it'll probably save me a bunch of time when I want one of those if I can crib from your work :D
I ... bah. I am really looking forwards to getting into another of our involved coversations about this stuff but I'm too tired today and besides I definitely do need to mainline your docs first. I'll probably see you on twitter first with the assumption you'll end up chasing me onto Discord sooner or later ;)
[1] please interpret that in terms of how you remember me (ab)using version numbers ;)
(I don't have a better one sentence tagline as such, mind, but honestly if I'd only read that I'd never have bothered to look - see my sibling comment for an attempt at an actual high level description ... especially since I probably got something wrong you'll need to correct ;)
However, thank -you- very much for the response and you're absolutely welcome.
Please consider the comment to be licensed under the union of all OSI approved licenses [1] if you want to steal and/or improve any of the wording.
[1] The debian ftpmasters once complained about my having released something to CPAN with two licenses inside. I asked if they wanted the next release to be explicitly under said union so they'd have to tag the upload with all of them. They decided their complaint wasn't actually that important after all.
(and if that makes you think I'm a monster ... ask Adam to explain just how right you are about that ;)
[1] To me at least.
1. Is that a good summary? 2. Why would I pick this?
I know you LOVE it, it's your baby. But why should I love it? :-)
You should love it because it's a more intuitive and more powerful way to build this kind of infrastructure automation. What's happening under the hood isn't just infrastructure as code with a UI - it's a full reactive model of how things work. That's what makes the UI possible, but it's also what brings about so much power - the code that drives those models is also fully exposed and versioned.
So when you have something like a policy to write, you think about what resources you need, use them as inputs to the function, and then store the results. Check out what an early user had to say about it: https://matthewsanabria.dev/posts/take-the-system-initiative...
We'll find out if you love it or not. :)