So long Disqus, hello Webmention
Enough. I'm fed up with Disqus. It's been useful, easy to plug on this blog, but it's a mess for web performance, and I don't own my data, so… bye bye. Webmention is now a great alternative, with more people implementing it, so let's try to keep only that.
When I launched this Jekyll based site a while ago, I didn't put any comment system, because I didn't like any of the options available at the moment.
Later, I was missing the interaction I had on my previous dynamic blog powered by SPIP, so I jumped in the Disqus train, because it was the most used around me, and on the sites I visited.
Then generate the site, deploy, and it works!
I hate how Disqus feels so slow when I browse pages using it.
In fact, Disqus loads asynchronously, so it doesn't really affect the Speed Index of the page on initial load and rendering, but I hate almost every use of lazy loading, and Disqus' one is really bad. I scroll the page to the post end, and then Disqus loads the comments and suggested content, pushing everything else, with an annoying repaint. I hate that. It makes me feel like the site is slow.
Disqus also requires a few rules in your Content Security Policy, but that's manageable.
Disqus being a third party service, we don't know what our comments become and how Disqus tracks us accross blogs, how we are becoming the product.
I can of course export all comments to keep my own local copy, but it's not as convenient as a true local storage.
If you use Disqus on your blog, please activate the "Allow guests to comment" option in the settings!
Of course, removing Disqus could have meant losing the comments made so far. But I don't like to lose valuable content. Some of the comments you make on my posts are even more valuable than the posts themselves!
I had to clean them a lot, mostly manually, because they were an HTML mess. Maybe not only because of Disqus, but also because they had already been migrated from SPIP before.
I added Webmention to this blog a while ago, with some success on popular posts like How much data should my Service Worker put upfront in the offline cache?.
I also see that Webmention use is growing elsewhere. For example, Rachel Andrew chose to adopt Webmention because she had too much SPAM:
I had to turn off comments on my recent posts due to them being used as a vector for anonymous abuse. New site will use Web Mentions.
- Frankie posts a blog entry.
- Alex has thoughts in response, so also posts a blog entry linking to Frankie’s.
- Alex’s publishing software finds the link and fetches Frankie’s post, finding the URL of Frankie’s Webmention endpoint in the document.
- Alex’s software sends a notification to the endpoint.
- Frankie’s software then fetches Alex’s post to verify that it really does link back, and then chooses how to display the reaction alongside Frankie’s post.
Reminds you of manual trackbacks and Wordpress' automated pingbacks? Indeed. Let say it's a standard way to do almost the same.
Trackbacks and pingbacks failed mostly because of SPAM, and IndieWeb is taking this seriously for Webmention's future, with intense work on Vouch, an anti-spam extension to Webmention. Let's hope it gets implemented soon everywhere.
Webmentions for this site are collected by two services:
- webmention.io "is a hosted service created to easily handle webmentions (and legacy pingbacks) on any web page". I use it as my Webmention endpoint. This is an open source project built by Aaron Parecki, co-founder of IndieWebCamp and editor of the W3C Webmention and Micropub specifications.
- Bridgy "pulls comments, likes, and reshares on social networks" (Facebook, Twitter, Google+, Instagram, Flickr, etc.) and push them to my Webmention endpoint. This is an open source project built by IndieWeb people, and is free to use.
All of this is great, but there are a few issues I'ld like to fix as soon as possible.
First, there are some Webmentions that should not be shown, either because they are useless, or because they are duplicates. webmention.io now provides a way to remove mentions, and will evolve to add a block function.
Also, I should group mentions by type. Likes, for example, could take much less space in the page. Aaron Gustafson grouped mentions by type on his blog, but I'ld like to show them as facepiles, like Drew McLellan:
I also have issues with some avatars that come directly from Twitter, and are really heavy. The new version of Aaron's Jekyll plugin will allow me to define my own template, and use Cloudinary to resize and optimize these images. I have yet to try it, because I'm still using the old single file version, while the new one is now a gem.
Simple —yet really valuable— Webmentions as likes and reposts are now simple facepiles. They are the most abundant Webmentions, so it helps reduce the length of the page, and make the actual mentions more visible, most being replies on Twitter.
Also, I'm now using my own templates for all these Webmentions, and I use Cloudinary to optimize all avatars (size, format and weight), and reduce the number of domains from where ressources for the page come. Also, default links to avatars that came from webmention.io where in fact soft redirects (302) to the actual URL on Twitter's servers, so there was an additional latency to get them. Looks like I've killed two birds with one stone!
It looks like Webmentions is getting more traction every day (here Tim Kadlec planning to replace Disqus with Webmentions), I hope 2018 will be a great year for them.
So as many DNS requests are needed. ↩︎