开源软件产品正确抉择方法

发表于2016-05-20 16:13:46

一个阿里出来的朋友发表的一篇怎么选择开源软件的文章


【概述】


当下国内几乎所有企业和政府机构都遍布开源软件产品的身影,尤其是基础软件产品涉及到开源操作系统、开源数据库、开源WEB服务器、开源中间件等。这一过程也踩踏过无数的相似坑。笔者也一样经历这样的过程,结合自身经验和技术圈朋友们的经历为大家指明如何正确选择一款开源软件产品。

 

一、企业自身需求决定一切


IT技术人员大多数都有创新和挑战的天性,而容易忘记技术的本质是服务于产品实现和产品运营。以选择开源操作系统为例,我们当年在阿里立项尝试去IOE,选的操作系统是Solaris,只看重其二个功能Snapshot数据备份和CPU100%能登陆上去,最终我们经历了很多磨难而应用成功,但无法在整个公司内部推广,原因如下:


1、Solaris社区人才匮乏,国内更难寻到Solaris人才;


2、社区资料有限,学习成本高,无法快速培养团队和技术专家;


3、Solaris产品更新和Bug修订的速度缓慢,且属于走向边缘化的操作系统产品;


4、看重的数据备份和预留资源的功能,在Linux操作系统中有其他办法解决和规避。

 

接着我们继续以阿里巴巴去IOE过程,为何选择MySQL数据库软件产品,而不是PostgreSQL数据库软件产品的抉择过程为例分析。我们内部需求是Oracle+小型机+存储设备,无法满足业务发展和业务创新,须革新IT技术架构满足企业发展。


1、MySQL数据库软件产品的优劣

  • MySQL数据库软件产品在欧美已大规模应用成功和普及;

  • MySQL数据库产品在国内的游戏行业、BBS论坛类应用中已普及;

  • MySQL数据库软件产品的社区活跃,产品更新和Bug修订快速;

  • MySQL数据库软件产品的资料丰富,生态链完善,易学上手快,产品易维护;

  • 国内已有一批MySQL数据库软件产品的DBA和基于MySQL数据库软件产品研发应用的众多研发工程师;

  • MySQL数据库软件产品是否继续开源不受制于某一家公司,而是APACHE基金会,创始人及团队也是拥有坚强的开源精神;

 

2、PostgreSQL数据库软件产品的优劣

  • PostgreSQL数据库的功能丰富,最接近Oracle数据库产品;

  • PostgreSQL数据库提供基于行和列的存储,同时可服务OLTP和OLAP业务场景;

  • PostgreSQL相比较欧美市场占有率低,日本占有率高,学术型技术产品;

  • PostgreSQL产品主要是学术人员贡献为主,社区学术氛围更重,产品企业应用活跃度不够;

  •  社区资料不够丰富,应用案例和场景有限,DBA人才缺乏,学习成本高,生态链未建立;

 

正是基于上述调研收集的信息,最后决定采用MySQL数据库产品尝试去IOE,最终完成阿里巴巴80%以上业务系统的去IOE化,开源软件产品的选择是由企业功能需求、技术团队实力、外部人才或外部服务、社区资料等共同决定。


补充信息,当时及阿里云成立之前,阿里巴巴技术团队选取的开源软件完全取决于是否能直接解决面临的问题,直接抛弃基于开源软件改造或借鉴重新研发的想法,而是直接用现成技术和软硬件组合,及架构创新的方式解决问题。IT技术团队核心点是实现产品、支撑业务发展,服务产品运营及市场开拓,做好这些之后再考虑技术创新反补业务创新。


 

二、开源软件产品遵守的开源协议


我们国家实行的法律体系属于大陆法系,知识产权法、计算机软件法律法规等都未明确对开源协议作出任何解释,故开源协议在国内是不承认的,也不受任何法律保护的。同时国内知识产权保护属于有法不依或违法成本极低等特征。此外,国内道德约束的力量在逐步重建之中,故推荐大家选择的开源软件产品优先是遵守GPL或BSD开源协议,及国内有众多贡献者和使用者。

 

  • GPL


