Sharing an article I wrote, inspired from @maxim video on designing workflow engines from first principles.
Feedback is most welcome.
Thanks a lot for converting the talk to an article! Great work!
My only correction is that your definition of declarative is not really correct. From the article:
Declarative (json based workflow definitions ex: Netflix Conductor, Amazon State Language)
According to Wikipedia:
In computer science, declarative programming is a programming paradigm—a style of building the structure and elements of computer programs—that expresses the logic of a computation without describing its control flow.[1]
Or per Google AI:
Declarative programming is a programming style that focuses on what a program should do, rather than how it should do it:
Both Netflix Conductor and AST specify how program should be executed. So they both are imperative. JSON doesn’t make them declarative, it just makes them less developer friendly.
Compare them to Terraform HCL, Cloud Formation templates or SQL. They are declarative as they don’t contain instructions how the program should be executed.
Thanks a lot Maxim for reading the article, and the feedback.
I was of the opinion that this would be declarative which might eventually be getting interpreted as imperative once it gets parsed by the relevant interpreter to the actual code.
Have updated the document.