这群程序员为何坚持30年免费写代码

哪家医院治白癜风最好 https://wapyyk.39.net/bj/zhuanke/89ac7.html

图片来源

视觉中国

显微股市,作者|小北,编辑

蔡玉

01年,“鼓励企业开放源代码”、“完善开源知识产权和法律体系”被写入了国家“十四五”规划。

开源,这一刻被真正意义上被提到了“国家战略”的高度,成为未来科技发展不可忽略的一环。

所谓开源,是指在开发软件后,将它的源代码公开分享的一种行为,任何人都可以查看、修改、分发开源代码。

它是一种“集市文化”,任何处于这个“集市”中的人都可以对代码提出自己的见解,共同进入到软件开发的过程中。在中国互联网发展的早期阶段,开源快速补齐了中国在技术上和国际的差距,促进了互联网的蓬勃发展。

从开源的历史里也不难发现,那些获得认可、掌握最流行的开源项目的人,后来大多成了新标准的制定者,能在未来技术标准、系统框架的入口,品牌效应上具有优势。

如今,各个顶级互联网企业都在积极拥抱开源。

阿里有超过万人在为开源添砖加瓦,开源项目超过个,在GitHub的企业贡献总榜中排行第1名;腾讯的首个AI开源项目Angel则在年1月底从LFAI基金会顺利毕业,那是Linux基金会旗下面向AI领域的顶级基金会。此次顺利毕业意味着它得到了全球技术专家的认可,成为世界最顶级的AI开源项目之一。

蚂蚁在云原生、数据库、前端和移动端等领域开源了个项目,成长起来0个国际范围内顶级社区明星项目。

百家争鸣,共同繁荣,中国已逐渐生长出越来越亮眼的开源项目。

近年来,中国开发者已经成为全球开源体系中的重要力量。公开信息统计显示,中国的代码在全球开源社区的比重已占40%左右,目前全球多万开发者中,至少有多万来自中国。

但我们也好奇,相比国外,中国的开源历史也只有短短三十年时间,这三十年,到底是哪些人在默默推动开源环境的变化?

而从“一无所有”到“繁花似锦”,中国又是如何逐渐走出自己技术自主的道路的?

本期显微故事找到了那些在中国开源进程中默默贡献的程序员们,希望从他们身上,看到中国开源的跌宕三十年。

以下是关于他们的真实故事:

为了打造中国自己的数据库,我赌上了最宝贵的十年

让我们把时间拨回到1世纪的前十年。

年,中国互联网迎来蓬勃发展,团购网站大行其道,网络游戏方兴未艾,中国的网民数首次突破4亿大关。

也就是在那一年,国务院新闻办公室首次发表了《中国互联网状况》白皮书,互联网从那时起越来越多地进入大众的视野。

从这一年往前看,开源及开源所带来的开放、共建的“集市文化”,很大程度上帮助了中国互联网的建立;往后看,数量越来越多的网民,十三亿中国人所带来的有别于西方互联网的各类需求,都在暗中推动着技术自主的诉求的产生。

快捷地拿来别人的代码直接使用,和耗费心力、创造属于自己的代码,这两种倾向的暗流涌动,在年这看似平静的水面下,已初现端倪。

最先让人感知到的是“数据库”自建的必要性。

在计算机领域,数据库是最基础的设施之一,任何软件的运行、用户的访问操作,都会涉及到数据库的信息存储和操作功能。

它就像地基,为计算机上的软件使用提供最基本的底层架构。但当时,顶尖的数据库都来自美国,其中又以甲骨文的Oracle数据库的使用最为广泛。

在那一年,线上购物平台淘宝的同时访问量已达到百万量级,庞大的数据量就需要购买Oracle庞大的数据库,而这笔支出是惊人的。

时任阿里首席技术官的王坚算了一笔账,把1万亿元GMV折算成数据量,再折算成需要的IBM小型机数量、Oracle数据库量、EMC存储数量,再换算成具体价格相加,得到他们每年需要给IOE的采购费00亿元。

这笔钱甚至超过他们每年所赚的利润。

从那个时刻开始,数据库的自建被提上了议程。阳振坤授命开启了自建数据库OceanBase项目的道路。

阳振坤和OceanBase早期团队在一起

当时,业内领先的五大数据库里,有两个数据库是开源的。较为简便的方法是直接把开源数据库的代码拿来修改和使用。但作为OceanBase的创始人,阳振坤拒绝这样做。

加入阿里前,阳振坤从事分布式系统研发,加入阿里后,摆在他面前的有两条路:一是加入正在快速发展的淘宝业务团队,主管技术,这是一条已经能看到很大的发展机会、相对清晰的道路;但阳振坤选择了另外一条道路:从头组建团队做一个技术平台,把OceanBase数据库做出来。

