昨天,我发了个微博。http://weibo.com/1401880315/BfdhldiEa
对开源软件来个可能会引发争议的观点:对于绝大多数的软件产品来说,1)闭源的软件产品的技术含量要比开源的要大得多。2)大多数的开源软件都在抄闭源的商用软件。
我来回答我制造的话题。(知乎上的:http://www.zhihu.com/question/24616693/answer/28430044)
首先,我先表达一下开源软件的伟大,并向开源的人们致于我最真诚的敬意。但,即使这样,我们也要很客观的承认大多数开源软件是存在大量问题的。就像我这个人主观上并不喜欢微软和 IBM,但是我必需要承认,没有微软和 IBM,计算机这个行业不会有今天这样的爆炸。(插曲:我 94 年上大学选的专业是计算机科学,当时很多人都觉得计算机专业是一个 ZB 的专业,因为几乎没有哪个企业在用电脑,但我幸运的是 95 年的时候微软出了 Win95,Sun 出了 Java,然后互联网极度膨胀,才导致我选的专业最终变得很火)
至于我说的这两句话,我知道是有争议的,尤其是我用了“抄”,在此请原谅我用词不当,像从事开源的朋友道歉。这个“抄”其实是“模仿”的意思。
另外,要是没有开源,我们中国人的软件公司能做出云平台吗?能做出手机吗?能大数据吗?真心感谢开源!
简单地说一下开源的历史
简单的回顾一下历史,而开源源自 Unix 最初的发展史,然后,就被商业化了,于是N多的 Unix 变种就出来了,那些 Unix 老牌黑客们一下就被成了像罗宾汉一样的成了丛林草莽,以至于 Microsoft 用次等的技术占领了市场,而 RMS 也开始了他的 GNU 项目,但是 GNU 并没有获得那些 Unix 老牌黑客的青睐,因为他们觉得 RMS 就像当年马克思满世界鼓吹共产主义一样鼓吹他人的 GNU,最终 Linus 出来把这些 Unix 老牌黑客召集了起来,让 Unix 的开源精神重生。这段历史起源于 Ken/Dennis,再次向他们致敬!详细的历史大家可以看看我 7 年前写的:Unix 传奇(CSDN 和 CoolShell 都可以搜到)
我个人以为开源软件自 Unix 以来,最杀手级的组合是 LAMP,今天,Apache 基金会,Linux 基金会……让开源的力量越来越大,很多商业公司都参与开源,比如 IBM、Yahoo、SUN、Intel、Google……。
但是,我们可以看出,商业公司支持开源有一个很主要的原因是为了阻击竞争对手,理由很简单——用众包这种不花钱不花人的模式来牵制竞争对手实在是一个“低投入,大收益”的事。比如 IBM 支持 Linux 和 Java,目的主要是阻击微软。Google 的 Android 和 Chrome 目的也是苹果和微软。而对于这些商公司的很多核心技术是不会开放的,包括 Google,连 Google Reader 都宁可自废都不愿意捐给开源社区维护,更别说 Google 的那三篇论文的东西了,以及 Google 的搜索引擎的技术。
关于我观点中的逻辑
我观点中的逻辑其实很简单:
关于各种软件的对比
很多人对我的这个观点例了一些例子,但这些例子面太窄了,他们企图以点代面。我在这里帮大家补充一些吧,这样会更客观一些(眼界不妨放大一些):
注意:千万不要用“用户量”来定义“技术含量”,如果你觉得:“有技术含量”===“有绝对的用户量”,那么,你就会得出“QQ 空间甚至 hao123 可能是这世上最有技术含量的软件或网站”这样荒谬的结论。
我还可以一直把例子举下去,因为还有很多地方的软件很少人见过的软件,比如,NASA 的、CERN 的、DreamWorks,等等。
希望你的视野比我更宽一点,别只看自己编程用的那些东西,多看看这个世界高精尖的地方。
其它
我有这样的观点主要是因为我的成长史主要是在商业公司,我能看得到这些商业公司中有很多比开源软件很 NB 的东西。我为什么喜欢进这些顶尖的商业公司,因为只有进到这些公司我才能看有权限看到这些令人惊叹的软件是怎么做出来的。
这也是我没有花精力贡献开源的原因。这和我不写书的原因是一样的。我不写书的原因是因为我看过 Effective C++,TCP/IP 详解,Unix 编程艺术,等等这类经典的书,我觉得我根本就没有资格写书,如果我有他们的两三成的功力,我都会考虑出书,但是我真的不行。(另一方面再看看书店里那些 95% 以上的垃圾的书,真是令人恶心)
同理,我没有做开源的原因也是一样,因为我看过很多商业公司里的那些令人惊叹的东西,我觉得我还没有资格去干个开源软件。我更愿意把我的时间和精力花在向这些商业公司学习之上。(看看开源社区里的那些开源项目,90% 的开源项目其实跟书店里的烂书没什么差别)
人生苦短,而我觉得我自己没有那个聪明的 DNA,而这世界上的垃圾已经有很多了,我就不必再为垃圾添砖加瓦了。我还是把精力放在多看和多学上吧。因为我连一个C++ STL 或 JDK 中的一个容器类都没有信心能写好。
当然,我并不是说干开源的人不行。只不过,我没有信心贡献罢了。说得好听点,我标准比较高,说得难听点,我能力差。你对我的这两种理解都对。我的技术的确水,我在我的博客上的各人简介也说了我不是牛人。
谢谢大家。