About WordFresh

The web has always been a social network unto itself - a distributed network of independently owned sites connected by hyperlinks. The blogging stacks that appeared in the early 2000s made participation in this network accessible to non-programmers as well. The dominant player in this space for a long, long time has been WordPress, which for all of its flaws still runs about one quarter of the web.

If one wants to own their own content, one needs a web stack to place it on. Raw-dogged HTML/CSS, WordPress, static-site generators, and blogging stacks rolled out of more complex frameworks ... the choices seem endless. While evaluating these choices, however, I came to a startling conclusion: the selling points for each framework invariably focus on the website itself. What they miss is how that website will participate in a broader network. They focus on the tree, but what I care about is the forest.

The mechanisms for connecting a website with the broader internet are considerably more complex than they were for 90s webmasters and for 2000s bloggers. My aim was a blogging stack that made these mechanisms first-class citizens, instead of having to seek out a separate plugin or add-on to satisfy each of them. Some examples:

  • JSONFeed instead of RSS
  • Webmentions instead of pingbacks or trackbacks
  • Syndication via ActivityPub
  • HTML metadata for sharing links on platform social media or on chat tools (Slack, Signal)
  • Semantic markup instead of SEO wizardry
  • Server-first rendering instead of overly complex JavaScript view libraries

Since nothing I found ticks all these boxes, I am putting together my own. As I flesh it out, I will attempt to make it available to others who wish to rewild their own work.

The basis of the stack is Fresh, billed as "The framework so easy you already know it." Fresh is built on an island architecture, so the amount of JavaScript delivered to the client is non-existent unless you need frontend interactivity. Nevertheless, pages are authored using JSX, a templating language that blends HTML and JavaScript in a beautiful and expressive way.

What I had to add to Fresh (as a plugin) was all the stuff necessary for blogging. Posts are authored in markdown, custom post types as Zod definitions, JSONFeed is provided as a Fresh handler, images are resized (automatically) with ImageMagick. Fresh (and Deno, the JavaScript runtime that powers it) turn out to be wonderful places to experiment with all of this stuff, and developing was fairly straightforward and did not result in the bloat or unnecessary complexity we've come to accept from other authoring environments.

WordFresh is not a "content management system." There's no WYSIWYG editor and you have to write (some) code to do it at this point. In this sense, it is more like Gatsby than WordPress. I strongly believe that the web is for everyone, but the code-driven foundation has to come before the CMS castle. WordFresh is fully open source, and a CMS can be always be put on top of it if anyone wants to get involved.

I will talk about further improvements to the system in the blog. You can also have a look at the GitHub repo, though fully documenting it is something that take time.