Thoughts on blogging engine
Posted on January 05, 2015 in Phyks • 6 min read
For now, I am using my own custom made Python script to handle my static blog with a Git backend, Blogit. It is becoming heavy and difficult to maintain, and I would better do a good refactor. However, many scripts of this kind exists around here, like Jekyll in Ruby, or Pelican in Python. As I do not aim at developping a fully-featured alternative to these scripts, I am considering moving to one of these, and let others with better goals handle it. It is not always useful to reinvent the wheel and especially in this case, as I have very basic needs.
I played a bit with Pelican and Jekyll. First, I played much more with Pelican than with Jekyll. That is because I know Python and feel more comfortable with Pelican. Also, it seems more robust, extensible and well designed than Jekyll. At least, that’s the overall impression I have, that Pelican is a bit cold, but very powerful, whereas Jekyll is warmer, but more on the blingbling side also. Pelican supports ReStructuredText besides Markdown and HTML, and it was very straightforward to convert my articles to the Pelican file format (especially for metadata) and keep the same URLs. There is a bunch of plugins and themes for many things (git backend, specific parsers, search engine etc) but some of them are outdated. It’s relatively easy to get something working quickly and I think this is a really good static blog engine, very efficient. For more info about it, you can check out this blog post about a recent migration from fugitive, shell scripts to statically build a blog on top of a git repo, to Pelican.
Then, I was about to migrate to Pelican when I heard about Known at a Decentralization Meetup at Mozilla Paris. I had already heard about the IndieWebCamp but never had time to look in depth at their wiki and the stuff they were building.
I started to think again about blogging, microblogging and social networking, and I think their approach may fix some of the core problems I experience with Diaspora. For now, I am using my static blog to publish articles, and I am (finally not so much) using Diaspora as a social network.
- First, Diaspora is yet another thing to monitor. I like to have my RSS reader running in the background, I periodically check the news. I have my emails also. Diaspora means yet another thing to watch for, something not standard (it is not emails, it is not IRC / XMPP and it is not RSS or equivalent feeds) and the community on Diaspora is quite small compared to the one on the other medium. Equivalently, I do not know enough people on Diaspora to want to have it running and check it regularly.
- Diaspora has a big flaw in its implementation, as other already wrote (article in French). It is oriented toward and promoting decentralization, and encourage each one to run its pod. But running its pod is not very interesting as the federation is not complete in Diaspora. For now, we have “silos”, fully centralized, such as Twitter and Facebook ; self-hostable “silos” such as elgg (centrally decentralized networks) and fully decentralized networks like Diaspora. But, as soon as you and your contacts are on different pods, you won’t be able to see their own contact lists, to find new people to follow. Similarly, you won’t be able to follow hashtags, as they are not federated. I’m alone on my pod, and if I follow
#firefoxos
, I will only follow my articles tagged with this hashtag. Not very interesting, eh ?
The core idea behind IndieWebCamp is not to build a social network but to own your data (see this article for example). So, why talking about Diaspora ? Because they are thinking that you should be able to communicate with others in both a user-readable and machine-readable way. But, you might already have friends on Twitter / Facebook / Instagram etc. Rather than quitting them and moving to a new platform, the goal is to be able to still talk to them, in the meantime before their migration, but to have a dump of every content you post on your server. As it focuses on the protocols rather than the implementation, each user may have its own baked implementation, and many of them are not (yet ?) open-sourced (such as aaronparecki’s website). For now, one of the more developped and supported one seems to be Known, which was presented during the Meetup. It lets you handle microblogging, blogging, photo sharing and many more out of the box, and fully implements the protocols to communicate with other instances and is extensible through plugins. To see it in action, you can have a look at the instance of the co-founder.
Then, rather than having multiple sites and services, each one with a partial dump of your content, everything is centralized at one place, and your Known instance gets a dump copy of every content you put online.
The basic idea is to use the served HTML and put some extra content to parse it easily with a machine. This means that both the user and the machine see the same page and can handle the same content. This is done through the use of specific classes on elements to tag them according to their type, to say that this is a post, this is an image and this is a contact card. This way, it becomes really easy to extract content from your website, using XPath for instance. And they are working on implementing favorites, reply-to, reposts and so on.
Thanks to Bridgy you can have bridges with existing silos, and many apps let you get more bridges, such as OwnYourGram. Using webmentions, you can post on your website to comment a post on someon’s else. See this post for example. Comments are actually hosted on the instance of any user, and a copy is made on this specific instance. Comments can come from Facebook and Twitter also, and virtually any website implementing the open protocol or having a bridge.
I thought again about my static blog. It is dead simple, and enough for my needs. But this is not always very practical as I need to have a computer with a text editor and git to commit and publish, which I do not have always with me. But having a dynamically generated blog is something really heavy and overkill for my need. Known seems to be a good compromise, it is written in PHP (and then easily hackable), it seems to be lightweight, and offers functionalities which are worth the overhead. Plus every route can be used as an URL as well, which means that I can continue to publish writing with my favorite text editor, and I am not at all forced to use the live html editor. This is a great point, and it works very well (article on this is coming). I was not interested in comments on my blog as I do not want to host other’s comments on my personal website. But this way of using webmention incite others to have their own blog and publish on this, to reply, and I totally agree with this philosophy. This is no longer “a comment on someone’s wall that you don’t care about” but “a comment on your website which is sent to the other’s”. I think this change of commenting strategy might improve the quality of comments (but I may be wrong) by feeling more attached to your content. My demo Known instance is available here. It is currently to be considered as Work In Progress, and I am not sure of what it will become in the future. But there are chances I move to a full Known approach, instead of duplicating my articles on this blog and on Known. Bad news is I might have some URLs that will change in the process (old articles, photos, feeds, etc). To be continued…