我的关于开源的若干问题与思考

缘起

这是2021年第一帖。近来一直和国内开源界一些活跃人士,大佬有过接触。有很多输入信息,引起了我的一些思考。下面是我从一个没怎么做过开源的角度,介绍下对开源一词的认识和与之对应的思考。形式以QA方式自问自答。

Q1:我看到的开源是什么?

开源一词的核心是开放源码。这个开放应该是公开的、不受非技术因素之外限制的开放,代码首先要公开,比如放到github上。但是也有直接提供源码zip包下载的,比如quickjs(其创造者为Fabrice Bellard,他是ffmpeg、qemu的作者)。代码就是打一个zip包放在网上供下载。里边也没有什么提交记录。

所以,这么看来,代码开源,包括提交记录,可能是为了代码阅读,历史记录跟踪。是为了更好的管理而存在的。

anyway,代码开源,最核心本质的就是把源代码放出来,最好是一丝一毫都不要有隐瞒。当然,最正规的方式还是把代码按标准的提交记录之类的,把开发过程放出来。

Q2:我怎么理解开源?

我个人认为现时今日把开源当作是一种way of working——就是以一种工作方式会更好一点。开源刚兴起的时候,可能还有开源精神的说法。因为那时候知道的人少,理解的人更少。开源确实是一种精神。用一种精神来标榜自己,鼓舞追随者。

但历史已经前进了,开源其实早已被大众接受了。它只是一种方式,更确切的说,一种工作方式了。有好处就开源,没好处就不开源,只是一种工作方式而已。

Q3:我看到的开源的好处?

要不要开源,首先一定要回答开源的好处。没有好处,谁会干呢?这个问题从开源一词诞生之日开始就存在,并且永远存在。只不过,有些时候这个好处是为了劳苦大众,有时候是为了个人,有时候是为了公司。

  1. 对个人来说,相当于你做的东西可以被更多人知道。 以前你做的东西只能靠你的嘴说。 现在你做的东西大家可以很方便得看到。 写书、写博客、写公众号其实差不多都是这意思。 有些公司通过文章找人,有些公司通过源码找人。 当然,个人开源代码注意和公司的产权做隔离。

  2. 对公司来说,开源有什么好处? 有些公司(可能主要是国内的公司)把开源当做一种开放的表示。

有些公司把开源的项目当做软件产品来开放,也就是从之前闭源的开发转到开源的开发而已。 开源只是工作形态发生了变化,还能召集不同的人、不同公司、国家的人、不同背景的人来参与开发才是关键。

在这种情况下,开源是辅助 该产品开发的一种有力的手段,达到了1+1>2的好效果。 显然,对于这种东西,我们要以软件产品的角度来看待。 开源,是一种促进这种软件产品持续发展的方法。 而且,为了更好的开发这个产品,什么代码提交格式、review、CI/CD才会随之而来。

另外,如果软件产品本身确实不错,其他公司的人也会被吸引过来,吸引的人多了,摇旗呐喊的人也就多了,用得也多了,影响力自然而然就出来了。所以,关键还是这个软件产品,产品好就好。抛开产品单纯谈开源和不开源有什么意义?产品不好,开源出来反而会被骂死。

还有一种方式,就是某人、某司有个想法,想以开源的方式来共同推进开发,前期可能只有一个idea。这其实也可以,在这种场景下,开源就是一种工作方式。当然,可能除了参与项目的几个人会去观看。这时候是不是代码真的对所有人都开放也没什么意义。我之前在gitee上开发pos机,只对若干人开放,所谓的私有仓库而已。

Q4:开源项目的star有什么意思?

开源项目获取的star数越多,直白意思就是看得人多,影响力大。很可惜,但很多人也没有意识到的东西是。一个东西好不好,不光看评价它好的人的数量,还要看评价它好的人本身是不是够好。也就是说你牛的人是不是自己也牛?片面强调数量,导致很多人给github上的项目买粉。

Q5:当我们提倡开源,是要做什么?

最近这3-4个月,开源是喊得最凶的一个口号。虽然大部分时候我也是在里边摇旗呐喊,但我也有疑惑。就像上面说的,开源只是一种工作方式,不谈好处,只谈开源是什么意思?后来我想了一下原因,可能是:我们谈开源,更大程度谈的是我们(尤其是中国人)要自主可控。这里的关系很微妙,不是因果关系,但有关联关系。先回答下什么是自主和可控。

可控,是指东西可能不是我们写的,也没有太多发言权,当领导层开会讨论,决定明年要干什么,不干什么的时候,咱们有个板凳在边上能坐着。当领导层不带我们一起玩,把我们踢出去的时候,我们这时候打包所有源码,搞分叉,来个bug咱自己能修理。这就是可控。

这种事情并不只是针对外国的、外国人开放的软件。在任何一个用了第三方外包服务,项目开发的公司,都会强调可控。尤其是银行。很多系统很可能是第三方公司开发的,但要求银行自己的开发员工要做到可控。就是第三方公司一旦消失或者翻脸,我们自己是要能扛下这个系统的。

显然,对于软件产品来说,要做到可控的一个关键要素就是源码要开放。不论是对甲方公司,还是对普罗大众。反正是要除了开发的那波人之外,还有人能全部access到。

自主,是可控的升级版。就是这个系统的领导层里有咱自己人,咱们能决定大方向,能操盘。注意,光有个司令没有兵也不行。

现在大力提倡开源,主要是把那些基础中间件的代码开放,并且要做到自主可控。对银行这样使用的第三方软件产品,它们有自己的自主可控手段——归根结底还是把代码全部拿过来。

