You should have put up a demo site where users can try out the comment engine. Requiring the installation on a user's laptop/desktop is just too much friction, not to mention mobile users who don't have the luxury of running go scripts.
Edit: sorry, I had to purge the comment list because of an update. From now on, your comment will only be alive for 30 minutes. It'll be deleted after that. This is, of course, only for the demo.
Half the value of Disqus is that it hosts the server API for you. Any viable alternative to disqus or other commenting engine needs to provide hosting too. Otherwise, it's not useful out of the box for static websites and blogs using shared hosting. The challenge is integrating comments without the ability to control the dynamic server backend.
The other half value of Disqus is to provide comments to static sites. Back in the days, most sites used dynamic content, and had comments as part of the CMS system they used. Today, lots of sites have no back-end database, and unfortunately, lots of such sites use Disqus simply for convenience. Convenience that hurt the sites, and their visitors (slow load time, unacceptable tracking & spying). Any alternative should be welcomed.
If the sites that use Disqus today were willing to pay for an alternative, I would personally offer hosting of such, with fast load times and no tracking. However, I don't believe such willingness exists, and people are getting conditioned to accept sluggish load times and tracking. Too bad. Self hosted Open Source solutions are the second best alternative - management gets the illusion that the thing is free, and you actually get fast load times and no tracking.
For context, the "load times" we're talking about in the context of Disqus, at least the ones given in the articles I've read, is about 3 seconds. What's more, the javascript is below the fold, so you've already read the site content before seeing the unloaded comment section anyways.
I find it very hard to get worked up about 200k and 3 seconds of nonblocking load.
The tracking is of more immediate concern, but you also have to make a choice as a site owner:
1. Host your own comments. Nobody does this anymore because nobody likes registering for every site out there. You can have anonymous commenting, but ++ abuse. Either way, spam concerns are completely on your shoulders, and you still have to moderate.
2. Shell out to Disqus or similar. People get to log in with the credentials they already have (and don't have to log in at all if they have cookies from using another Disqus site), moderation is still a thing, but spam is much less of a problem.
3. Not have comments at all. An increasingly popular option.
With so much going on about instant articles (or whatever FB calls them), and some institutions pausing, and thinking if its worth handing over their content (often for free) to these external entities - whose goals may/may not be in alignment, I make a prediction:
* In 5 years time, large organizations (e.g. NY Times) will look far more into self-hosted, often open sourced alternatives. Maybe now, they post to twitter, soon they'll refer users to their own mastodon instance. Now, orgs host comments on disqus, in the future self-hosted platforms like Commento will be used. In some ways, it will go back to the independent way in which things operated back in the late 90s/early 2000s; though hopefully better in other ways. That's my prediction.
For static sites, a service that takes comments and pushes them to the source repo for the site (or an extra comment-only repo for security and build-performance) could also be interesting.
On the one hand, it could be nice to have it all in a repository or two.
On the other hand, a repo history is normally immutable (with force pushes on rare occasions), and comment spam is way to common. Do you really a repo with all the usual link spam in its commit history? In case of public hosting it may trigger some spam filtering automation and block the repo/account. While perfectly possible, I'm not sure a DVCS repository is a well-matching concept for storage here.
I disabled comments on my blog a while ago. Private comments? Email me. Public comments? Write a blog post in response, I'll link to it at the bottom of my article. Improves the quality of the dialogue significantly.
Me too. If I write something that might gain lots of interest in my blog[1], I also post it on dev.to[2] and promote it there. That place has comments and a healthy community.
I haven't really thought about that. I dunno, would people pay for this? What's a right monthly price for something like that? $3/month? $5/month?
Edit: I know that if I create a SaaS out of this, you'll have me as a direct competition. But can I know more about how you got yours running, what the range the net revenue is in (like, is it over $100/month? Over $1000?)?
I wouldn't say a flat-rate is exactly correct. Some sites receive tens of thousands of comments on a single article. Others, 5 or 10. The overhead on the service is more likely a better determinant, such as bandwidth and performance requirements for hosting. If SiteA uses 95% of your traffic and SiteB uses 5%, and your overall costs are 200 FakeUnits, you ought to be charging in respect to usage. Starting it at a price that wouldn't impact you negatively would be a good idea, and making it scalable would be even best. I'm moreover just throwing out ideas and thoughts though, I'm no VC or business expert myself, just someone who hosts servers for fun.
At this point I'm not making anything and I have poking at the idea on the side for 3 years. I'm currently collecting interest by allowing people to register for the beta.
I'd been thinking about doing something like this with AWS API Gateway, Lambda and DynamoDB. Chalice (https://github.com/awslabs/chalice) should make it relatively simple to make and deploy...
This looks nice! I'd also perhaps add very crude deleting functionality; perhaps a way to delete comments via CLI by a unique identifier that is shown on the top right of every comment. Just so that spam posts can be dealt with, without needing a full-blown account system.
I used Disqus previously, but eventually dropped it because I didn't really have a need for comments and all they entailed. Having a comment system means having to ultimately setup a way to combat bots and spammers, and probably having to do some moderation (depending on the subject). Linking to whatever discussion happens on Hacker News and Reddit is usually good enough. I think that's what pingbacks were supposed to be for?
Nice, but how it deals with multiple concurrent writes? I see you are using transactions but, as far as I know, sqlite3 supports database-level locking, so one writing instance, unless using ATTACH and separating tables into multiple files, to enable a sort of table-level locking.
Are you considering to add support to other databases?
Single insert per transaction is slow with sqlite, but slow is sort of relative. It would be probably be 10 to 80 inserts per second or so, a little faster if you turn off synchronous writes in sqlite.
I would guess most use cases for this relatively simple comment software wouldn't be expecting that many comments anyway.
An agnostic data layer should probably go on your list, but I imagine other stuff would be higher on the list...like a captcha. Spam will likely be the top issue long before performance.
I'd say put in an ODBC driver. It gets you support for a lot of databases right out the gate, especially if you keep things to a relatively simple subset. That way, someone already running a postgresql or mysql database can plug things in and not need to track another place data is stored.
I'd been using Juvia a lot over the year's, built by the people at Phusion. It's worked really well, but seems to be unmaintained now.
The killer feature needed in any project like this is spam filtering, which Juvia accomplished by just integrating with Akismet, which works mostly, but not completely.
I've mentioned it a few times; I think it's pretty important because it has a bunch of ideas which are our last best hope to prevent the centralisation of the Internet.
Some of their proposals, taken together, could enable people to emulate what Facebook offers, from their own servers.
I'm not 100% onboard with all their ideas, and a few just seem wrong, but all in all I think that they're exciting and important.
Very nice! Small suggestion for nested comments: If you indent just the left side and not on the right side, there would be a lot more space for these comments, while still retaining the look of a thread hierarchy.
How do you prevent comments flood ? Imagine someone write a script calling your server with valid headers, what will happens ?
Serious question I asked myself a month ago on a similar project I tried to put on.
There's no way atm. Can we export all Disqus comments into JSON? If so, I can probably write a script to convert that into a sequence of SQL statements and generate a `sqlite3.db` file. And if you place that in the root directory, all your comments will appear properly.