bentomas.com

Why I'm not using Disqus on this website

Last night, for the third time in four days I tried to implement the Disqus commenting system for this website. Disqus is all the rage these days with Jekyll blogs. Just look here or here or here. But I just couldn’t do it. Here are my list of reasons why I am not using Disqus:

  1. They are overly complicated. Now this particular complaint is pretty subjective. My bet is that a lot of people really like all the features they offer, but I didn’t. I don’t need a rating system for comments. I don’t need avatars, or people logging in or threaded replies.
  2. I didn’t like their code. I turned off avatar support but when loading my site, an avatar was requested. All I need are comments, yet it makes three requests to their servers. One to get their code, two to get your comments and then three to get the number of comments to populate links to the comment section.
  3. They don’t support OpenID (I made that site!). I don’t expect everything I use to support OpenID, but I think that if something wants to be an open service that can be used every where, then the form of logging in shouldn’t be proprietary. Of my four gripes, this is my weakest. I just think that if you want to seem open and accepting, supporting OpenID is a good way to say it.
  4. I didn’t like their logo at the top of the form. I know it is a pretty obnoxious to want to use an external service and not give them credit for it anywhere but I didn’t want their logo at the top of my form.

What did I like?

  1. That you can add commenting to a static site. I think this is a cool idea.

What would I do differently?

  1. No avatars, no ratings, no threads, no users. Just a form asking for a name, a comment and optionally a website address.

    Either the web address would automatically be checked to see if it was an OpenID or there would be a check box to specify it is one. (I don’t generally like the former option since I think it is weird to fill out a comment form and then be randomly sent to an OpenID provider, as seen here, but I think adding that extra check box is a little cumbersome).

    If commenting without an OpenID, the comment has to be approved as not spam before showing up. If commenting with OpenID, the first time I have to approve it and then from then on it is automatically approved.

  2. Only one javascript request per page load. How would this be done? There would be in-line javascript at the bottom of the page (right above the Google Analytics code, for example). This javascript would do three things.

First, it would scan the page for comment links (i.e. links specifying the number of comments in a post and linking to the comment form); the goal being to add to the link text the number of comments for the linked post. Disqus had you signal this with the URL fragment by adding #disqus_thread to all comment URLs. I think this is a good clean semantic way of finding all the links that need to be updated.

Second, it would scan the page for a `div` with a specific id.  Something simple like 'comments\_div'.

Third, it would add to the end of the document a `script` tag that loads a javascript file that would do everything else.  The URLs of the comments links would be tacked on to the end of the `src` for the `script` tag (via the `GET` paramaters), as would be the URL of the current page if a 'comments\_div' was found.

This javascript file would be dynamically generated to have all the necessary code so that when it loaded, it would insert the number of comments into each of the comments links and insert the comment form and comments into the 'comments\_div'.

One external request made. Only if necessary. And it would return only the information that was needed for that page.

If I get a chance I’ll try and implement this but it’ll have to wait. I have a lot on my plate currently!