开源之我见

   现在很多产品,包括很多有名的商业产品中,都可以看到开源软件的影子。自己的工作也常离不开使用开源软件,包括直接使用成品亦或者集成源码到自己的产品中。但是一段时间下来,发现开源并不如想象中那么的花枝招展,要想将其握在手心成为摇钱树,是需要代价的。这其中的关键,我认为是人的能力。

  • 开源软件已经非常普及。

   说到软件开源,可能很多人的大脑中都会浮现出一些常见的开源软件。大到操作系统和平台,比如Ubuntu、Android、各种前端后端的框架;小到各种各样的小工具,那就更不胜枚举了。软件领域的各个行业领域,各个平台,无论上层还是底层,都会见到开源的影子。即使我们不直接集成和使用这些软件,我们也仍然可能与它们有着千丝万缕的瓜葛。比如你所访问的网页,其服务器很有可能就是基于Linux系统及一整套开源组件搭建的。现在,许多云计算平台都主要是开源产品在支撑。可以说,没有开源软件,就没有今天如此繁荣的IT产业。

  • 许多开源软件已经非常优秀。

   开源很多时候意味着免费。免费很多时候给人的第一印象就是品质不能保证。虽然开源软件也免费,但是其打破了人们对免费的常规认知。现在,整个软件世界里,存在许许多多非常优秀的开源产品,甚至许多商业产品都离不开开源软件的支持。比如,像Linux,就是一款非常优秀的操作系统,其在服务器和嵌入式领域的应用非常普遍。现在各种各样的手持设备都是基于Linux平台来开发,最著名的莫过于Google的Android操作系统,几乎占据了智能手机的大部分江山。

  • 开源到底是陷阱还是馅饼。

   有人认为它是馅饼。简直就是天上掉下来的馅饼。使用开源软件,可以避免商业软件可能存在的后门,可以节省使用商业软件而产生的不菲的授权费用,可以对代码进行修改,为我所用。因此,使用开源软件在安全性,经济性以及可扩展性等方面都有着先天优势。但是,也有人认为这是一个陷阱。首先,可能会缺失服务。如果接触过开源软件代码,大家可能都知道,开源软件都有许可协议,其中明确写有对软件不做任何保证等类似的声明。而且,如果你使用一套开源软件系统,可能没有人会愿意免费为你使用过程中产生的问题进行服务。如果你想对代码进行修改,拜托,假如你是个高手,当然不否定存在这种情况的可能性,倒还好说,但是我相信,对大部分开发人员来说,看懂原有的代码,并在其基础上进行有效的修改,并不是件简单的事。因此,开源并不完全等同于自由免费,这其中存在各种隐形投入。最终,这种投入有可能超过采用商业产品所需的费用,甚至在特定情况下还可能成为无底洞。

   其实站在最终用户的角度,使用开源软件也并非不可能。为了填补上述可能的陷阱,现在已经有不少公司专门进行开源软件服务。软件可以免费给你,但是服务要花钱买。不过这些花费相比商业软件的授权,真的可能是小巫见大巫。换个角度看,对最终用户而言,开源不开源,并没有什么特别的差别。用户看中的是优秀的软件、良好的服务、以及相对较低的费用。

   站在开发者的角度,开源可能面对的更直接一些,特别是当你去使用一款开源软件时。也许你没有能力、没有机会去直接修改代码,但是开源无疑提供了完整的开放的API给开发人员。对于大的企业,开源可能是进行快速开发、快速发布,缩短产品研发周期的唯一捷径。相应的,这些大的软件企业有充足的开发人员,包括优秀的Leader,甚至可以雇佣开源软件的作者来展开新产品的开发。这种投入,对于小公司和个人是不具有参考意义的。因此,对于小的企业而言,使用开源软件可能意味着更长时间的产品研发和更多的投入。

   这里举个例子。比如早年Google开发Chrome浏览器,它选择了开源引擎Webkit。如果你看过代码或者哪怕只是看过Webkit工程目录,也许你就会清楚,Webkit虽然好,但是要消化它,绝对不亚于重新写一个引擎。Google选择它是因为这是一个稳定的引擎,其有人力保障来投入其中研发,因此,在它的基础上修改可以在保证软件稳定度的前提下尽可能快的推出产品并持续优化。相应的,Google公布Chrome的源代码对大部分开发者而言也是没有什么意义的。因为你即使有能力也可能没精力将它的代码都看一遍。相反,Google可能因为宣布这是一个开源浏览器以及更加安全而吸引不少用户转向使用它的浏览器。

   再比如,Google发布的智能手机平台Android。Android底层是基于Linux的,并且其代码也是开源的,各个厂商可以将其移植到自己的硬件平台上,并做适应性的修改。另外,由于Android应用层的开发基本上基于Java,其又可以吸引许多现成的Java程序员为其开发应用。这样一来,厂商可以说自己的平台支持Android,也就是可以支持为Android开发的应用,而开发者也会发现有很多硬件平台支持Android,再加上有Google这样的大公司做支撑,可以保证平台的稳定性,大家也就愿意为其开发应用。随着平台的流行,Google则可以通过广告和服务营收,真可谓互利共赢。

   通过开源尝到好处的Google,不断的参与开源社区,不断的推出其开源产品,最近其将机器学习框架TensorFlow开源又是一个有力例证。

   但是馅饼总不是那么容易掉下来。对用户而言,现在大部分的开源软件都有一个共通的问题,就是界面不友好。尤其是对桌面用户。这也是Windows长期占据桌面市场的一个原因。并不是每个用户都会通过命令行来使用系统或者愿意以这种方式来使用。这也是Linux这些类Unix系统主要用于服务器端的一个原因。

   对开发者而言,情况也并不总是那么乐观。以嵌入式设备为例,使用Windows Mobile这些成熟的商业软件可更容易的(使用Windows Mobile,对开发人员的能力要求可能要低一些)、更快的完成产品开发,缩短开发周期,尽快推出产品,但是相应的要付费。如果使用Linux这些开源系统,虽然免去了支付授权费,但是系统需要投入更多的人力,并且需要考虑由此产生的关联效应,即更长的研发时间;同时对开发人员的能力要求也要到位。但是如果成功的推出了产品,则从长期发展的角度看还是比较有利的。

   其实这种差别就是矛盾的双方。有人专门为你开发更加易于使用更加方便的系统,理应而且必须获取利益,不然这个过程如何持续下去?

   说到这里,可以总结了:商业软件不是吸血鬼,开源软件也不是救世主!面对开源诱惑,我们需要理性分析。

猜你喜欢

转载自blog.csdn.net/wwwyue1985/article/details/112427321