一方面,当时主流的数据库都是集中式分布数据库,根本无法适应大规模、同时性的数据访问,但当时淘宝的同时使用人数已达数百万,继续用集中式分布数据库,承载困难,且造价很高(集中式分布的数据处理和存储通常设在高端服务器和高端存储设备上,成本很高);另一方面,阳振坤也想做出中国自己的数据库。

他提出了分布式数据库的理念:在数据库内把数据切小,放到多台计算机上。只要大多数计算机运转正常,数据就能够得到保障。

同时,因为硬件采用的PC机,成本也会降低。另一方面,他把数据库的两大功能:记账和数据分析,组合在了一起,以往需要用到两个不同的数据库系统来满足的功能,在阳振坤的构建里成为了一个一站式解决方案。

这个构想当然很好,但要真正建立,却需要至少好几年的时间,业务不等人。

阳振坤只能在这个体系构想之下,每次逐步迭代一点点的功能,小步快跑地把整个体系构建起来。

他一个一个地跑业务部门,终于找到收藏夹有一个数据库的需求。

用户在淘宝进入收藏夹后,都会调取数据库。收藏夹是用户常用的功能,基于淘宝当时的使用人数,收藏夹所涉及到的数据十分庞大,用Oracle非常昂贵,因此成为业务部门的一个烫手山芋,也成了阳振坤能证明OceanBase的开始。

阳振坤接下了这个需求,用个月做了模型,6个月投入使用。

从这时开始,阳振坤的OceanBase逐渐证明着自己。从一个基础的收藏夹需求,到年双十一Oracle崩溃,OceanBase临危受命承担支付宝10%的交易流水,再到承担支付宝%的交易。阳振坤用十年的时间,终于搭建起了中国人自己研发的数据库。

这个数据的地基,才算真的被夯实了起来。

“主流的五大数据库里,最晚出现的是MySQL,年,此后这么多年,数据库领域一直没有大的更新。因为数据库做起来本身非常复杂、耗时很久,需要一些很优秀的人,一直持续不断地投入,十年才能见成效。”

01年,阳振坤来到蚂蚁集团,在支付宝海量数据的应用场景的锤炼环境下,正式开始了OceanBase分布式数据库研发和替换Oracle的长征之路。

但做出来并不是全部,数据库的一切都要拿到数据去验证,而只有越来越多的业务场景验证,才能让大家了解和接受这个新生的数据库。

研发十年,要被市场接受,至少也需要十年。

01年,OceanBase开源,释放出了它的内核。对OceanBase来说,开源带来的越来越多的使用者、越来越多的业务场景能帮助它迭代得更稳健,也能让它更为大众接受。

对阳振坤而言,他还有一点自己的“私心”:希望中国的开源能更加自主。

“开源是大家有来有往才能构建一个社区,如果我们只是拿别人的东西来用,形成惯性,可能就不会想自己去研发东西了,这就会导致我们没有自己的技术,成了我们‘被别人开源’。

现在我们在软件领域用的很多核心的东西,如数据库、操作系统,都来自美国,底层基础设施部分我们研究得还比较少,开源也大多在上层的应用系统上。这是不平衡的。我希望我们的开源可以逐步往产业链上游走,走一条更难、但价值更大、可持续的路。”

在开源的集市里,完善一个新领域的底层设计

阳振坤搭建起了原生分布式的数据库,为数据库这类基础软件能承载中国十亿网民吃了一颗定心丸。

但互联网的繁荣,需要的不仅是地基,还有合适的土壤,以及土壤上能长出的姹紫嫣红、争妍斗艳的花园。

一个合适的土壤,这正是KataContainers的创始人、蚂蚁集团资深技术专家王旭想要做的事。

王旭接触开源很早,他学生时代正值Linux传入中国,自由软件运动也为这些学生所了解,开源领域领袖级的人物RichardStallman针对以UNIX进行商业发布而不再提供源代码的“闭源”,提出自由软件的概念,后来逐渐演化出“开源”的概念。

RichardStallman(RMS)创立了自由软件基金会FSF,提倡软件是人类共同的精神财富,和牛顿定律一样,不应该被公司圈起来。

如今我们担心“传染性”的GPL,正是RMS精心设计的保护源代码万世开放的法律基础,正是在这种保护之下,开源社区逐渐发展壮大。

可以说,开源从最初兴起时,就充满了理想主义色彩。而对王旭来说,他的第一印象就是“好玩”,一台裸机,网络还没连上,他就能玩上好几天,反复尝试各种代码,在代码的广阔天地里遨游。

随着越来越多地接触开源,王旭发现,开源本身自由、开放、共建的特质,能让软件迭代得更好。

