Major Chestnut relase upcoming

The last Chestnut release came out last June. In the 10 months since then changes, additions and improvements have been accumulating on master.

The big one is Stuart Sierra’s Component support, both on the backend and, since today, on the frontend. This is a big change, and it introduces some more complexity and boilerplate, but I think it’s important that Chestnut provides people with best practices, and that includes using a Component framework.

Now half of you are thinking: “what about mount?”. I initially held off mount support because I wanted to make sure the component support had stabilized first. I think we’re there now, and mount adoption is big enough that it makes sense to add it. I’m happy to review a PR to add a +mount switch, I’m also happy to ship 0.15.0 without Mount support. Patches welcome, in other words.

Another patch that would be really welcome is a +sente flag. This would be an excellent test to see if the component setup helps us to modularly add components, and it would impact both the front- and the backend.

But both of those are nice to have. What we do have in the meanwhile is support for two new frontend libraries, +rum and +re-frame, and support +garden as a CSS system.

I would like to move quickly in getting 0.15.0 out. We’ve held off on it long enough. The one part where things are still lacking is in documentation. Chestnut aims to be user and beginner friendly, and from the start it’s differentiated itself with better-than-average docs. Now the docs are getting old and unmaintained, and it’s high time we address that.

The main things that I’d like to see in the docs

  • a code walkthrough. “What’s in the box”
  • how to start/stop/restart the app and get a REPL in various environments (plain REPL, Emacs, Cursive, etc)
  • an overview how things are tied together
  • instructions on building an uberjar and deploying it to production

The current docs are markdown files which compile to a docbook, I think we can get rid of that setup and just use plain markdown files hosted directly on Github, the way that re-frame does it.

If you want to help out just jump into the code, or get in touch here. Someone also recently created a #chestnut channel on slack, so you can find me there as well.


Update: I’ve merged the re-frame PR for lack of feedback. I suppose no-one objects.

I made a handful of other changes that jumped out on me, like cleaning up the less/sass stuff (ugh boy is that an ugly hack).

The system constructor now takes a config map. Adding a Code of Conduct is now optional.

browser-repl will become cljs-repl to be more in line with what others are doing. The browser-repl alias will stay around until Chestnut 1.0. The same for run which is now go.

Comments more than welcome, either here or on the pull request:

I also just pushed this as a new 0.15.0-SNAPSHOT, so feel free to give it a whirl.

lein new chestnut sesame --snapshot -- +re-frame +sass +coc