Happy New Year

Happy New Year. Welcome to 2019. I've never liked odd-numbered years, very much looking forward to 2020. 2020 feels futuristic; exciting.

The photo above was taken this afternoon from the Royal Observatory in Greenwich.

Recap

You might be reading this blog through journal, an attempt to decentralise and distribute blogs in a stylish, easy-to-use way. I've been developing it in my spare time for over two years. My first goal was to make something that I could actually use as my own personal blogging software. If you're reading this at lukebarnard.co.uk, goal achieved!

The idea of decentralising systems has always appealed to me as an alternative to the many centralised systems out there. Having worked for matrix.org for a couple of years, I wanted to realise a world where blogs could be distributed in a way that wasn't centralised.

The idea got a bit of traction on GitHub when I created a proof of concept, but it had some fundamental limitaions:

  • Nothing rendered server-side (pages would take a noticeable amount of time to load)
  • Matrix credentials were needed for reading blogs

To overcome these, I designed a system that would have server-side rendering at its core and separate key functionality by component.

journal v1

As of today, I've finished writing an initial version of the blog site component. This is not the decentralised part, that will come later. The blog site takes a directory tree of blogs and lists them on the site accordingly.

The blog site acts as a kind of "exit node" for blogs. It functions stand-alone so that it can be used independently as a blog site but could also be used with a distributed messaging system such as matrix.

A few more components are needed for a matrix room to be used as a kind of transport layer for blogs:

  1. A matrix room-scrapper bot
  2. An auth component to enable online interaction via a matrix room

The former will be a matrix bot that is invited into a matrix room by the blog author. The bot essentially does all "reading" of public data from the room. The bot will digest journal-compatible events in the room and populate the directory tree with blog files. It will do likewise with comment events.

The latter is required for a user to "write" into a room. Only authors in the room can write journal-compatible events into the room. Only room members (subscribers) can write journal-compatible comments into the room. This will be dictated by a room power level event created by the blog author when the blog room is created.

The blog-scrapper can exist per blog server and independent of the blog site. The auth component will be incorporated into the existing blog site with some extra UI for logging in as a matrix user.

Contributions

These components could be a great project for someone looking to get involved with journal. However, I still need to specify a shape for the events in rooms and the architectures of each component. I'll create issues on the journal GitHub to keep track of the ongoing work, and maybe a "help wanted" label to those bits of work that are ready for development.

Meanwhile, I actually have very little visibility on how people are using journal as it exists so I'll post an issue and ask for comments.

Thanks for reading. Don't forget to watch & star the GitHub project.