FiveYellowMice's Blog

不能再拖延了,我得自己做一个评论系统

曾经的一张效果图

让我们把时间转回去年。

2016 年 7 月 26 日1,世界上最大的网页评论挂件服务 Disqus ,被 GFW 认证了。于是所有依靠 Disqus 来做评论的网站,全部在中国大陆无法访问了。这很令人头疼,因为对主要读者包含中国大陆读者的网站来说,评论会大大减少,而一些有价值的观点可能就无法被看到。作为对策,一些人选择了切换为多说,一些人选择了拿 GitHub Issues 当评论系统,还有一些人选择了使用 Isso 之类的自建评论系统,也有人选择了继续呆在 Disqus ,并安慰自己“反正看我博客的人都会翻墙”。

同样作为主要读者来自中国大陆的网站,这个博客也必须作出一些对策。

可是让我改用多说?做梦! 即使它不是一个在中国大陆的服务,没有政治审查,它的用户体验也很差:在 HTTPS 中会有 Mixed Content 。 第三方帐号的授权有期限限制,过了期之后,每次点评论框,都会要用户再授一遍权,且网页右上角也会有烦人的提示。界面虽然不是非常丑,但还是有一种“怀旧”的感觉, Disqus 不知道比它高到哪里去了。更无语的是,名字竟然不能超过 9 个字符,让我这个 FiveYellowMice (14 个字符)十分尴尬,跟日本手游厂商似的,不对,日本手游厂商现在都允许 12 个字符了啊2

要使用自建的现成评论系统吗?对于我来说可能不是一个好主意,我希望评论者能收到回复的邮件提醒,而且每次都填一遍名称、邮箱和站点不是一个好的用户体验,更别说那界面的美观程度了。要使用 GitHub Issues 吗?我觉得这也不是一个完美的解决方式,它需要让评论者转到另一个不熟悉的页面上才能进行评论,而且它还需要评论者有一个 GitHub 帐号,这对于技术博客可能没有问题,不过我不把自己的博客定位为“技术”向的,还要考虑到小白。

跟每一个自诩极客的人相同,我也是个喜欢造轮子的人。那么此时,造轮子的念头就产生了。在得知 Disqus 被封的第二天,我就在 GitHub 上开了个 repo ,抱着宏伟的计划开了坑,准备自己写一个评论系统!


然后时间转到今天。

我的评论系统——在整整 7 个月后,还是没有个可以用的样子 :new_moon_with_face:

在这过程中我倒是学了不少东西,比如 Gulp 啦,密码的各种保存方式啦,半吊子 Rails 啦,一脸懵逼、完全没搞懂的 Laravel 啦,用了俩万事包办框架后觉得不适应的 Express 啦。于是我就在这么多的技术之中迷失了。写着写着就觉得不对,就推翻重来,换了三次语言,所以一直没有进度。开学后,成为高三狗,更加没有空。

文章开始处的截图,是我在 G+ 发的关于它最后一篇帖子中的图片。它是第一次被推倒重来前,进度最高时的样子。

于是我的博客就继续用了 7 个月的 Disqus ,期间还写了两篇有点争议的博文。我觉得如果墙内用户可以直接评论的话,它们的评论数可能会更多,也就意味着我可能损失了不少评论者。

“这样不行,这样绝不是长久之计。”我这样对自己说。于是我今天决定写一篇博文,画一个蓝图,催促一下自己,求一下大家监督,顺便介绍一下这个评论系统(还没有被实现、仅仅是概念)的功能。如果大家有鼓励或者建议的话,我渴求能在评论中说一下, 这可能会成为最后评论系统能否被做成的关键稻草


既然咱是在画饼,咱就可以把饼画得大一点,而且这是自己的轮子,可以计划一些自己想要的功能,一些连 Disqus 都没有的功能。

首先,基础的功能得有吧。要有一个表单,俩文字框,一个写评论正文,一个写名字。提交了以后评论得显示在网页上(废话请见谅),得能够嵌入到现有的静态博客里。不过这还不够,评论者还得可以通过头像提升自己的辨识度,要是能同时用 Gravatar 和自己上传头像就更好了。评论者得能够收到回复的邮件提醒,而且要能够退订(否则就变成发垃圾邮件了)。

说了这些还是不能够毁坏 accessibility ,得照顾禁用 JavaScript 甚至终端浏览器如 w3m 的用户,这个博客现在除了 Disqus 的评论之外就是如此。许多人可能觉得这个没有必要,还浪费精力,不过我觉得……反正是在画饼,实际做不出来也没有关系。

这个评论系统得有一个引导式的界面,对于一个以前从没上过这个博客的人来说,这个界面要让他觉得评论很方便、没有门槛,就像按一个按钮般简单。这个界面得吸引他书写完评论之后,引导他完成首次评论后的必要操作,比如验证邮箱、设置密码之类的。这些步骤要尽可能地少,否则就像中国的一些服务一样,注册之前看着很简单,但注册之后很多事情都不能干,要你绑定各种东西。如果支持外部帐号登录的话,可能体验会更好。

换了个评论系统就丢失所有过往评论——这是决不能接受的,所以这个评论系统必须能够导入来自其他评论系统的数据。至少要支持 Disqus ,如果还能支持多说什么的话,也会对已经切换多说的人更有吸引力。

匿名性也不能忽略,允许不愿意透露邮箱的人进行回复,甚至用 Tor 的“极端人士“。这可能会与垃圾信息与机器人的防范冲突,不过肯定是能找到折中的办法的,大概。

还有一个很大的饼,就是引用文章的部分文字进行评论。实际上除了 Medium 的评论系统之外,我没有看到别的评论系统有真正实现这个功能。这个功能肯定不好做,因为还要考虑到文章被修改的情况。不过我肯定能找到办法的,大概。

最后,这个评论系统得有一个好听、易搜索的名字。我曾经给它取名为 Bed Block ,取 BEcause Disqus is BLOCKed 之意,但是冷静下来一看觉得这个名字好难听,于是改名 Discer ,取 discuss 的前四个字母并加上不明所以的 -er ,但是仍然觉得不够好听。所以我在考虑再换一个名字,不过取什么名字呢……我想到了 Posea ,取 POSt EAsy 之意,虽然感觉不是很好念。


为了整得像个样子,我在我的 Wiki 上开了个页面,大概会在以后放上相关的信息。然后这里是 GitLab3 上的 repo 。

尽管我写这篇文章是为了催促自己,但我还是不敢定下一个日期,毕竟这是一个 7 个月难产的老坑了。先画一个饼闻一闻吧,即使最后烤出的饼不够大也没有关系,反正有计划了才是迈向成功的第一步。

  1. 这个日期是查 GreatFire Analyzer 后估计出来的,可能有一两天的出入。但如果真的很不准确,请指正。 

  2. 参见这条推文。 

  3. 为啥是 GitLab 不是 GitHub 呢?因为我被安利之后,发现这玩意界面比 GitHub 好看,功能也比 GitHub 多,至于稳定性……就再说了。 

分享到: Facebook Google+ Pinterest QQ 空间 Reddit Twitter 微博 微信朋友圈
短链接: fym.one/zof