从“非主流”到“潮流”,开源早已值得拥有



开源起源与发展

2019年,腾讯公司副总裁、腾讯云总裁邱跃鹏表示,开源是技术发展的大趋势,腾讯云是诸多开源项目的发起者,也是开源社区的重要贡献者和回馈者。之后,阿里巴巴开源委员会负责人、Caffe之父贾扬清致信所有开源开发者,并首次公开开源10年全景图。从“非主流”到“潮流”,开源在IT界早已家喻户晓,甚至有人发出“互联网世界的一切源自开源”的感慨。


这句话是否言过其实笔者不敢断论,但至少确定这句话覆盖的并不全面。从笔者看来,开源不仅促进了互联网的发展,更是我国信息科技发展的重要途径。有外国人曾抱怨说来自中国的程序员群体正在通过开源让世界学习中国话,放眼望去,GitHub 趋势排行榜前10名的项目中有 9 个中文项目。越来越多的中国企业或个人也已经投身到开源软件的大潮中去,企业如腾讯、阿里这样头部的互联网公司,个人如Tidb创始人黄东旭、TelTel公司的首席科学家章文嵩,均在这其中贡献颇多,并受到国际的关注和认可 。


开源是什么?简单从字面理解就是开放源代码。也即是说,只要你有能力就可以阅读某个开源软件的源代码,这可以帮助我们理解开源软件实现的逻辑,可以根据我们的需要对源代码进行修改,来满足业务的需要或者对某些功能进行增强,譬如安全功能的加固;甚至也可以参考源代码重建一个更优秀的软件产品。当然开源软件的使用会受到开源许可的约束,后面我们还会提及。


开源的起源与发展,据笔者了解主要得益于两方面力量的影响:一方面是商业驱动的力量。著名的贝尔实验室就曾为开源贡献了伟大的UNIX操作系统,贝尔实验室是1925年1月1日,由AT&T总裁华特·基佛德(Walter Gifford)收购西方电子公司的研究部门成立的。UNIX为IBM、HP等公司的系统研发提供了开源代码的强力支撑,衍生了商业发行版的UNIX,其中包括IBM 的AIX、HP公司的HPUX,另外还有一个值得提及的是被ORACLE收购的SALORIS;而且UNIX的发展直接影响了时下最流行的操作系统Linux的诞生。


UNIX的起源这里有一个趣闻,在1969年,当年这个边开车边读书开了100公里的学生,和贝尔实验的两位同事,一位叫丹尼斯?里奇,还有一位叫Rudd Canaday的家伙,开始秘密谋划一个新的操作系统。1969年的夏天,肯?汤姆逊的老婆要带着他们的小孩回娘家,所以,肯?汤姆逊有一个月的时间,重新体验单身汉的快乐,他在一个月内,给一台废弃的PDP7写了一个操作系统,这就是后来的Unix。第一个版本的Unix,只有4200行代码,其中的34个系统调用,到现在依然在使用。1983年,汤姆逊和里奇因为Unix被授予图灵奖。


商业驱动开源发展从来都是非常重要的。一方面是人才对开源代码的贡献,另一方面是资金的支持。当代很多商业公司对开源的贡献从未曾止步。最知名的包括国外的谷歌、微软这样的公司;国内除家喻户晓的互联网巨头BAT(百度、阿里、腾讯)外,国内越来越多从开源中收益的企业也在努力的反哺开源,推动开源软件的推广和贡献源代码。


另一方面是高校学术科研力量,因笔者多年从事数据库技术工作,更想在此提及的是加州伯克利大学贡献的最知名的关系数据库管理软件PostgreSQL。加州伯克利大学是世界著名公立研究型大学、在学术界享有盛誉。PostgreSQL始于 1977 年伯克利大学的 Ingres 项目,这个项目是 Michael Stonebraker 教授领导的。Michael Stonebraker 教授是数据库发展史上几个重量级人物之一,1992年提出对象关系数据库模型,发明了许多几乎应用在所有现代数据库系统中的概念。2014年,Michael Stonebraker 获得图灵奖。


PostgreSQL经历了三个重要的发展阶段:

1. 20世纪80年代,著名数据库科学家Michael Stonebraker为解决Ingres中的数据关系维护问题,启动了Post-Ingres项目,这就是Postgres的开端。

2. 1994年,两名伯克利大学的香港研究生Andrew Yu和Jolly Chen向Postgres中加入了现在的SQL语言的解释器,从而将Postgres改名为Postgres95。

3. 1996年,随着Postgres95的不断完善,正式更名为PostgreSQL,并沿用至今。


PostgreSQL是全球最强大的企业级开源数据库,既有SQL通用性,又有NOSQL扩展性,还具备多模开发便捷性,支持HATP混合业务场景,对芯片友好,版本迭代稳定,国际社区支撑强大。PostgreSQL于2017、2018年连续两年赢得了“全球年度数据库”冠军称号,荣获2019年O’Reilly终身成就奖,这是继Linux之后第二个获得该奖的开源产品。


以上通过两个最知名的开源软件Unix、PostgreSQL描述了开源的起源及发展中发挥主要作用的两股力量。商业、高校学术大力促进了开源的发展,开源也为商业技术服务的提供了强力的支撑,同时也为学术界带来科研实践的价值与荣誉。