在开源著作《大教堂和集市》里,作者EricRaymond指出:世界上的建筑可以分为两种,一种是集市,天天开放在那里,从无到有,从小到大;还有一种是大教堂,几代人呕心沥血,几十年才能建成,投入使用。

毫无疑问,开源就是一种“集市”,当更多的用户参与其中,不断review后,开源软件反而能因有了更多的用户反馈,而获得更好的迭代。

王旭喜欢开源所代表的这种“集市文化”,他写过玩Linux的电子书,翻译了很多文章,并在那时候就在心里埋下一颗种子,想做一个自己的开源软件。

这个机会在年出现了。

在年,Docker(容器技术)已经逐渐被人们所认识。从前计算机上运行应用,不同机器环境的差异性总是一个非常棘手的问题,会发现程序会出现一些或大或小的行为差异。

对于大规模系统的运维来说,保持环境的一致性、确保应用行为的可预测性,就成为了一个非常复杂而有技术含量的问题,自然也是个有价值的课题。

但Docker一口气从源头上解决了这一问题。它用了一个容器,把代码、运行环境、系统工具、系统库、设置包了进去,像一个罐子一样,拿着这个罐子,程序在任何操作系统都能畅通地运行。

当时Docker喊出了一句口号:“Buildonce,RunAnyWhere。”完全无视开发、测试、生产环境不一致的干扰。

程序写完之后打包成镜像,就可以随处部署和运行。这对当时总要考虑运行环境、总要修bug的程序员来说,实在是天大的诱惑。

毫无疑问,Docker技术在当时的代码圈和程序圈非常轰动,而王旭瞄准了这个机会。

同样是年代,随着互联网的发展,大量的程序都在往云上走。当大家都在尝试在云上部署应用,为云开发代码时,一个无视运行环境影响,直接能让软件运行的容器化环境,无疑能让软件开发如虎添翼。

如果容器化与云结合起来,那么后来的应用开发者和使用者,就不用再思考从集群硬件管理到维护操作系统环境这一系列的烦心事,他们只需要确定需要什么服务,如何定义应用,就可以了。

所有应用底层抽象的事情被全部剥离了出来,变成了花园底层适合所有植被生长的土壤,后来者不用再考虑土壤问题,只需要考虑想要什么花、什么树,就能直接种下去,这就是所谓“云原生”的原始动机。

虽然这在未来必然是一个趋势,但容器化和云要完美结合,天然会产生一个矛盾:容器这个技术的安全隔离性不够,和云的结合需要大量的额外保障,来破坏这之中的简洁之美。

传统的操作系统容器技术的隔离指的是管理上的隔离,并不是指它运行起来就互相不干扰、没有安全风险,相反,因为同一个操作系统上的容器之间共享了很多状态,安全风险是很难消除的。

而云上又特别讲究用户之间的隔离性,它会假设每个人都是陌生人,不同的用户之间要隔离住,要互相不能侵犯,同时互相之间的干扰也要尽可能小。

它既是趋势,又因隔离性而面临困难,王旭他们因此想到,可以做一个软件增强容器的安全隔离性,做一个「安全容器」。

但实际上,要增强操作系统容器的安全性是比较困难的,学界也有一些研究证明容器和安全之间有不易解决的死结存在。

当然正如DavidWheeler所说,“在计算机科学中,所有问题都可以通过增加一个间接层来解决”,容器安全性也不例外。

但DavidWheeler也说,“这解决不了间接层过多的问题”,多增加一个间接层会带来复杂,不仅影响美感,也带来滋生Bug的土壤。

后来,王旭他们想到了主流云主机里都会使用、早已被证明安全的虚拟机技术,于是反向思考能否将虚拟机技术剪裁到容器这种轻量快速结构,并基于这个思路推出了runV。

王旭和KataContainers团队

这和英特尔的clearcontainers是同一个思路,二者用完全不同的代码实现了同一种方式解决容器上云的安全问题,两个项目的发布时间同是年5月。

年9月,王旭他们团队和Intel开源技术中心共同决定,将这两个容器合并,并放入OSF基金会进行管理。

年1月,KataContainers项目正式发布,并成为OSF基金会01年以来的第一个新顶级项目,王旭作为联合创立者之一,成为项目Kata架构委员会的创始成员。Kata容器和半年后发布的来自谷歌的gVisor并称为目前两大开源安全容器技术。

开源,对王旭来说,是一件愉快的事。这代表着他在开源这个集市里,不仅是基于别人的代码进行迭代,也做出了自己的原创性贡献。并且,因为安全容器是一个新的方向,所以更需要被人


转载请注明:http://www.aierlanlan.com/tzrz/3950.html