We've had a productive month, creating prototypes, getting feedback, and iterating. TL;DR - Compose is working really nicely as a React hook, so we're continuing to build in that direction.
Prototype 1: Figma mockup of Haskell IDE
Feedback 1: Haskell syntax is confusing
Prototype 2: Toy implementation in Typescript & Turbine
Feedback 2: Turbine is confusing
Prototype 3: Toy implementation in React (photo below)
Feedback 3: Makes sense but how does it...?
That's some real progress: from an obscure programming language & new IDE to the world's most popular programming language & framework that can be used with any IDE! It's so obvious in retrospect that it begs the question: why we didn't simply start with a React hook?
Well, we did consider it many months ago (credit to Dave Fontenot for initially suggesting it), but rejected it because we couldn't see how to do it in a way that respected our distributed FRP semantics. And it seemed like Firebase (& its increasing number of friends) successfully serve that niche. However, after building the first couple of toy prototypes, we finally saw how the essence of Compose could fit snugly into React in a way that is differentiated from those other offerings. (Thanks to Aidan Cunniffe and Chet Corcos for pushing me in this direction.)
Beyond that super simple chat app, Steve also rebuilt the Rails demo blog app in Compose/React. In both cases 90% of the code is regular old React, and the remaining 10% is Compose. And the Compose code doesn't feel so magical, because it looks a lot like the
useReducer hook. The Compose version is just
People seem intrigued with these demos but are distracted by a number of practical questions: