After working with the web for 8 years, including a fair number of frameworks, too many CMS:s for my taste, writing my own implementations before frameworks existed, breaking CMS:s to do my bidding and one failed attempt at writing a CMS before; I finally thought it was time to give writing a CMS a go again. This time in Clojure, because why not.
A tale of woes
Writing a CMS by yourself is a good sign the person in question is a sucker for pain. My first attempt was to write a CMS on top of Django, never to be publically released, but still used for a couple of websites. That was a painful lesson in the limitations of frameworks. Not to give up on the pain I then had to scrap datomic as storage (they were still trying to figure out how to deal with the free version at the time) and go full throttle on SQL, with no good support for migrations. reverie at the time got to the point where it was usable, but not as robust of a system as I wanted it. All that was needed was to wait another year whilst I was working to bring in the dough and be busy with life in general, for Stuart Sierra's component library to come and save the day in giving reverie some much needed structure. That however meant refactoring again; to the current incarnation, which works reasonably well. I/O is still a pain to deal with, but at least I can hide it in places where I know to look.
I need to write documentation for reverie, because I'm starting to forget some parts of it. It's also nice to share the pain fun with everyone else. Also planned is a series of blog posts detailing the thought process behind reverie. Will be interesting to read it in 10 years time.