Dan and Stephen are moving to Maine, roadtripping across the country, woofing at various permaculture sites on the way. This is our blog to write about our experience.
Since it’s the first thing I’m going to set up, I’m going to write about how the blog works, where it lives, and why I did it this way. I suppose it begins with my ethics of technology, in no particular order:
- it should allow the content to be exported into other systems (avoiding vendor lock-in)
- it should be friendly to non-technical-expert users
- it should be secure, lightweight, and not overly complicated
- it should allow self-hosting. This helps avoid the consolidation of internet content and is usually implied by open source. This matters because if a handful of companies control all the content, they are in a precarious position to control what information is available. Even if the company doesn’t want to propagandize, governments or controlling owners might be able to force them.
- it should be open source: as the user, I should be able to see the source code and fix something if it’s broken (or ask/pay someone else to do it, etc) regardless of who the original author is. Put another way: I shouldn’t be at the mercy of the original author (be it a single person or a large corporation) to make changes to the software I use. If I’m at their mercy, they have the power to track me, hold my content hostage, etc. If something happens to the controlling author, like a court order, a company buy-out, or what have you, the party whose mercy I’m relying on might change at any point.
As far as how these ethics came to be and how sure I am about them: they are inspired by my readings of the Electronic Fronteir Foundation and the Free Software Foundation (Richard Stallman). For some, ethics like these are an end-all-be-all. For me, these ethics allow me to judge how much I’m willing to trust some software. A game I play, a news site I read: these are ephemeral and I don’t feel particularly bound to them. It’s fine, in my opinion, if these don’t meet many (or any) of those ethics. For something that’s more core to my own expression and represents me online, I’m a little more wary. My facebook presence is extremely minimal, for instance, because that company is shady: they don’t make it easy to export your content and they have a history of bungling privacy and content ownership/licensing rules.
Looking at these ethics as filters for available software, I came to the conclusion that nothing I had seen quite fit the bill. Most commercial (or free-to-use third-party services) are not open source. These include sites like Medium, Tumblr, Blogspot, Facebook, etc. Most open-source CMS projects are overly complex (Django) or introduce crazy performance and security vulnerabilities (e.g. Wordpress). The simplest I’ve found are the popular static-site generators, like Jekyll and Ghost. Hugo, a static-site generator from the Go ecosystem, is something I know that fits point #4 well. Since it’s written in Go, I knew I could write a solution to fix #3. There was a caddy-hugo plugin already that provided an avenue for early exploration, but I pretty much rewrote the whole thing.
Over the course of our trip, I hope to use this blog to document our experience, but we’ll also be test driving this system. If it works well, I hope to upstream it as a plugin to the caddy webserver, which aims to make modern and secure web publishing easy for everyone. So in service of that goal, if you as a reader see anything funky, feel free to report it here. For the technically inclined, you can build a version of caddy yourself including caddy-hugo2 as a plugin.