幾天前架設完成 blog,也使用了現在最常見的 Disqus 來當 commenting service 。接著我看到這兩篇文章:

第一篇文章提到, 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 的資料庫、資料一天就會被清掉。

接下來看了各種文章:

因為太多了我已經忘記我看過什麼了。各種遇到的問題如下:

  • 和 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/nodejsheroku/python
  • 環境變數加設一個 WEB_CONCURRENCY=1 ,因為用 Gunicorn 作為 web server ,預設會跑兩個 worker ,這樣 initialize 時會在資料庫上互相干擾

設定部分可以參考 Isso 的 Document , Client 端的設定則被我默默整入 theme 裡面了(自幹好爽)

大概筆記到這裡,寫這個又多花了幾天,但還滿好玩的,之後有空可能再把 repo 裡的說明整理一下~(要花的功夫比寫扣還多)

到目前為止都沒有改到 Isso 本身的邏輯,不過看一看好像改一改也不太難的樣子......