hoplon

The :hoplon: ClojureScript Web Framework - http://hoplon.io/
bobcalco 2018-12-23T13:23:01.014Z

@bocaj I'm aware of Kenny Tilton's work - worked with him a couple years ago, in fact. He's a great guy. I think his Matrix library supersedes 'its-alive' and am looking at that as an option. At the time he joined our team, we'd already committed to a react-based CLJS solution (using Rum), and I'm not a particular fan of quuxdoo or whatever his preferred JS web framework is. Other than that I found his Cells idea compelling, though I didn't quite grok at the time how to bring his ideas into our work. He was actually pushing his CL Cells framework, deeply entangled with his beloved quuxdoo, which would have required complete retooling to Allegro CL. At the time I also didn't know about hoplon/javelin. Now I am 'getting the concept' a bit more deeply than on first exposure and wishing we'd have known about hoplon/javelin/castra, which would have been much more feasible to introduce (and enhance for our needs) at that time.

bobcalco 2018-12-23T13:30:04.020200Z

The thing I get about hoplon/javelin is that here is no need to compute DOM diff, which CLJS can do faster than plain ol' react, and Elm does according to its own, apparently more efficient algorithm than React's. There's no need because the changes can be dispatched precisely where they are needed (at the locus of subscription to change). What I dream of is an Elm-like separation between "clean" CLJS and messy JS, which Elm uses 'ports' to achieve. This is a better solution IMHO than CLJS's embrace of JS interop because IMHO when you touch a corrupt thing, it corrupts you. Externs management is a PITA, to boot. An "Elm architecture" implemented in CLJS for CLJS would be I think a cool thing, that might use Javelin to achieve similar semantics sans the magical DOM diffing and patching. I actually find Elm quite nice to code in, but at heart I'm more of a clojurist than a haskeller. It's really hard to beat Elm's compiler error and warning messages though, which is the best argument for strong typing one can make. I imagine a spec-based validation subsystem could achieve the same thing with some creativity. I loved Hickey's "maybe not" talk on how spec lets you enjoy the benefits of such typing with more flexibility based on runtime, vs compile time, exigencies.

1❤️