国庆假期期间,人民邮电出版社给我寄的新书《拥抱开源》到了,我翻看了一遍,写点读后感。
该书是X-lab实验室翻译的,译者主要是华东师范大学的老师和同学。部分开源专家对译稿做了审校。总体而言,翻译质量是很高的。
该书的作者是Gordon Haff,他是Rad Hat公司的技术布道者,为多家媒体撰稿。
该书原版的书名为:《How Open Source Ate Software》,直译就是《开源是怎么吃掉软件的》。
《拥抱开源》
一、总体评价
该书很适合开源入门。作者从计算机起源、UNIX、Windows、Linux讲起,对自由软件、开源软件等都做了历史性的回顾和陈述。
在法律方面,作者讲了版权、开源许可证、商标、专利、商业秘密等基本概念和知识。
在开发模式方面,作者讲了开源项目的管理、开源项目的度量、Devops、DevSecops等内容。
在社区方面,作者讲了开源社区的结构,如何维护社区,以及怎样才有利于社区成功等话题。
此外,作者还讲了开源动机、商业模式、开源软件安全性、云服务对开源的影响以及开源文化等话题。
总的来说,如果你认为自己是一个开源小白,对开源基本不怎么了解,那这本书很值得一看。
作者总是描述那些最重要的内容,总是直面最尖锐的问题,而且更可贵的是,作者文笔简洁轻松,阅读起来并不费劲。
如果要说缺点的话,这本书由于面面俱到,所以只是很简练地描述问题,对一些问题,并没有展开解释或阐释。
所以有些内容并不容易看懂,完全的门外汉(我是说连IT都不懂),大概只能看懂50%。
一个不太了解开源的IT业内人士,大概可以读懂70%~80%。
二、点睛之笔
该书在最后一节“总结想法”中画龙点睛地提到:
开源打破了计算机行业的垂直垄断,有助于防止新的横向垄断出现。
作者Haff进一步解释道:“新的垂直垄断确实在发生。全球公有云供应商、Apple 公司、社交媒体巨头等都有强大的生态系统和网络效应来打造属于自己的围墙花园。开源至少提供了一种平衡和缓和的影响,保留了用户的选择并可以改善极端的锁定情况。”
这里的垂直垄断,指的是像Windows操作系统以及围绕该操作系统推出的整套开发技术栈以及协议标准这样的垄断。
横向垄断,是指像微软当年在Office套件、浏览器、邮件系统、杀毒软件等横跨各个领域的垄断,当然现在已经不存在了。
显然,开源软件打破了这种种垄断。
我们要感谢开源。有了开源,软件巨头们再也没法“卡脖子”了。
三、有趣、有新意的内容
除了常见的普及性内容外,这本书还介绍了一些不常见的内容,其中有一些值得反复思考。
1、Linux的出现是必然还是偶然?
Linux在90年代的出现是一个必然吗?
有人会说:“即便Linus不做出Linux,也会有一个叫Sunil的人,做出一个横扫世界的Sunix”。
但Haff认为未必,如果Linus在1991年没有去写Linux,那么,很有可能到现在也没有Linux。
如果没有Linux,可能现在仍然是微软主宰着世界上绝大多数的操作系统。
苏格兰哲学家和散文家Thomas Carlyle写过一本《论英雄、英雄崇拜和历史中的英雄》,他说:“世界的历史不过是伟人的传记。”
2、命名时要想清楚一点
书中提到一点:
你要启动一个项目,你把项目称为 Docker,然后你把产品叫Docker,你把公司叫Docker,你把产品的企业版也叫Docker,而所有这些东西都为不同的受众服务,这只会导致混乱。把所有的东西都命名为相同的名称,可能很有吸引力,但这种方式实际上会导致混乱。
3、MIT明确授予专利许可
很多律师认为,MIT许可证没有明确说专利的事,只能认为它暗示授予专利许可。
但Red Hat 公司的知识产权律师 Scott Peterson 认为:
……MIT明确授予“不受限制地处理该软件”(to deal in the Software without restriction)的许可,所以,它确实授予了专利许可。而且,除了直接阅读许可的文字以外,没有必要通过其他方式来得出这一结论。
也即,MIT虽然没有提到“专利”,但也是明确授予专利许可的。
4、捕鲸团队的“合作竞争”
虽然“合作竞争”(Coopetition)这个词在20世纪初就出现了,但只到Novell公司的Ray Noorda在20世纪90年代用这个词时,它才开始得到广泛使用。
当时,Novell公司正计划进军互联网门户业务,这需要和一些搜索引擎供应商以及其他公司建立合作伙伴关系,但这些公司也将与 Novell展开业务竞争。
Noorda说:
“有些人把商业完全视为竞争。他们认为做生意是在发动战争,除非别人输了,否则自己不会赢。另一些人则将商业完全视为合作团队和伙伴关系。但商业既是合作也是竞争。这就是“合作竞争”。
马歇尔大学的Robert Deal在《捕鲸法:争议解决、物权法和美国捕鲸者,1780-1880》一书中描述了捕鲸团队是怎么合作竞争的:
“远离法庭和执法部门,粗俗剽悍的美国捕鲸团队往往会在海上直接解决关于鲸鱼所有权的争端。由于只能靠自己解决争端,捕鲸者制定了规范和习俗来决定由多个捕鲸团队共同捕获的鲸鱼的所有权。”
5、不,“沟通”很糟糕
并不是沟通越多越好。
Haff举了一个例子:
21 世纪初期,Amazon公司的一次会议上,经理们建议员工应该更好地相互沟通(这是一种老生常谈式的抱怨,任何大公司几乎都一样)。令他们惊讶的是,创始人兼CEO Jeff Bezos 站起来宣布:“不,'沟通'很糟糕!”Bezos的思想是,控制团队规模,小型“双披萨团队”(不超过两个披萨就可以喂饱的团队)更能产生有效沟通。要最大限度减少不同团队之间的沟通,不同团队的编写的软件,如果有交互,只能是通过写在文档里的公共接口。(也即不能有“未公开接口”)
很多时候,我们不需要“让沟通变得更容易”,我们可能需要“使沟通变得不必要”。
要留心你的组织设计,团队要小,不同团队之间,除了文档化的接口,原则上是不需要沟通的。
只要坚守文档化的接口,理论上任何团队都可以对他们的事负责,对他们写的代码为所欲为,比如用新语言重写软件或更改算法,而不需要和其他团队沟通。
这就是微服务架构背后的理念之一。
记住:沟通是有成本的,尽量减少这个成本。
6、企业为什么要雇佣员工
诺贝尔经济学奖获得者科斯问过几个问题:
为什么人们会选择放弃一些按照自己喜好去工作的自由而成为全职员工?对公司来说,将专业任务外包给公司,或者在需要时才雇佣专业人士,岂不是更有效率吗?按照传统经济学理论,作为有效市场的一部分,每个人都应该以最快的速度提供商品和服务,为什么要雇一个员工呢?毕竟公司在对员工的技能和服务没有迫切需要的时候,也要给他支付薪水。
科斯的回答是,这是为了减少交易成本。
对员工而言,他们相信加入一个强大的、有英明领导的公司,比自己单干要赚得多。
对公司而言,指挥员工做事,比起和外包公司谈合同、验收、付款,要有效率得多。
但是,真正有创造能力的人,还是希望自由工作;而一个规模比较大的公司,总会遇到官僚问题,导致内部交易成本过高。
比较好的方式是,公司不要弄太大,也不要什么都自己做,领导不要控制一切,要下放决策权,打造分布式的小团队。《赋能:打造应对不确定性的敏捷团队》这本书说:现在的社会,组织考虑的第一重点不是高效,而是更有适应性。
毕竟,最终,不是最高效的活下来了,是最有适应性的活下来了。
随着技术演进,最终大约是,每个公司对外提供接口;公司内每个团队对外提供接口;每个团队都是小团队;每个公司都是小公司。
整个人类社会形成一个微服务的分布式架构。
文|卫剑钒