D 的个人博客

全职做开源,自由职业者

  menu

Solo 从设计到实现后记

本文是《Solo 从设计到实现》的一个章节,该系列文章将介绍 Solo 这款 Java 博客系统是如何从无到有的,希望大家能通过它对 Solo 从设计到实现有个直观地了解、能为想参与贡献的人介绍清楚项目,也希望能为给重复发明重新定义博客系统的人做个参考 ❤️

轮子和时间

“不要重复发明轮子”在程序员界的流行应该是从 Rod 发明 Spring 开始。他曾经在其著作《Without EJB》中使用了这个谚语,并阐述了 Spring 的诞生基于这一理念。

重复发明轮子最大的问题在于浪费时间。作为作者,浪费时间重复劳动;作为用户,浪费时间尝试。一个不好的轮子会严重浪费大家的时间,所以“不要重复发明轮子”主要针对的是那些不够圆的轮子而言。

新轮子肯定不会很圆。要么是设计问题,要么是工艺问题。设计问题最好在设计阶段就确认好,工艺问题可以花时间解决。

我觉得只要大家有时间,就尽可能发明轮子吧。无论是产品层面的优化改进,还是框架技术层面的创新尝试,我觉得都是值得的。作为普通程序员,浪费一些时间并没有什么大不了的,相信勇于尝试并坚持下去,一定能够改变一些事情的。

成功的开源

什么是成功

一个开源项目是否能够流行,很大程度上取决于主创人员是否能够在一定时间跨度(比如 5 年1)内坚持不断更,因为只要在更新就意味着在改进,项目没有死掉,充满着希望。而要定义一个开源项目是否成功则取决于贡献者数量,贡献者的多少定义了该项目存在的意义。

你可能会认为通过贡献者的多少来定义成功存在矛盾:不完善的项目对其他人来说会具有更多的施展空间,可这样一个不完善的项目怎么能算作是成功呢?反过来,一个完善的项目对其他人来说改进空间有限,这样的项目难道不算成功吗?

我觉得通过贡献者数量来定义开源项目的成功是成立的,因为:

  1. 其他人之所以贡献一个项目的根本原因在于大家都看好这个项目,认为这个项目在未来将非常有价值,为了项目的明天而贡献自己的一份力量,这种情感非常纯粹,可称之为开源的信念
  2. 项目是否完善是个伪命题,任何项目只要想发展改进就一定存在可发展改进的空间,一个人也许看不到,但众人的智慧能让项目走得更远

可以这样说,主创人员离开后项目依然能保持活力,那这个项目就真正成功了。所以对于主创个人来说,是否能够成功在于如何让项目脱离自己依然能存活下去,个人名利只是朝这个方向努力的副产品。可惜很多人却本末倒置,把开源当做收割名利的工具,这样的开源项目必定是失败的。

如果不能成功

这是一个令人有点沮丧的话题。对于一个开源项目的主创人员来说,追求成功是很正常的。可以说人人都渴望成功,但如果人人都能成功,那成功就失去了意义。

“我都做到如此程度了,为何还是得不到大家的认可?”后来发现那时的“如此程度”是那么微不足道甚至荒谬可笑。我们应该让自己不要变得爱慕虚荣,让自己不要变得那么虚伪,因为越想得到时往往越不可能得到,这也许真的是宇宙运行的法则之一。

开源不只可以丰富我们对外界的认知,也可以丰富自己的内心世界。可以这样说,心有多大,开源的世界就有多大。所以放下那些所谓的得失,开源才会变得真正有意义。

所以不成功就不成功吧,自求己道。

博客的未来

服务平台消亡

随着时间的推移,博客服务平台将逐渐减少直至消亡,个人独立博客将逐渐兴起。博客服务平台的消亡已经有很多案例,最直接的原因是提供商很难从中赚到钱。现存的几个类博客服务平台也面临同样问题,解决方案要么是扩大融资输血,要么就是不顾吃相地铺天盖地挂广告。

平台赚钱难是一方面,另一方面促进其消亡的原因在于网络环境的改变。过去要建立一个个人独立博客成本是很高的,主要代价是“昂贵”的服务器费用,这使很多博主只能到平台上开博。但随着网络基建、云计算的普及,费用方面的成本也逐渐在降低。并且“提速降费”已经上升到国家战略高度,运营商的实施成效大家也是有目共睹的。所以,随着服务器费用的降低,建立个人独立博客的门槛也被大大降低。

另外,在博客系统软件方面,静态博客的流行对博客服务平台消亡也起了推波助澜的作用。在这方面,有技术前瞻性的平台都转向提供 “Pages” 托管了,对用户来说唯一的门槛就是域名备案,但目前来看这也不是多麻烦的事情2

所以,传统博客服务平台的消亡将成定势。但并不是所有“平台”都会被独立博客取代,平台本身作为流量入口的优势是独立博客无法比拟的。

聚合平台崛起

大部分博主都想让自己写的文章被更多人看到。但有很少部分的博主不这么想,他们不希望自己的文章在网络上“公开”,该想法其实非常矛盾,因为无论是出于安全隐私的角度不想公开,亦或是出于“不好意思”让其他人看到而不想公开,较好的方式是离线存储,更好的方式是手写在纸上并藏好,最好的方式是不要写出来仅存在于脑海里。内容一旦被发布到网上就避免不了公开的结局,这就是互联网。

提到“内容聚合”,大家印象里可能会觉得这类平台就是靠爬虫搞些内容搬运的勾当。我这里说的聚合平台不是这种聚合方式,而是博主自愿手动推送内容到平台的方式。内容的聚合只是其中一部分,更重要的部分是交互的聚合。比如平台上的评论也会推送到博客端,平台上的个人设置也会在博客端展示等等。

这样的交互式聚合平台将在未来逐步崛起,这也是一种新的博客网络,可以看作是博客 + 社区的网络体验。往更远的未来看,这是一种个人数据服务端点 + 平台融合交互的架构,它可能会在更大范围内将影响数据的产生和消费方式,让我们拭目以待!


  1. 为什么要把持续更新定在 5 年呢?“5 年”是拍脑袋的,这里主要是想说明技术框架的更迭。如果项目引用了过多的第三方依赖,那这个周期内依赖会发生一些大的变化,对项目会产生很多影响。所以如果想做一个长期的开源项目,一定要逐步减少依赖

  2. 域名备案不是多麻烦的事情,比如阿里云提供的代备服务就很方便。“域名备案”更多的可能是一种思想上的抵触,我觉得完全没有必要。国家既然设定这方面的法律框架,作为公民去实现依法守法是必须的。所以不要被某些居心叵测的人误导了,他们那样说更多是为了实现他们的利益。当然,如果你是发自内心的抵触,那么只能用我们都知道的那个办法了