失败经历:为什么 Pomment 至今没有正式发布
从 2015 年开始,我的博客是一直在使用外挂评论系统的,从多说到 Disqus。其实这些评论系统本身没什么问题,但是中间发生了一些事情:
- 2016 年下旬,Disqus 无法在大陆地区访问
- 2017 年上旬,多说宣布关闭
博客圈里有很多像我这样的难民,他们需要一套替代的评论系统解决方案,但当时市面上缺少足够好用的自建评论系统(并不是没有,isso 其实就是一个)。因为我从小就没有玩伴,也从未有过很多朋友,我希望借助这个风潮来提升自己在圈子的知名度。于是,在 2017 年上旬,Pomment 开工了。
v0
最早版本的 Pomment 就是采用 Node.js 编写的(其实后来几个版本都是)。由于我当时是高三党,加上开发经验严重欠缺,以前只是使用 JavaScript 写过一些小玩具,因此程序设计非常糟糕,以至于在后期难以继续往下编写,最终在 5 月弃坑。
v1
2018 年,我系统的学习了 JavaScript 的基础知识和 ECMAScript 2015 的新功能,雄心勃勃的决定再次尝试开发 Pomment。
这一次,我希望为 Pomment 增加足够多的功能,来吸引很多博主使用 Pomment。但是,这些功能都是我自己根本用不到的:
- 基于用户 IP 的留言自编辑/删除功能
- 插件系统,可以开发反垃圾邮件以及提醒邮件发送的 Provider
- 功能齐全的 Webhook 和 Telegram Bot
- 遵循 GDPR 的访客自助服务功能……
但实际上,由于这些功能我自己根本不会使用,加上功能数量过多,导致软件的开发和测试成本直线上升,拖累了整个项目的进展;同时,由于 JavaScript 本身属于弱类型语言,加上自身编码水平仍然较为欠缺,导致程序运行开销巨大、存在大量隐性错误,难以继续维护;尽管程序早在 2018 年 5 月就在自己博客上线,但是当时线上版本的问题较为严重,同时产生了大量的脏数据。
v2 和 v3
为了解决 v1 的问题,在 2018 年 9 月,我决定对整个程序进行重构。这一次的亮点是,我首次采用了无数据库设计(所有数据存储在若干 JSON 文件中);相比通过 Node.js 的 ORM 调用数据库,效率反而更高,而且更加节省内存。
然而,我依然迷恋于堆积自己不需要的功能(尽管在这一版本中删除了一些),导致系统质量和开发效率依然欠佳。同时,博客圈的风向开始发生转变:越来越多的人青睐无后端、静态的博客及评论解决方案,同时一些新兴的评论系统(例如 gitment)巧妙地借助 GitHub 等公共服务存储评论数据,使得 Pomment 的地位也变得非常尴尬。毕竟博客本体都已经是静态/无后端的了,谁还希望专门为评论系统租用 PaaS 服务呢?
v3 则是在 v2 的基础上迁移到了 TypeScript,并修正了不少的类型相关编码错误;同时,还使用 Vue 2 编写了一套管理界面。目前的 Pomment 版本其实已经较为成熟,但是在现代的博客生态之下受到青睐已经是不太可能了。
遗产和未来的 v4
随着我大学毕业以及需要寻找工作,如何让自己的简历更加出彩成为了我需要考虑的事情。而正是由于我开发了 Pomment,我可以大方的把它写在我的简历上,同时对于整个项目的开发过程、遇到的坑洞都有很多可以说的地方。事实上,我不觉得我的评论系统程序本身是失败的,但过程是。
但是,谁不是在学习过程中不断摔跟头的呢?
在明确了我开发开源软件的目的是为自己服务以后,Pomment v4 的愿景就清晰起来了:使用 Golang 重写,只注重自己需要的功能,把更多的精力放在打磨特定的功能而非堆积功能数量(质量重于数量)。