近几年开源项目越发普及,很多商业软件都逐渐引入开源项目。由于我负责的产品线采用了不少开源项目(主要是C++、Java、Python),这几年 就经常会碰到开源项目选型的问题(从几个具有类似功能的开源软件项目中进行抉择)。今天我就大概聊一下自己的几点看法,供大伙儿参考。
★技术层面的因素
由于技术层面的考量和你所开发的软件密切相关,因此这方面的评判依据千差万别。我只能挑几个比较通用的说一下。
假如你开发的是跨平台的项目,那么你选择开源项目就得考虑它支持哪些平台(操作系统、数据库等)。如果你想支持的平台它不能支持,那就赶紧另找一个。
有时候编译器的支持也是考虑的指标之一。比如我在“C++的可移植性和跨平台开发”里面提到的老式编译器问题。再比如我曾经实施一个Java项目,用户的环境是JDK1.4。那么有些用了Java 1.5新语法的开源库就不能使用。
假如你开发的软件是性能敏感的,那选型的时候就要测试一下几个候选项目的性能指标。
现在安全问题越来越严重。如果你比较在意安全性的话,还得顺便调查一下候选项目是否有安全问题(比如缓冲区溢出的bug、比如跨站脚本注入等)。
★普及程度(用户的人气)
所谓的普及程度,就是看开源项目的用户占有率。当然大伙儿不是搞市场调查的,花钱请市场调查公司也不现实。简单的办法就是用搜索引擎大致搜一下,就能看出几个候选项目使用的广泛度了。
还有另外一个判断普及程度的方式,就是看某个开源项目是否被知名的软件或者公司采用。比如Firefox(算是知名软件)采用Sqlite来存储页面缓存,这至少可以从侧面反映出Sqlite项目的优秀程度。
对于若干个候选项目,显然要优先考虑普及度高的那个。因为某个项目普及度高,至少说明(但不绝对)它比较成熟、稳定、安全。而且用的人多了之后,相应的文档也会多一些,碰到问题也容易找到人咨询。
★活跃程度(开发的人气)
这里说的”活跃”,是指开发层面。一般来说,一个项目越活越,则新功能的推出越快,对提交bug的响应也越快。有些项目,由于开发人员不再继续开发(可能开发人员厌倦了、可能开发人员太忙了),从而导致活跃度很低。
不过也有例外。有些项目由于已经非常完善了,因此反而活跃程度很低。我印象当中bzip2最近几年就很少有更新。
★其它的风险
最后来说说一些其它的风险。一般来说,只有当前几个因素都差不多的时候,才会来考虑其它风险。
有些项目过于依赖个人英雄主义,靠1-2个大牛完成整个项目。一旦大牛出现意外,导致整个项目受到严重影响。典型的例子就是ReiserFS文件系统的创始人Hans Reiser。这位老兄由于谋杀妻子的罪名成立,被判入狱15年(对IT八卦有兴趣的同学可以看这里)。导致ReiserFS项目受到严重影响。
还有些开源项目被商业公司收购后,由于种种原因(商业、管理、政治等)导致该开源项目受到不利影响。比如上星期听说Michael Widenius(MySQL共同创始人)和Marten Mickos(MySQL前CEO)从Sun离职。再加上去年10月走掉了的David Axmark(MySQL共同创始人)。估计对MySQL的影响不小。
上述提到的几个考量指标,越前面的,权重越高。你在选型时需要综合考虑这几个因素。
文章知识点与官方知识档案匹配,可进一步学习相关知识Java技能树首页概览93012 人正在系统学习中
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!