Created 2021-10-07
- Code
- Hacking
- Ethics
- Gopher
- Gemini
Today I made the source of Complex 19 available, so I thought it would be a good time to write a little bit about Complex 19 itself, and why it took me so long to release the code.
What is Complex 19?
Complex 19 is a Static Site Generator which takes in Markdown and outputs Gopher, Gemini, and HTML.
It can do:
- Blog posts (like this one)
- Pages (that you want to stick around for longer)
- Make a page showing all the posts by Tag
- Make a page showing all the posts by date
- Make RSS and Atom files
- Do all of that for Gopher format
- Also do it for Gemini format
- It does HTML files too!
- Cope with some static files, e.g. your gpg key
- Optimise images
It relied on many FLOSS projects and I'd like to acknowledge the awesome shoulders I stand on every time I can pip install
something.
Why? Well because I could and because I wanted to. Will it be any use to you? Probably not.
Want to play? I've also installed gitea on my VPS to host it (I have gitea on my home network too so updates may be lumpy.)
A quick history
I've had a website since mumble years ago, and I've used a lot of things to make websites, from Micro$oft Publisher, Front Page, Dreamweaver, Drupal, Wordpress, and most recently hexo.
I wanted to try making my site available via Gopher, and as I already had my content in markdown it should be easy, right? Well as things tend to do with me it spiralled out of control. If you spot any references to "gopherStaticMaker" in the code, this is why.
I also wanted to support Gemini, and it was pretty easy. Yay for Open Source.
At this point I wondered why I was still using hexo to make HTML files, so I extended it to do that too.
I've been using it for a while now and think it does everything I need and want it to.
Picking a licence
I've been holding off releasing the code for one main reason, what licence?
I'm very aware of the ethics of software, I've gained massively from FLOSS over the years and Complex 19 is built on it. However, I also cannot feel comfortable releasing software that could be used for harm.
I run mastodon.radio, and like many instances it is a great place with friendly and supportive people. However, there are other instances that also use mastodon for things I find abhorrent. As I write this post the exploitative practices of Facebook are (yet again) being laid bare and parallels to the tobacco industry are obvious. Facebook is built on FLOSS, Gab is built on FLOSS.
I cannot feel comfortable releasing code that could be used in ways that harm people without any protection against that. Maybe there is a vanishingly small chance anyone would use Complex 19 for their hate site, but it's still not zero. I have snippets of code on my site that could more directly cause harm, for example python scripts that interface with mastodon, and I have been considering how to licence these too.
I know licences don't fix the problem, I know a bad actor will just ignore it, but I can try, right? We know that Google won't use AGPL licenced software so it can have an impact.
I'm not alone, there are quite a few Ethical Licences, (Organization for Ethical Source have a few options.)
After much consideration, deliberation, and procrastination, and having published the code I decided to "Just pick a license!111!!!" (thanks @[email protected]) and have picked The Hippocratic License 3.0 (or later.) Because it seems "good enough" for what I want, and has been around for a while and still seems to be cared about. I can always change it later, right?
I'm probably going to keep using the GNU GPL for some stuff, but I'm using the Hippocratic License for Complex 19, the code snippets on my site, and probably most of the other code I release in the future.