幾天前架設完成 blog,也使用了現在最常見的 Disqus 來當 commenting service 。接著我看到這兩篇文章:
- Replacing Disqus with Github Comments
- Integrating a comment system which cares about your privacy into ghost
第一篇文章提到, Disqus 會發出一~~~大堆 requests ,我實際跑去開起來測,發現正如他所說,那一~~~大堆 requests 花了 4 秒!! 4 秒!!!
因為這樣而開始考慮換掉 Disqus 。最後讓我決定換掉的主要原因:
- 4 秒。
- comments 在別人家,而且個人覺得它的控制介面很難用
- 一定要登入才能留言
第三點是很重要的原因,這真的很麻煩,它也不是什麼人人都有一個帳號的平台,留言前要註冊絕對會降低留言意願,是我就不留了。雖然也考慮過用 Facebook Comments Plugin ,但還是想保留匿名留言的可能。
總之開始 survey 各種 commenting service ,上面第一篇文章的 Github issue 留言法雖然潮,但要有 Github 帳號才能留言。
第二篇文章的 Isso 最符合我的需求,對 blog 本身的改動少。但它使用 SQLite 、而且短時間內沒有打算支援其他資料庫,我的 blog 放在 Heroku , comment service 也打算放上去, Heroku 不支援 SQLite 這種 file-based 的資料庫、資料一天就會被清掉。
接下來看了各種文章:
- Three Alternatives To Disqus For Blog Comments
- Ask HN: Open Source alternatives to Disqus? | Hacker News
- GitHub - skx/e-comments: External comments for static HTML pages, a lightweight self-hosted disqus alternative.
- 15 Commenting Platform Alternative to Disqus — BOMagazine
- Free Comment System - create Real-Time conversations and drive more traffic
https://www.remarkbox.com/
因為太多了我已經忘記我看過什麼了。各種遇到的問題如下:
- 和 Disqus 一樣放在別人的 server
- 和 Isso 一樣用 SQLite (到底有多懶惰會想要在 production 用 SQLite ?)
- Currently unmaintained. (這個世界好難生存)
- 是 forum system 。(雖然嚴格來說也可以把 forum 調整成 commenting service 來用但也太麻煩了吧)
- 是 PHP 。(不解釋)
我絕望到想說要不要自己寫一個,最後試著開始看 Isso 的 source code ,發現資料庫部分改得動,於是就變這樣ㄌ:
GitHub - jingwanhsu/isso-postgresql: a Disqus alternative
基本上開了兩個 branch :
psql-support
:加入 PostgreSQL 支援deploy-to-heroku
:- 加上 Heroku 用的 Procfile 和 npm dependencies & scripts
- 讓設定檔可以讀 environment variables
在 Heroku 部分幾點注意:
- 要用兩個 buildpacks ,參考 Buildpacks | Heroku Dev Center ,先
heroku/nodejs
再heroku/python
- 環境變數加設一個
WEB_CONCURRENCY=1
,因為用 Gunicorn 作為 web server ,預設會跑兩個 worker ,這樣 initialize 時會在資料庫上互相干擾
設定部分可以參考 Isso 的 Document , Client 端的設定則被我默默整入 theme 裡面了(自幹好爽)
大概筆記到這裡,寫這個又多花了幾天,但還滿好玩的,之後有空可能再把 repo 裡的說明整理一下~(要花的功夫比寫扣還多)
到目前為止都沒有改到 Isso 本身的邏輯,不過看一看好像改一改也不太難的樣子......