crosspost from r/clojure
I’m finally open sourcing my project root. It’s been in development since March 2019 with a few breaks to ponder its design. The goal of root was to make everything as stupid (read decomplected) as possible, e.g.:
- root doesn’t know what state is
- components don’t know where their data comes from
- components also don’t know which children they’re rendering
- root is renderer agnostic: using reagent instead of uix is a ~3 line code change (possibly here). Components are functions and can emit not just
hiccup
but anything.
It has a few more tricks up its sleeve such as automatic promise resolution (again components need not to know about “promises”), path
annotations as root recurses through data which simplify state updates (used here to implement a generic AST editor) and more!
This is, of course, alpha software and, as such, subject to change.
Find docs and examples in the Github Repo.
Shout out to u/roman01la for being responsive and helpful and of course for making uix