Blog by Sumana Harihareswara, Changeset founder

11 Aug 2020, 12:49 p.m.

Figuring Out Which Blogging Platform To Switch To

I'd like to pay someone to port my blog to a new platform, and create one for Changeset Consulting as well. So now I need to decide on the platform and the vendor.

Background

I've used NewsBruiser for this blog for nearly twenty years. Leonard wrote it for himself, and I switched to it from Kuro5hin in October 2001. I have posted 4645 entries.

I like many of NewsBruiser's features. I like that it emits flat files so that a page load requires no database lookup, for instance. And there are things I am sentimental about; I love that it's in Python, and that my spouse wrote it. And if I really need a specific change then I can get personal help.

But there are some things I want (for this personal blog plus for my consulting site) that NewsBruiser does not provide, and it makes more sense for me to switch to something else instead of asking Leonard to do a huge load of updates and feature work that he doesn't personally need. And -- as Troy Hunt and Courtney Milan and Steve Klabnik and a zillion other programmer-bloggers eventually decided -- at some point, if my websites are important to me on a business level, then I should switch to using a platform that gives me stuff I need, even if it's less pleasingly homemade.

Assumptions

I assume that doing this will involve contracting with someone else to do the web design, customization, and import, because my personal site ought to be easier to read, because I'll probably be creating a Changeset Consulting blog separate from Cogito, Ergo Sumana, and because I am not particularly strong at web design and I should outsource this. And I assume that a lot of design and CSS stuff I'll work out with that vendor -- header and footer and navbar, responsive design for mobile, etc.

So, what do I need or want? I figured I'd finally write down this list that I've been accreting in my head over the past few years. (I will probably come back to this list to add things as I interact with other blogs and remember stuff.)