开源使用与安全要点

开源是自由精神的传递,自由一直都是相对的。开源软件发展和使用会受开源许可的约束。开源许可的存在主要是考虑开源软件的可持续发展和商业互利性。开源许可从基于开源衍生的代码是否必须开源分为两个类别,一种是必须开源;另一种是自由选择是否开源(允许商业闭源)。这里笔者引用一张网络图片,可以更容易的理解开源最流行的六种许可协议。

1611113189605139.png

Linux是国内外应用最广泛的开源操作系统,几乎运行在我们所处世界的各个角落:服务器机房、智能手机、智能家电、金融股票市场、汽车……它遵循GPL许可协议,基于Linux衍生的系统代码都必须开源并遵守相同的许可协议,其中包括多家基于或参照Linux的商业发行版系统,譬如国际知名的RedHat、Suse,国内早期的红旗Linux等。


PostgreSQL作为数据库领域的开源软件遵循类BSD协议,由上边的图示可以看到,BSD协议自由度仅次于MIT许可。PostgreSQL国际社区中也有相关表述。

1611113217179602.png

其基本含义是指:PostgreSQL许可证是一种自由的开源许可,与BSD或MIT许可证类似。1994年之前的部分版权属于加利福尼亚董事会;1996年-2020年,部分版权属于PostgreSQL全球开发小组;BSD开源协议是一个给于使用者很大自由的协议。可以自由的使用,修改源代码,也可以将修改后的代码作为开源或者专有软件再发布,被誉为开源许可的活雷锋。


其实当下国人会比较敏感使用开源软件或基于开源研发产品,会不会出现被人“卡脖子”的状况。简单说就是开源代码会不会被人禁止使用或追究版权,在笔者看来,持有这种观点并无不可,但也无需过分担忧,而且开源产品繁多,还需要针对不同产品具体分析。以PostgreSQL为例,目前PostgreSQL国际社区每年会定期更新一个大版本,代码贡献者分散在世界各地,统计的软件项目已有500多个贡献者。此外,在PostgreSQL中,没有一个公司能够负责、支配或控制项目和软件开发,因此不存在依赖任何个人或实体的危险。PostgreSQL全球开发小组也一直致力于使PostgreSQL永远成为免费和开源的软件。从没有计划更改PostgreSQL许可证或以其他许可证来发布。


另一方面,开源软件是否容易产生漏洞或植入后门也是大家会关心的问题。不过这个问题在笔者看来,开源软件反而比非开源软件更加友善,因为它是透明的。


首先,正如上文提到了Linux作为开源最杰出的代表,基本遍布全球各个角落。PostgreSQL作为数据库管理系统也已得到广泛的应用,其中包括美国、俄罗斯等国的政务系统、金融业务等,下图列出了PostgreSQL全球财富1000的用户;国内也有越来越多金融机构包括工商银行、光大银行、中国邮政储蓄在使用PostgreSQL。目前权威机构DBEngine.com数据库全球排名,PostgreSQL排在第四,并且随着贡献者的不断增多,趋势仍在不断上涨中,就像股市的一头牛。从这个角度来讲,其安全性毋庸置疑。

1611113254899087.png

其次,开源发展与商业推动有着密切的关系,商业公司可以基于开源研发产品,根据开源代码的不同许可决定了公司的盈利模式。目前主流模式有两种,一种是基于开源必须开源的产品,公司主要通过提供技术服务产生收益,譬如基于Linux发行操作系统的RedHat公司;另外一种是基于开源的商业发行版产品,可以自主选择是否开源,通常能够售卖产品和提供技术服务产生双重收益,譬如基于PostgreSQL研发数据库的俄罗斯公司PostgrePro、中国企业瀚高软件。在使用基于开源的产品时,安全性则主要体现在对源代码的掌控上,这种掌控通常指是否能完全理解源代码并有能力修改、完善。譬如出了技术漏洞有没有能力解决,代码万一被植入后门,有没有能力检测和屏蔽。而在这里,开源更像是一个透明厨房,隐藏后门的难度反而更大,怎样利用并防止厨房收到攻击,靠的则是企业对代码的理解力和研发硬实力。


另外补充一点,安全的把控不单纯关乎开源或基于开源产品自身,还会受到网络环境、制度管理等多个方面影响,譬如我们的数据库系统部署在内网中,断绝与互联网的联通,即时有网络攻击、代码植入后门,也能一定程度上避免重要数据被窃取或破坏。

1611113282699051.png

PostgreSQL发展时间线及与版本分支


开源是现在,也是未来

开源精神至今一直为后人所继承和发扬,并不断涌现大量优秀的开源软件为我们所用,满足互联网、移动互联网、物联网、大数据技术的发展。其中最具代表的有:Linux/Andriod(操作系统)、Apache/Nginx/Tomcat(应用中间件)、OpenStack/KVM(虚拟化)、Docker/K8S(容器化)、Hadoop(大数据)、PostgreSQL/MySQL(关系数据库)、Redis(内存数据库)、ElasticSearch(在线搜索)、GitHub(代码管理、文档版本工具)等。


笔者相信,开源正是自由分享精神的一种体现,是全人类智慧的结晶和共同的财富。当下,开源已然蓬勃发展,成为推动科技进步的强动力。

社区公众号二维码
相关内容