Matt Marshall

8 Posts with Tag indieweb (All tags)


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.

development brimstone indieweb php

Hey #indieweb folk, I'm finally going to implement receiving #webmention and wondering about design patterns. Should I create a new Webmention entity or should source urls be stored in Post objects?

indieweb webmention

Quick Evaluation of Brimstone CMS and my Silo Use

I have a bit of a weird relationship with the Indieweb. I'm not really sure where I stand in that nexus as I've made no attempts to connect with the community, but draw inspiration heavily from Indieweb user Rhiaro and often look on the wiki when I've got work-paralysis on Brimstone and want to procrastinate by adding another half-finished feature and not fix muh bugs. Anyway, from the Indieweb I learned of the term "Silo". Defined as

A silo, or web content hosting silo, in the context of the IndieWeb, is a centralized web site typically owned by a for-profit corporation that stakes some claim to content contributed to it and restricts access in some way (has walls).

They share characteristics such as preventing easy export of content in standard formats, and requiring you to use an identity exclusive to that site (ie your Facebook account. Since I recently underwent evaluations of my Facebook use, and subsequently began my tactical withdrawal from the platform, I thought I'd evaluate my current state of play. It's coming up a year since I started development over here.

Silo Use

Here's the state-of-play when it comes to my use of Silos

  • I use Twitter a lot, via POSSEing. I still need to sign in to the site to check my notifications. I like microblogging and it's the best way to let others see my content.
  • I've just begun withdrawing from Facebook. I removed all of the photos I could, locked down my privacy settings (I might still be discoverable though), and unfollowed everything in my News Feed to stop drawing me back in.
  • I still use Messenger (Facebook), although only check it in the morning and evening. I haven't received a message via the platform for days. I use Telegram to speak to the people I speak to the most. Mainly some close friends and colleagues.
  • I downloaded all my Facebook data to save my photos but I'm not sure where to put them. I think Google has a few of my photos.
  • I removed my Google Plus account years ago but it was full of images, and I doubt Google actually destroy it.
  • I've got a tumblr and a blogger somewhere but I've never seriously maintained them past maybe two posts from 2011 and 2013 respectively.
  • I've never had a MySpace
  • I have a LinkedIn :-( But that's kinda for just accepting requests from old colleagues. Sort of what it's for I suppose. It gets updated once a year if I get a paper in or medal or something (so rarely).
  • I use Google as my main identity provider for oAuth SSO purposes, and GMail is pretty nifty even though Google are pure evil and I just presume my GMail is open to the capitalist class.

Brimstone CMS

Here's the state-of-the-art when it comes to my indieweb software

  • I auto-POSSE Notes to Twitter.
  • I can write longform blog posts in markdown
  • I can check in to places and can retrodate them.
  • I fixed the bug with datetimes (my ignorance) and now my blog isn't just one stream of notes for readers.
  • I have inline tagging for Notes and tags for Posts.
  • I have an RSS reader which I can create a newsfeed from.
  • I have a control panel which is heavily Bootstrap'd.
  • It draws in Twitter, and renders an aggregated RSS newsfeed in two different tabs.
  • My AJAX is terrible.
  • I can favourite a tweet and it goes to twitter.
  • I am working on favourites over here, for both RSS items and storing Twitter faves.
  • My AJAX is terrible.
  • I can view Twitter profiles up to the 20 or so tweets returned with a single request.
  • I can see all my friends/followers from Twitter, and follow/unfollow them via terrible AJAX
  • My Gravatar profile image and my Twitter account are hardcoded in, and need generalising.
  • The whole CMS needs a set-up screen and a settings page if it's ever to be released.

Features I'd like

  • Images for notes and blog posts. Storing them is more of an issue than the feature itself atm.
  • Track exercise and set goals. I used to use Fitocracy a lot and would also like to digitise some of my old training diaries for posterity.
  • Statistics to run over Notes, Blog Posts, Training sessions etc.
  • Probably should integrate some indieweb H-feed reading.
  • Probably should allow for webmentions, etc. Communicating with others etc.
  • Probably should mark up my feed with microformats
  • Track time invested in various skills, hobbies, and activities. Could be useful for a CV someday but also I could toy around with having a page in the style of an RPG character sheet, which is auto-updated as I invest time points in developing skills.


I'm not too bad in the way of Silo use. There's a lot to do on Brimstone but now I actually have myself a TODO list. Should be a fun year.

brimstone socialmedia indieweb silo todo