Required

  • Free/open source software that is being actively developed/maintained
  • Multiple vendors (so I'm not locked into one) whom I could pay for customization, design, import, and related consulting services; ideally, I can also pay them monthly or yearly for continued maintenance
  • Blog post tags (which is to say, non-exclusive categories -- I don't care whether the software calls them tags or categories), including nesting, and including a way for a reader to browse all posts with a particular tag
  • Reasonable export of all posts including metadata
  • Produces standardized syndication feeds (such as RSS/Atom) per-tag as well as for blog as a whole
  • Ability to write and save drafts
  • Hosting such that the URL points to my own domain (this is why, for instance, Dreamwidth does not work)
  • Accessibility, such as
    • No infinite scroll
    • Emphasis on fast loading/response -- plain HTML and CSS, and either individual post reads require no database lookup or there's very very good caching or some similar performance measures in place
    • Reasonable default metadata on built-in images/elements
  • Privacy, such as
    • No or nearly no third-party JavaScript, and no third-party trackers
    • Accessible via Tor without me having to constantly update settings
  • Post writing is in a standardized syntax (I'm fine with the platform making me write in HTML or Markdown; doesn't have to support both) that is not reStructuredText
  • Blog-wide text search (this could be an add-on my consultants build for me using Solr or something)
  • A way for readers to look at or browse archives chronologically (such as "everything from 2019")
  • URLs with custom slugs instead of just the date, e.g., harihareswara.net/sumana/2020/08/searching-blogging-platform/
  • Ability to cope with redirects from URLs pointing to my NewsBruiser posts

Strongly desire

  • Comments by users
  • Web-based writing interface
  • WYSIWYG interface in particular
  • Ability to manage static pages that are not blog entries per se, such as an About page, my writing portfolio and list of conference talks, etc., so that this is not just a blog but also the content management system for the entire site; I feel viscerally uneasy about this but it is probably the sensible thing to do
  • If you reply to me to give advice on what platform I should choose but you have not read this bullet point, I will disregard your advice and probably decrease my interest in your advice in the future. The way you demonstrate that you have read this bullet point is by using one of the following phrases in your advice message: "I rather reckon", "charming but not", "radiates sheer", "that delightful theme".
  • Two-factor auth
  • Mass-select several blog posts to add tags
  • Auto-generated tables of contents (with titles, links, and post dates) of "all blog posts in this tag" and "all blog posts in this year"
  • Edited 17 Sept to add: if a database is required, ability to use SQLite instead of something like Postgres or MySQL/MariaDB, for ease of systems administration

Nice to have

  • Media file upload and hosting integrated into blog
  • Specify a different time zone per-entry
  • Ability to make a preview URL so I can share a draft entry with someone else for review
  • Not WordPress, partly because I am superstitious because WordPress used to have frequent security vulnerabilities, but also because I am annoyingly interested in not going with the most popular choice out of suspicions of software monoculture plus reflexive nonconformism
  • Written in Python so I can more easily understand, fix, contribute
  • Git or similar revision history for content, so it's easy for readers to trust that I haven't gaslit them by making silent edits
  • Edited 17 Sept to add: an easy way to add anchor-tagged/linkable subheadings (example)

Contenders

As I understand it, WordPress bestrides this market like a behemoth. The contenders I have seen people use recently: Ghost, WordPress, Jekyll, Hugo, Pelican, Write.as, Django, Flask, Drupal. I see Alternative To mentions some others. I wrote this entry mostly for myself, to think about what I need and want, rather than to seek advice. But I do welcome advice on platforms/tools. And I know multiple WordPress consultants, so I'd like recommendations for consultants and other vendors whom I could pay to help me switch to something that is not WordPress, maybe even paying them to implement upstream features in that alternative.

Update 5 Jan 2021: I found a contractor via MeFi Jobs and should have a revamped site up in a few months!

Comments

Sumana Harihareswara
https://harihareswara.net
11 Aug 2020, 16:32 p.m.

If I go with WordPress, I'll probably try to hire Flax Digital or Clockpunk Studios.

Pavithra Eswaramoorthy
https://pavithraes.me
11 Aug 2020, 17:14 p.m.

that delightful theme :)

I'm excited for this!

I published my blog website recently using Jekyll + GitHub Pages. I tried Hugo initially, but that didn't work well for me. I'm liking my mechanism so far. The theme I use (https://chirpy.cotes.info/) ticks almost all of your "Required" boxes, but fails at many "strongly desired" points.

This isn't advice, just a +1 for Jekyll from my end. :)

Just one small question, is light/dark mode toggle something you care about?

I'll keep my eye out for anything that will help you here!

Sumana Harihareswara
https://harihareswara.net
11 Aug 2020, 17:39 p.m.

Pavithra, thank you for the comment, especially the first line. :-)

I personally don't need a dark mode toggle, but it may now be table stakes for professional websites. I see Ned Batchelder implemented it and pointed to a HOWTO mentioning that it can be an accessibility accommodation. So that makes me think that when I talk about with the contractor, I'll also want them to ensure the CSS knows how to appropriately respond to the user's settings regarding dark mode.

Julia Evans
https://jvns.ca
11 Aug 2020, 21:22 p.m.

my great love for static site generators (hugo) made me want to advocate for static site generator-y situations, so instead I went through your list and pulled out the requirements that I think static site generators meet the least well:

* Multiple vendors<br/>* Blog-wide text search<br/>* Comments by users<br/>* Web-based / WYSIWYG writing interface<br/>* radiates sheer<br/>* Ability to make a preview URL so I can share a draft entry with someone else for review

Emma Humphries
https://emmah.net/
13 Aug 2020, 4:07 a.m.

I rather reckon that separating the CMS from the publishing layer could help with the Web-based/WYSIWYG requirement.

I'm thinking of that python-based system that NPR was, the last time I checked, using to publish stories on npr.com. They had an access controlled app for writing/editing which cranked out static pages with JS for enhancements only into a S3 bucket for publishing.

So perhaps a locked down open source CMS instance that only publishes markdown files into a source-controlled directory structure that 11ty/Pelican/Jekyll can publish?

This reminds me to play with write.as more.

One thing I like about most of the static publishing tools is they can handle, with configuration, non-blog directories of files as collections.

One nice to have I didn't see on your list: post by email without having to run one's own mail server.

Kevin Turner
https://keturn.net
14 Aug 2020, 0:25 a.m.

I rather reckon you'd appreciate Nikola for its flexibility and Python implementation, but as Julia points out, pure static site generators have their limitations.

It does offer integration with third-party comment systems. I think the way it handles drafts would fit your requirement as well.

For example, here is a post from earlier this year in which I make uncouth use of Python syntax. It's still a draft, so you won't find it linked from the site's other indexes. That delightful theme you see comes in part from that particular post being sourced from a Jupyter Notebook.