• en

by on | License Permalink

Brimstone is the code I use to run this website. You can find the code on Gitlab and, for the time being, on Github. I want to keep this post as a living post, and keep adding to it. That way I hope this post acts like a philosophy.txt.

The code isn’t anything special. I write it for several reasons:

  • I like to blog, and wasn’t happy with a third-party service like tumblr or Blogspot because
  • I like to own my data, and I met someone at a conference who sold me on the idea of the Indieweb and POSSE.
  • I like to write code. I have a CS degree, and am currently doing HCI research where I don’t write a lot of code anymore.
  • I like to make my own tools. For the above reasons, this makes writing blog software useful for the time being. I can develop a tool around my own practices, that helps me achieve my goals.
  • Diversity is pretty neat, and although I doubt anyone will actually use this software – I like the idea that by writing this code I’m contributing in a small way to that diversity.


The goal of this software is to provide a simple, lightweight, option for publishing text content online that allows a user (me) to:

  • own the data and
  • share copies of the data via social media, with citations back to the original copy
  • not deal with any particularly cumbersome Javascript on the front-end while writing posts.
  • Fire up an instance with a minimal setup e.g. a box with PHP, MySQL and a webserver of choice.

And allows others to view my content in a way that suits them. So far this includes:

  • scraping my site for content marked up in microformats
  • subscribing to my long-form text via rss
  • Seeing versions of my content appear on social media feeds.
  • Viewing the front-end of my site without any Javascript executing.

Why not use Wordpress, Ghost, etc.?

I have no explicit issue with them - but they’re not really my thing. I’ve used wordpress for a variety of things in the past and it suits those things, but I wanted something light. I’ve never really used Ghost, but already you’re dealing with a fully-fledged CMS with complex management options and theming potential. I wanted something that does not put any Javascript on the public-facing portion of the site, and only uses minimal Javascript for the UI in the admin-panel. I also wanted something that didn’t require a lot of configuration.

Equally as important, I wanted to play and develop a few skills.

Ok, so what’s it built on?

The current version of Brimstone is built on the Symfony PHP Framework. To run the current version you will need PHP 7.1, and Composer to install the vendor packages.

It’s released under the GPL 3. This means that if you fork Brimstone or use any of my code in projects, you’re also obliged to release under the GPL. Symfony code is released under the MIT License which, thankfully, allows me to use MIT components inside of a GPL’d project.

Ok so what does it actually do?

It does pretty much what any home-brew blog software can do, but specifically:

  • Basic blogging and microblogging with Posts.
  • Write Posts in Markdown (a la Daring Fireball syntax) – no heavy interface required.
  • Posts are type-inferred. You can write short notes (like tweets) and longer articles (like blog posts) from the same interface, and they display differently based on your choices – no explicit configuration necessary other than deciding if you want your post to have a title.
  • Long-form articles are available via an RSS feed for people to subscribe to
  • POSSE Posts to Mastodon with citation back to post on the site
  • POSSE posts to Twitter with citation back to post on the site
  • Posts on the site are marked up with microformats for Indieweb feed compatibility
  • Speaking of the Indieweb; you can send webmentions just like this one to mention others in your posts.
  • There are no comments for your posts stored on the site, but you can receive webmentions on them which get delivered into an inbox as notifications in your admin panel so you can see what people have said.
  • You can export all your posts in an XML file, and import posts into the system from an XML file given it has the proper format.
  • You can also download posts individually as Markdown files
  • Basic controls for hiding/showing posts, in case you want to appropriate posting for keeping private notes.
  • You have a short profile which you can fill out, and this gets marked up as an h-card for indiweb compatibility.
  • You have an optional ‘About’ page to fill out just like a post; if you don’t want it keep it blank and the About link disappears from the site.