
Show HN: Commento: Lightweight, open source, tracking-free alternative to Disqus - adtac
https://github.com/adtac/commento
======
metalmanac
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.

~~~
adtac
Whoa, this blew up! Here's a working demo that I just hacked together:
[https://adtac.github.io/commento/comment.html](https://adtac.github.io/commento/comment.html)

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.

~~~
gizzlon
Nice, that demo loaded pretty fast even with _a lot_ of comments :)

~~~
adtac
And I'm only using now.sh's free tier for the backend.

~~~
reddit_clone
I was going to comment on the slightly laggy edit box. This might explain
that?

I am on FireFox 53.0 on a decent Windows 10 laptop.

~~~
adtac
That is because there are over 7000 comments right now. Clearing it. Try
again, it should be snappy.

------
j_s
Related discussion: _Replacing Disqus with GitHub Comments_ |
[https://news.ycombinator.com/item?id=14170041](https://news.ycombinator.com/item?id=14170041)

Recommended alternatives to Commento (Golang):

· [https://posativ.org/isso/](https://posativ.org/isso/) (Python)

· [https://github.com/jimpick/lambda-
comments](https://github.com/jimpick/lambda-comments) (Node.js, AWS)

Github-based alternatives:

· [https://staticman.net](https://staticman.net) for Github comments

· Github Issues for comments ( [http://donw.io/post/github-
comments/](http://donw.io/post/github-comments/) )

>
> [https://github.com/shurcooL/issuesapp](https://github.com/shurcooL/issuesapp)

> [http://ebarnouflant.com/posts/4-turn-your-github-issues-
> into...](http://ebarnouflant.com/posts/4-turn-your-github-issues-into-blog-
> posts)

· Github Wiki for blogging:
[https://github.com/stickfigure/blog/wiki/GitHub%27s-wiki-
mak...](https://github.com/stickfigure/blog/wiki/GitHub%27s-wiki-makes-a-
pretty-decent-blogging-platform)

· remove comments and use Pull Requests and Issues for substantive discussion

Other options:

· Reddit, Facebook, Discourse for comments

· Privacy via Disqus comments on demand when pressing a button

· Google Wave via Sandstorm

~~~
stevekemp
Also my toy-project:

[https://github.com/skx/e-comments/](https://github.com/skx/e-comments/)

Demo:

[https://tweaked.io/guide/demo/](https://tweaked.io/guide/demo/)

------
stewsnooze
The Solid framework, supported by Tim Berners-Lee, is looking for an app like
this to be built to add to its list of Wishlist apps.

[https://github.com/solid/solid-apps#general-
wishlist](https://github.com/solid/solid-apps#general-wishlist)

~~~
na85
>supported by Tim Berners-Lee

An endorsement from Mr Berners-Lee means little, having caved on the DRM
issue.

------
mzzter
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.

~~~
jgaa
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.

~~~
detaro
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.

~~~
drdaeman
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.

------
Sir_Cmpwn
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.

~~~
dawnerd
twitter is also another nice option.

~~~
Sir_Cmpwn
Would prefer Mastodon/GNUSocial over that.

~~~
ue_
Mastodon really is good, it's fun to use and the fact that you can connect
with people on other instances is great.

------
foxhop
I'm bootstrapping an alternative to Disqus called Remarkbox
([https://www.remarkbox.com](https://www.remarkbox.com))

Are you planning on also offering a paid hosted version?

~~~
adtac
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?)?

~~~
0x6c6f6c
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.

Disqus is also paid or supported by ads:
[https://disqus.com/pricing/](https://disqus.com/pricing/)

------
brango
I'd been thinking about doing something like this with AWS API Gateway, Lambda
and DynamoDB. Chalice
([https://github.com/awslabs/chalice](https://github.com/awslabs/chalice))
should make it relatively simple to make and deploy...

~~~
mwnivek
Something like this? [https://github.com/jimpick/lambda-
comments](https://github.com/jimpick/lambda-comments)

~~~
brango
Exactly. Thanks!

------
prophesi
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.

------
TheAceOfHearts
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?

------
_cereal
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?

~~~
adtac
>but how it deals with multiple concurrent writes?

I'm afraid I'm not very familiar with how go-sqlite3 handles that. I just
started learning golang a month ago, so it's all quite new to me.

Maybe someone else will have a better answer.

>Are you considering to add support to other databases?

At the moment, no. Comments aren't exactly big data ;)

Just curious - which databases would you like to see and why (what do they
offer over sqlite)?

~~~
tyingq
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.

------
JangoSteve
This looks really nice and clean.

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.

------
mxuribe
Add in indieweb functionality to the codebase, such as microformats stuff, and
I think this could really catch on. See
[https://indieweb.org/comments#How_to_markup](https://indieweb.org/comments#How_to_markup)

~~~
bshimmin
I have literally never heard of IndieWeb. Is this something important I should
have heard of?

~~~
losteric
I've been hearing murmurs about it for a while now, I think it's a great idea
but thus far it's lacked sufficient business buy-in to gain traction.

~~~
reitanqild
Just read and it IMO doesn't seem to need business buy-in, just people who
want to have their own domain, write stuff and post it.

------
aw3c2
Please use a locally hosted js in your example code. rawgit does not even have
a privacy policy.

~~~
jacobmischka
There's a PR open for it:
[https://github.com/adtac/commento/pull/3](https://github.com/adtac/commento/pull/3)

------
kevingrahl
I'm getting a 404 on
[https://cdn.rawgit.com/adtac/commento/0.0.2/vendor/commento....](https://cdn.rawgit.com/adtac/commento/0.0.2/vendor/commento.min.css)

~~~
adtac
Fixed. Thanks!

------
lol768
Does it include a CAPTCHA? Comment sections seem very susceptible to spam from
experience.

~~~
adtac
It doesn't at the moment. But someone filed and issue for this and someone
else has already begun work on this!

I <3 open source.

------
bramakris
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.

~~~
adtac
Thanks, opened
[https://github.com/adtac/commento/issues/21](https://github.com/adtac/commento/issues/21)

------
Xoros
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.

~~~
adtac
At the moment, there's no way. However, Captcha has been suggested. Annoying,
but it'll work.

~~~
aembleton
The new no Captcha Recaptcha should help
[https://security.googleblog.com/2014/12/are-you-robot-
introd...](https://security.googleblog.com/2014/12/are-you-robot-introducing-
no-captcha.html)

~~~
newsat13
And let google track you instead?

------
timbowhite
What's the best way to import existing comment data from Disqus into Commento?

~~~
adtac
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.

------
brilliantcode
I'm curious how why you need to initialize a local server? Does that run
inside the browser?

~~~
adtac
The `init_commento("[http://0.0.0.0:8080")`](http://0.0.0.0:8080"\)`) in the
README is an example. You can host your own instance of Commento and just
point to that.