GNU通用公共许可证,使用者必须接受软件的‘软件授权’,才能使用该软件,而在自由软件中,最常见的授权方式就是GPL- GNU General Public License 了。


因为使用者是免费取得了自由软件的源代码,那么如果使用者修改了它的源代码,基于公平互惠的原则,使用者也必须公开其修改的成果。而这就是 GPL 的精神 - 自由、分享、互惠。

 

  • BSD


BSD license(BSD许可证)是"Berkeley Software Distributionlicense 的首字母缩写,是自由软件(开源软件的一个子集)中使用使用最广泛的许可证之一。BSD软件就是遵照这个许可证来发布,该许可证也因此而得名。


BSD套件最初所有者是加州大学的董事会,这是由于BSD源自伯克利加州大学。BSD开始后,BSD许可证得以修正,使得以后许多BSD变种,都采用类似风格的许可证。


跟其他许可证相比,从GNU通用公共许可证到限制重重的版权所有,BSD许可证比较宽松,甚至跟公有领域更为接近。事实上,BSD许可证被认为是copycenter,介于copyright(版权)所有与copyleft(GPL的“反版权”)之间。"Take it down to the copycenter and make as many copies as you want"。


备注:关于GPL开源协议和BSD开源协议的说明参考百科。

 

三、开源软件产品的社区活跃度


任何开源软件产品的社区活跃度决定该产品的成熟度、生命力、未来前途等,也会决定是否能建立研发-应用-服务的生态链。建议从几个方面评估开源软件产品的社区活跃度,如下:

  • 开源软件产品的贡献者不是来之某一家公司,更不能是某几个人,主体人群应是无标签化和分布在众多公司;

  • 开源软件产品的版本合理周期性和持续性更新,版本计划清晰和可执行;

  • 可开源软件产品的贡献者拥有完整的分工:代码编写、产品设计、需求整理规划、功能性能测试、手册编辑、案例应用等,及完整成熟的沟通交流决策机制;

  • 拥有众多基于开源软件产品的研发工程师和维护者,例如MySQL数据库的DBA属于维护者;

 

技术朋友们,肯定会问对于新出现的开源软件产品,个人建议是重点要看其发起者、同已存在的软件产品相比有何独特优势,及解决了什么样的问题。对绝大多数企业而言,要非常谨慎选择处于初级阶段或处于非稳定版本阶段的开源软件,等待我们的技术坑是一堆一堆的,例如Go、InfluxDB、MongoDB等。

 

四、开源软件产品的成熟度


一款成熟的软件产品及版本意味着有众多使用者,经历众多应用业务场景的验证,经历较长时空的考验。开源软件产品要能像爱情婚姻度过蜜月期,及经历环境变迁、相貌身材变化、柴米油盐等考验后,依然能微笑地携手看朝阳晚霞,那才是真正的幸福美满。


对企业或技术人员而言,99%的公司IT团队不需要重复造轮子,而是需要踩的坑越少越好、摸索的周期越短越好,最好是能踏着前人或行业专家的足迹前行,才好快速累积经验和集中精力投入到企业的产品实现和经营服务。

 

四、总结

 

    维度

MySQL

PostgreSQL

MongoDB

开源产品定位

关系型,应用

关系型,学术

非关系型,应用

企业功能需求

系统解耦分布式和复杂单机

类Oracle产品用法

业务场景简单分布式

遵守开源协议

GPL v2

BSD/MIT

AGPL v3.0

是否存在闭源风险

存在

开源社区活跃度

极高

中等

一般

开源软件成熟度

中等

开源社区生态链

非常完善

小众人群

起步阶段

开源软件学习成本

中等

 

五、结束语


本文写于2016年5月16日南京市中山北路,南京、深圳、杭州是我最喜欢的三座城市,他们有一个共同的特点依山傍水,山峰是用于征服的,流水是用于宁静的,且南京拥有丰厚的历史文化底蕴。欢迎技术圈的朋友们留下笔墨,告知mysqlops想讲述的具体技术主题或真实案例剖析,让我们大家一起成长和引导MySQL数据库行业的风气风向,欢迎朋友们关注公众帐号:mysqlops2016。


评论(0)

请先登录后再评论,如果没有账号请先注册

发表评论