Dhiren Audich Software Developer | Apprentice Polymath | Data Science Enthusiast

Comparison of Various Commenting Systems for Jekyll

Jekyll has been lauded for its speed, simplicity, and security. However, one of the drawbacks of it is that it doesn't have a native commenting system. Considering that this was designed with blogging in mind, one would assume it would have one. Fortunately, because Jekyll is directed towards a more tech savvy crowd, there are a lot of hackers out there who have either designed and built or hacked and configured a commenting system that plays nicely with Jekyll.

Here I present my own findings on this issue...

Requirements

To have some criteria for my analysis, here are a few things I look for from a good commenting system:

  • Easy to install and configure
  • Licensing, fees & price
  • Ownership of the data
  • Security
  • Functionality
  • Longevity

Contenders...

1. Disqus/Livefyre/Intense Debate

The standard advice given to anyone that is planning on hosting a Jekyll blog is to use Disqus, or some other similar service as done by Octopress.

  • All three involve injecting JS into your site. So they fairly easy to install.
  • All three of these services provide free basic service. Livefyre and Intense Debate do have additional paid features, but they are designed for larger organizational entities.
  • In all three circumstances the parent company reserves the right to distribute, and reproduce any content that either you or anyone else posts to your account.
  • Each service offers free spam and authentication services.
  • Rich interfaces and lots of functionality all around. Unfortunately, you are still stuck with styling around the embedded form.
  • Some of these companies have been around for a while now, and they all offer data export feature.

2. Github/Facebook Comments

Another popular option for having a commenting system with authentication is to use either Facebook's or Github's widget like service. While most of the features are exactly the same as the previous contenders the primary difference between them is that Github/Facebook require the user to be a member on their site as opposed to something like Disqus which allows you to log in with multiple ids.

  • The primary downside to these is that you are limiting the discussion on your site to only a handful of participants (those with Github and Facebook accounts).
  • The data is not owned by you, it is saved on Facebook/Github servers.

3. Juvia

Juvia is an open source commenting system that allows you to run your own server and inject JavaScript bits into your website. It uses AJAX for its calling. It claims to have been created in a way that it doesn't conflict with existing JavaScript on the page. But when I tried to install this on my own site, I found some conflicts. I reported them on the official bug tracker on github but couldn't get any help on it, so I abandoned trying to get it working after some struggle.

I did, however, get the server portion installed and working. It was quick but had to play with the gemfile a little bit to get it to play nice with my hosting service. Too bad the JS injection didn't work. But there are plenty out there who do have all the pieces working. Some of the salient features of this system:

  • Fairly easy to install (hit and miss for me), might need help troubleshooting or re-configuring.
  • Open source, hence no fees. You can implement your own features if you want.
  • Data is owned by whomever owns the server (Terms Of Service) on which you are running the server portion of the program.
  • The software does support Akismet, and seems to sanitize input.
  • It comes with all the basic features that you can expect from any commenting system, but anything more niche, you might have to write your own features.
  • This is always hard to tell for open source projects. If you are a contributor then the correct answer is as long as you contribute. Otherwise you are at the mercy of the active developers.

4. Static Commenting System

The final system I tried was the static commenting system. The rhetoric for a static commenting system can be found on Matt Palmer's blog post. You can find the actual system here. Unlike the other systems that I have reviewed this one is a bit of an odd one out. Simply because there isn't anything dynamic going on. Just a plain php script that sends the comment to an email address. One of the salient points of this system is that the php script actually formats the message to YAML format, so once you approve the email you can just copy paste the YAML matter to the comments folder and the ruby script places it in the correct post on site generation.

  • Easy to install but can be time consuming. Adding the php script and the ruby hook is quick but the form isn't styled at all. It also neither responsive nor accessible out-of-the-box.
  • The project is open sourced so it is free as in beer+speech.
  • Whomever owns your mailing account technically own the data as determined by the TOS.
  • You act as your own spam filter. No database hence SQL injections. As long as you have your file permissions set correctly, there should be no XSS security vulnerabilities. You might want to add a phantom text field for validating input to avoid scripted spam attacks.
  • Apart from the basic form and submit, anything you might want to develop.
  • As long as php is alive (sigh).

Conclusion

In this post I had set out to explore various alternatives for a commenting system that would be suitable for a static website generator like Jekyll.

This is purely subjective, but I feel that if you are investing in a static site generator and prefer Markdown files to databases. Then you might as well invest some time and either create your own commenting system (I tried) or use an open source system and hack it to your liking. Since this is a personal blog and I am not expecting a flood of time-sensitive long discussions I decide to use the static system. This also eliminates the time I would have wasted in trying to administer a database and/or creating yet another account on the internet and sharing my personal information with. Additionally, it reduces the amount of dynamic code that runs on my site affecting the page loads.

In the end its always about compromise and necessity. If in the future I find that the number of comments submitted to the site are more than I can safely handle then maybe I will spend some time investigating a dynamic commenting system. Until then this will do.

Notable Mentions:

Systems that I did not check because of various reasons, but I thought I should still mention them:

Leave a Comment

All comments are held for moderation; basic HTML formatting accepted.