但是。现在软件行业这么发达,分工这么明细的情况下,基础软件,尤其是中间件、OS几乎都是外国人主导的。对我们来说,在源码开放的情况下,可控可能还行,自主暂且有些困难。继续努力。

Q6:有什么办法做到可控、自主呢?

风物长宜放眼量,做时间的朋友,盯紧。比如,专门养一堆人跟踪这些重要的中间件开源项目,把源码摸清楚,搞透。先做到能听懂,然后做到能对话,逐步渗透、然后替代。这套路就是曾国藩的结硬寨,打呆仗。

时间是长了点,但好处很多。因为这些人与其折腾他们今天搞东,明天搞西搞出一堆灰出来,其实也没留下什么。在这些源码都开放的情况下,我觉得除了把源码看懂,是一种比较有效的方式。当然,还可以在新兴赛道上搞弯道超车,比如量子计算机出现后,其软件必然会有很大的不同,这就是新的机会。参考电动车就知道了。

Q7:怎么融合不同的想法?

年轻的时候,大家都喜欢争论个对错,一言不合就可能被打屎。关于开源,我发现市面上有各种不同的想法,观点,看法。简单的以对错来区分肯定不对。因为你觉得错的东西,人家提出来并不见得是傻。另外,也不能是黑、白、灰来标示这些观点,因为可能还有红色、蓝色的观点。所以,我一直在思考如何看待这些观点的存在并且以一种什么方式来看待它们?

这需要建立一种思维模式。偶然一次想起和孩子玩拼图,我就恍然大悟。对,我们应该建立一种拼拼图的思维模型。人家的不同想法,应该是拼图里的一块。它可能和你正在拼的部分不一样。但你显然不能认为它没有用。应该是把它和你现在拼的东西考察下,如果你用得上就用。如果用不上则先存起来,后面可能用到。或者,你发现它补齐了你另外一块没有思考到地方,则用它补齐。所谓心态决定一切,心态背后其实反映的是你的世界观,思维模型。建立适合的思维模型有助于心态的调整。另外,思维模型也是不断迭代的。或许,当你感到不舒服的时候,就是要调整模型的时候了。

先澄清下,以上我是自问自答,暂时能解释我的一些困惑。以后碰到不合适的地方,我还会调整思维角度。上面内容请几个朋友看过,他们也有完全不同的角度,思维方式,我觉得很有大局观,在这里分享给大家。

Q8:关于开源,不一样的角度和看法是?

既然讨论到开源,那就必然要说开源的历史和开源的基本理念,比如开源的基本理念:创新、开放、自由、共享、协同、民主、绿色。开源技术本质上是测试技术开发是否成功,最终要通过测试和验证来检测。开源营造开放环境、制定并执行开放标准、发布开源代码、为异构产品、不同的系统互连、兼容和互操作开路,自由传播、资源共享、开源社区的开发机制协同创新,推动信息由不对称向对称化转变,信息对称化也是开源民主化的体现。

这几个基本理念,不适合孤立来讲来讨论,这几个理念不是口号,看似所有人都认同的,实则不然。

实际上,现在的很多问题的争论都可以回归到对这几个基本理念的理解和认同上来,即使多年从事开源的人来说也是如此。比如社区的概念,社区到底是什么优先,是社区优于代码还是反过来,比如开源后来加入了商业化运作的基因,也就是所说的开发商业模式,这些模式的优劣好坏,开源项目成功与否的衡量标准等等这些都要回过头来看开源发展的过程和历史沿袭,才能更深地理解为什么是现在这个样子。开源提出之时,有过很多意识形态领域的特别特别激烈的争论,比如当时到底应该free software 还是open source ,其实就是理念之争,最后是open source占了上风,争论也才日渐平息。但是小范围的争论一直也没有断过,

据了解,国内有一批很早就接触开源的人现在基本上干脆现在就不提这个开源的理念问题了,另外也有些执着于开源的或者说自由软件的原教义,特别是现在40-50岁左右的那一批人,但是有一点,他们对于开放、共享和协作还是很认同的。

目前争论最多的人群又回到30岁左右的这一批人,有很多也是国外回来的在大公司以开源为职业的一批人。

比如你提到的对开源精神的理解,具体的这些的问题,比如开源的好处,是否要开源,比如公司的开源策略,比如个人和社区的关系、比如借助开源社区得到个人的提升和职业规划的实现、开源和所谓内源的关系,内部治理的关系、甚至开源和现在的自主可控的关系,等等,都是有很多地方可以讨论。

开源精神起源于hacker精神。开玩笑滴说,并不是所有人都适合做侠客,虽然很多人都有侠客梦,也不是所有公司都适合用开源策略,从公司的角度来说还要看企业文化和公司开源基因,这点也是不能忽略的。

最后的最后

  • 我期望的结果不是朋友们从我的书、文章、博客后学会了什么知识,干成了什么,而应该是说, 神农,我可是踩在你的肩膀上的喔

  • 关于学习方面的问题,我已经讨论完了。 后面这个公众号将对一些基础的技术,新技术做一些学习和分享。也欢迎你的投稿 。不过,正如我在公众号“联系方式”里说的那样——郑渊洁在童话大王《智齿》里有一句话令我印象深刻,大意是“我有权保持沉默,但你说的每一句话都可能成为我灵感的源泉”。 所以,影响不是单向的,很可能我从你那学到的东西更多

神农和朋友们的杂文集

长按识别二维码关注我们