开源之所以诞生,就是源于对商业负责能力的不信任。
开源的诉求是自主掌控,能达到自己满意的,无上限的那个目标。而商业的诉求是盈利,创造一个好的产品只是盈利的敲门砖。开源和商业在大方向上是一致的,但两者的并不在同一个终点。这是两者的本质区别。
对于代码审查问题,首先回答你的问题。开源赋予你的是无上限的能力,不是无上限的承诺和效果。对应的,商业公司也无法做出无上限的责任承诺,商业公司翻车的例子也只多不少。你用这种极端例子来举例并无法反驳我的观点。追求绝对的安全需要付出对应的代价。我们做事都要看投入产出,所以我能说如果这个系统我认为非常关键,那我就可以独立的确实的排除heartbleed漏洞。事实上我在一些项目中已经经历过类似的事情了。比如在某次四方会谈中,商业公司ABCD(都是500强哦)在互相扯淡踢皮球,每家嘴上都是各种承诺各种负责态度都是好的一塌糊涂,谈到具体问题就是需要时间需要费用需要沟通需要协调各种的拖。还好因为他们用了开源的系统,必须公布产品的源代码,我在听了他们扯了1小时的皮之后生气了,掏出笔记本10分钟现场解决了问题解散了会议。
开源的基础逻辑是问题暴露在越多的眼睛下就越难隐藏。这是一个非常朴素的真理,是无法质疑的。另一方面,你的汇编也等于开源,规模大了开源也等于闭源的说法,就是一种狡辩。对于前者不用驳。你做项目是放着c源代码不看,直接看编译出来的反汇编不成?对于后者,倒是挺有意思的,值得好好说说。
首先开源的代码质量,从上限的角度看,天然的就比商业要高一档。一个是work for pay,一个是work for fun/repulation。人们会朴素的认为付钱能得到更好的质量,但已经有很多社会实验证明了这是错误的,很多时候人们更愿意为一个兴趣,一个挑战,一个声誉而采取更积极的行动。钱并不是最高品质的驱动力。你可以说年薪300万砸下来的产出质量一定足够高。但能接得住年薪300w的人,他的精神追求也超出了work for pay的层次。很多开源项目都是业界大佬搞出来的,很多商业软件实际在写代码的都是工作不满5年的employee,乃至是intern,甚至是外包给培训班出来的contractor。
其次,开源是需要开放合作的,合作是需要互相理解沟通的。比起商业公司闭门讨论,开源需要跨地域,跨时区,跨语言,跨水平的大范围交流,交流难度要大的多。所以开源代码在可理解性上也天然的更好。商业公司只有*有价值*的时候才会去做这个事情,但开源必须一开始就做好这个事情。造成审阅难度的并不只有代码规模,还有代码质量。代码的可读性、可理解性当然也是关键因素之一。我之前在circuit版就谈过这个事情。我用rust做stm32开发,我发现rust里对stm32的底层库支持的非常优雅和严谨。yaml文件哪怕你第一次读也能自然读懂,同时它不仅仅具体到每一个bit的定义,对同一个bit的读和写的不同行为都做了区分,每个细节都有文档说明和约束,代码只能从yaml自动产生,你基本上很难理解错误,就算理解错了也很难实际制造错误。对比st写的跟一坨shit一样的hal库,这阅读效率是天上地下的。
所以我完全不认同规模大了开源就等于是闭源了。倒是很多商业公司代码规模大了自己就进入无法维护的一锅粥状态了。网上有个离职oracle工程师对oracle代码的吐槽,你可以搜来看看。就我在几家500强的任职经历来说,这种事情我早就见怪不怪懒得吐槽了。
此外,我不太能理解你为啥总是说匿名代码。开源是任何人都能提交代码,但不等于这个代码就没有身份。上规模的项目,重要的提交人都是有数字签名的,不是说你是谁就是谁了。此外你提交了代码就会被merge了么?就不需要审核么?上规模的项目还要层层审核呢。大规模的代码当然是需要大规模的组织管理的,这一点开源跟公司没啥区别。你甚至可以把开源理解成一个全球就是一家公司的巨型企业。每个人都是雇员,只不过驱动你工作的是兴趣和荣誉感而已。
最后,开源和商业是不排斥的。商业本质上是一种有限责任的服务,一种风险兜底并获利的机制。开源本质上是一种只追求上限,创造艺术品的机制。两者本来就是两件事情。也有很多商业公司为开源产品提供服务,提供维护,提供责任兜底,并因此盈利。现在很多开源项目,也不乏很多商业公司雇员的直接参与。当然这里每家商业公司也是怀着各自的目的而来,并不是这么纯粹的“只是追求声誉”,但这就不展开说了。
总的来说,我觉的你可能对开源世界不太了解。事实上开源已经构成整个信息社会的基石了。纵观这么多行业,只有IT产生了如此快速如此巨大的变革,这个现象堪称异常。很多人认为这是因为IT天然具备零复制成本,但我不这么认为。零复制成本只能增加复制品,并不能带来创造力。只有这个行业产生了异常,是因为只有这个行业产生了开源运动,在零复制成本基础下进一步解放了创造力。想象下,如果上海一套房的示波器任何人想要就送,不仅送还开放所有资料,你想怎么改就怎么改。如果这类事情在EE行业普遍发生,你觉得会对EE行业产生多大影响?我随便想想感觉就是一个黑科技到处爆发的场景。如果没有开源运动,你现在享受的每一个随手可得的好处,背后都会标上一个价码。操作系统,数据库,网络协议,视频音频编解码,压缩,图像,文字字库,... ...不论大小,每一个都要钱都有门槛。我的朋友以软件行业为主,我带他们玩硬件,他们普遍会表达对这个行业的不理解。他们诧异这个行业的保守和封闭,因为他们早就习惯了一堆开源项目一整合,分分钟能获得和商业方案全方位对位的能力。其他行业,这种事情绝对不可能发生,这是IT行业独有的现象,这就是开源赋予每一个参与者的能力上限。并且我认为这个结论,也很好回答了这个主题问的问题。
【 在 leadu 的大作中提到: 】
: 多个帖子一起回了,免得分叉。
: 我的帖子不是在说开源不好,开源有可定制化等好处。我的帖子是在讨论ArchLinux贴的那个图,那个图在说Windows控制用户,而用户可以控制Linux的。
: 这个图逻辑是站不住脚的。
: ...................
--
修改:lvsoft FROM 180.111.48.*
FROM 180.111.48.*