按照我们所熟知的演进规律,历史滚滚向前,旧的基础设施会被新的所替换,但在技术世界,这一规律也有失效的时候——三十几年前诞生的软件作品,可能依然是今日数字世界的主要基石之一。你可以将其归结为开源的神奇魔力,也可以将其认定为市场与时代共同造就的复合体,但不可否认的是,亲历并造就这一切的天才工程师们,已经在软件研发历史上,留下了传奇的一笔,他们的经历独一无二,分外惹人好奇。
Michael “Monty” Widenius (业界通常称呼他“Monty”)和他的 MySQL,就是上述传奇的重要组成部分。
Monty 于 1962 年 3 月出生在芬兰赫尔辛基。1995 年,他和 David Axmark 一起编写了 MySQL 数据库的第一个版本,并用大女儿的名字“My”来命名了这款数据库。MySQL 项目从一开始就很好地考虑到了商务价值,虽然 MySQL 数据库是免费开源的,但为了实现商业化,Monty 与 David Axmark 和 Allan Larsson 很快成立了 MySQL AB 公司,凭借着高效、稳定、可靠的性能和明确的产品定位,加之借着互联网兴起的“东风”,MySQL 一跃成为 IT 世界里的“明星”。
后来的人们将 MySQL 和 Linux、Apache、PHP 一起并称为 “LAMP” 开源软件四大天王,尊称 Monty 为 “MySQL 之父”。即便是在今天,根据 StackOverflow 的调查,也有 46.85% 的人仍在使用 MySQL 数据库。
随着 MySQL 受欢迎程度越来越高,不少公司对 MySQL 生出了觊觎之心。
为了让 MySQL 有更好的发展,2008 年 1 月,Monty 和其他几位创始人决定将 MySQL AB 出售给 Sun Microsystems。在此之前,Monty 是 MySQL AB 的首席技术官,并且一直是 MySQL 持续发展背后的主要力量之一。
一年后,甲骨文收购了 Sun,把 MySQL 也收归麾下,随后甲骨文大幅抬高了 MySQL 的商业版价格,全球使用 MySQL 免费版本的开发者们都对 MySQL 的未来忧心忡忡。
Monty 并不看好 MySQL 被收购后的前途,他还曾请求 MySQL 的用户们游说欧盟运行委员会,阻止甲骨文收购 Sun,号称“拯救 MySQL”请愿行动。
但行动最终以失败告终。
2009 年 2 月 5 日,Monty 宣布离开 Sun 公司,在 MySQL 代码库的一个分支上开发出了一款数据库 MariaDB,以他最小的女儿的名字命名。同时,Monty 创办了 Monty Program AB 公司。此外,他还成立了 MariaDB 基金会,致力于推广、维护和发展 MariaDB 代码库、社群和生态系统,不为营利。而 MariaDB 也没有让 Monty 失望 —— 在颇具公信力的 db-engines “最流行数据库”排行榜上,MariaDB 名列第 12 位。
从 MySQL 到 MariaDB,27 年来,Monty 一直活跃在数据库舞台上。不久前,Monty 来访中国,InfoQ 有幸采访到了这位“数据库大神”,与他聊到 MySQL 、MariaDB 的诞生故事,对开源、闭源的理解,Oracle 收购 MySQL 的爱恨情仇,以及他自己的“编程人生” 。
Monty 告诉 InfoQ,是热爱,让他在上个世纪创造出了 MySQL 这款数据库领域的“活化石”,又在本世纪继续缔造全球知名的数据库产品;也是因为热爱,让他在 40 年的编程生涯里始终保持热情:他从学生时代开始坚持编程,一周工作 60 个小时,且“永远不会停止写代码”。
从这些话语里,我们试图勾勒出一个更加真实、纯粹的技术信仰者和实践者的形象。
以下为 InfoQ 与“MySQL 之父”Monty 的访谈实录,经编辑。
“热爱”,是贯穿于 Monty 过往 40 年编程人生的关键词。
60 岁的 Monty 现在仍在写代码,每周保持 60 个小时的高工作强度。他说,等到 80 岁时,才会考虑将工作缩短到 35 小时。编程这事儿,他还要干一辈子。
Monty:我从 18 岁的时候就开始编写 MySQL 的最早一批代码了,这部分代码主要是 MySQL 内存控制方面的,所以最早的开发工作可以追溯到 1982 年左右。
后来的开发工作都是以之前的成果为基础。在此期间,我也开发过不少硬件驱动程序,设计了一款不错的处理器,还做过很多游戏。
Monty:我想,是热爱。我喜欢做开发,我特别喜欢解决问题的感觉,特别是在开发 MySQL 和 MariaDB 的过程中。
而且,我参与了开源,帮助很多人走向成功。我觉得这一切都能让人始终保持热情。
Monty:我确实是用了快二十年才开发出 MySQL,但当时我没有想到未来这个软件会发展成什么样子。我将我的软件卖给了北欧最大的一家电脑公司,但后来,我的软件成了整个平台上最受欢迎的产品。
你提到的这种情况也的确存在,很多公司耗时耗力,最终却一无所获。MySQL 的成功是与时代背景分不开的。当时互联网已经得到广泛认可,每个人都需要这样的数据库,用它创建互联网所需要的数据。当时那些技术巨头还不看好互联网,所以这是个有待开发的蓝海市场。
其实只要意识到需求的存在,其他的就都好办了,所以我从 94 年开始正式编写 MySQL。最终成果的发布大概是在 95 年末,也就是说,我们用了短短两年就开发出了 MySQL 的第一个版本,成为当时的新兴支撑性产品。
Monty:我觉得差不多,我在编程方面确实有点小天赋。
Monty:天才不敢当。我认为自己只是在某些领域比较擅长,但可不是在所有方面都堪称天才。只能说确实有点天赋。
Monty:嗯,我在企业家、开源倡导者、程序员和架构师几个角色上表现得都还可以。
Monty:那是肯定的。毕竟在编程行业,一个优秀的程序员要胜过十个普通的程序员。这种优秀,源自天赋、努力工作,更源自想要了解一切的学习精神。
所以在前二十年里,我每天基本上就是学习计算机、学习硬件、学习如何高效编程,学习怎么让计算机发挥出一切性能。有了这样的底子,我才能真正开始做自己的事。
Monty:我觉得大多数开发人员就适合当开发者。我知道,一直都有些开发者屈服于现实,转而去做管理岗。
但根据我的观察,他们大多数人的编程才能其实比管理才能要强得多。很多人就是为了钱,管理岗的收入应该是比开发者要高一些。
但我觉得他们的天赋主要还是体现在开发上,最好能坚持下去,依靠自己的才能走向成功。
Monty:我认为不应该这样。因为好程序员,特别是优秀的程序员其实更难找。虽然管理岗的薪水可能稍高一点,但却很容易被取代。所以只要大家有天赋,最好能坚持在技术的道路上走下去。
至于 MySQL 这边,其实我从来不想当 CEO。我想做的是 CTO,负责技术方面的工作,毕竟我的天赋就在技术上。我觉得自己没有那份成为优秀全职管理者的天分。
我把一生都投入到写代码上,我喜欢这活儿,也正是编程让我成为了独一无二的人。
Monty:我觉得很多企业在职业设计上都有这种错误。所以在 MySQL 和 MariaDB,我觉得与其靠让大家做管理来提升薪水,不如让他们承担起更多责任。有时候,职位的重要性比单纯的高薪水更有吸引力。这可以算是另一种思路吧。
大家当然应该为自己的编程事业规划一条职业发展道路,但没必要把转管理岗当成唯一的方向。企业不需要那么多经理,而且在开始裁员的时候,管理岗都是最先倒霉的。毕竟经理人很容易替代,但优秀的程序员不可替代。他们掌握着企业最需要的代码知识,所以只要代码在,那岗位就在。
Monty:确实,但还是那句话,优秀的程序员比优秀的经理要难找得多。而且想做管理也得懂开发,不然根本就没法跟开发人员正常交流。而且开发者也是管理者,只不过管的不是人,是一大堆计算机。
经理所需要的技能一般有个半年、一年就能掌握。但想当个程序员,特别是优秀的程序员,那至少需要 16 年。
Monty:我的办法是信任客户。我的想法一直很坚定,那就是跟客户合作、解决问题,了解他们未来可能遇上的新问题,再共同将其克服。
所以只要有了良好而且足够广泛的用户群体,比如 MySQL 和 MariaDB 建立起的客户基础,那他们就能告诉我,未来会走向哪里。
我在等待未来的到来,同时也成为造就未来的一部分。所以,认真倾听客户意见,与他们合作,自然就能了解最新的技术。跟客户距离越近,我们就越了解功能需求,并据此安排自己的工作。
对于开发者,我们要做的是为他们提供正确的技术、让他们满意。总之,只要明确了需要解决的问题,技术选型自然就会容易得多。
Monty:我经常参与技术会议,在那里跟与会者们交流。这也算是一种探讨吧。
另外,在接触世界各国的客户,比如中国的客户时,也可以跟内部员工讨论关于 MySQL 和 MariaDB 的问题。他们代表的就不是客户,而是社区成员。所以我会认真倾听。
Monty:我主要是通过技术会议跟大家接触的。虽然他们身在不同企业,但我们的交流跟立场无关,整个氛围都非常友好。
随着时间推移,我们也在雇用更多 MySQL 专家和开发者。即使是在团队刚刚被收购后,我也一直跟他们保持着密切联系。我一直把他们当成好朋友。
Monty:我很赞赏他们能为开源做出贡献,参与到开源中来。这是件好事。开源合作的规模越大,每个人获益就越多。这也是开源精神的核心所在。
你解决自己的问题,然后把方案交给社区;其他人解决自己的问题,也把方案交给社区,每个人都能从中获益。
Monty:首先应该积极参与到社区当中,帮助他人、改进实现。如果你需要某项功能,就想办法着手开发,并随时向 MariaDB 基金会寻求帮助。我们可以帮助大家,告诉你具体该怎么做。你审查过自己的代码吗?你也可以参与审查其他贡献者的代码,这就是实实在在的开源贡献。
而要想成为一名出色的程序员,拥有一份能做一辈子的开发工作,那最好能让自己积累起名望,让自己在开源世界拥有一席之地。有了这些积累,就不是你找工作,而是工作来找你了。保持住好奇心,积极探索事情是如何运作的,这样我们就会变得更好,对企业的价值也越大。
Monty:因为身为程序员,我可以帮助更多人,我也愿意用这种方式帮助他人。经常编码能让头脑始终保持灵活。编程给我带来了解决问题的满足感。
Monty:LAMP —— Linux、Apache、MySQL 还有 PHP,这些可以说是互联网的基石。我很高兴能为其贡献一份力量。
如果没有我,互联网的全面成型可能还要再推迟很久。所以就体验来说,我们其实是让互联网提前到来了。这种感觉很好,编程的感觉很好。
Monty:那时并没有这种感觉,我只是觉得编程很有意思。很多人觉得编程很难,但当时我才 16 岁,抱着一颗学习的心。
所以只要你发现自己有天赋, 所处的领域有发展前途,而且其他人又没有意识到,那就一定要把握住这个机会。
Monty:我从 1981 年起就一直居家办公了,也没想过要搬离芬兰。我一直陪在家人身边,但是也经常要出差。你看,我现在不就到中国来了。所以这些我都已经享受到了,我可以在酒店房间里编程,继续做点能改变世界的事情,这很重要。
我永远不会停止编程。我从上学时起就一直这么生活,每周大概工作 60 个小时。现在每周缩短了一些,出差时大概会工作 40 个小时。等到 80 岁的时候,我可能会把工作缩短到 35 小时吧。
MySQL 无疑是 Monty 编程生涯最为耀眼的成就。曾经一度,MySQL 长期霸榜最流行的数据库榜单。
2009 年,MySQL 被甲骨文收入麾下后,Monty 在 MySQL 的精神内核基础上,带着一款新数据库 MariaDB 王者归来。
一手缔造了数据库神作“MySQL”的 Monty,赋予 MariaDB 的使命是 —— 取代 MySQL。
Monty:首先,我坚信软件应该是自由的,也知道企业需要保持盈利才能获得成功。我很高兴能为 MySQL 找到合适的许可证。
但我也坚信,开源才是软件开发的最佳方式,因为这样,软件的走向才不会由单独某个人说了算。开源项目能收集到世界各地的意见,帮助我们发现问题、解决问题,甚至是处理那些自己根本想象不到的问题。只有这样,软件才会变得更好。
如果 MySQL 不开源,那它永远没法像现在这么成功,特别是在甲骨文和微软主导的专有软件市场上。当时每个人都说,没必要再额外开发数据库了,现有方案已经足够解决所有问题。但他们没想到,开源改变了这一切。
Monty:我觉得这是好事。毕竟开源的传播范围越大,就能帮助更多人取得成功。这是让每个人变得更好的正向循环。
Monty:确实没有。在 MySQL 和其他开源数据库出现之前,那些巨头企业可以随意提高价格。换句话说,单靠商业数据库根本支撑不起现在的互联网,因为小公司负担不起这些数据库,也就无法建立网站或者其他互联网资产。
这一切要归功于自由免费软件,它们让互联网成为了可能,同时也阻断了甲骨文的财路。而且免费并不影响开源数据库为客户提供价值,所以才会有越来越多的客户转向自由软件。
Monty:商业化没问题,毕竟企业需要生存,但价格一定得合理。
Monty:MySQL 永远不会走向闭源,毕竟大家随时可以使用旧的开源版本。但 MySQL 可能会变更许可证,导致企业客户难以继续使用当前版本。
可以肯定的是,如果阻绝了合作和开发这条道路,MySQL 的开发生态系统也将随之枯萎。换句话说,必须尽量把每个人都纳入开发流程,让外部开发和内部开发一样便捷。所以跟 MariaDB 相比,MySQL 的贡献者才会明显更少。在被甲骨文收购之后,现在为 MySQL 做贡献也变得更加困难。
Monty:在甲骨文宣布要收购 Sun 和 MySQL 的时候,我就不相信他们会真正发掘 MySQL 这份宝贵遗产。所以不少优秀的程序员与我们决定一起离开,延续 MySQL 的精神。
当时我们没有立马着手开发 MariaDB,那是几周之后的事了。但有一点是明确的,我们都想继续为开源做贡献。我想让创造出 MySQL 的这支才华横溢的团队,能够有值得依靠的稳定归属。所以我建立了 MariaDB,一方面是为了拯救项目,另一方面是想让 Sun 的老同事们有处可去。
Monty:还是第一次有人问起这件事。我得感谢我女儿,在我们俩一直在家的时候,她也不会来打扰我编程。所以以她的名字命名也有这一层关系。另外,这样的命名也让我觉得跟 MariaDB 更亲近。
Monty:一开始我就知道这事很难,因为当时听说 Sun 的销售人员开始主动接触 MySQL 客户,让他们要么表明立场, 要么立马涨价。要想维持价格不变,客户就得签署一份为期五年的合同。
所以我知道,MariaDB 前五年应该是没有多少客户收入了,所以我就预留了前五年的人员工资和运营开销。唯一确定的就是,只有用稳定的薪酬留住大家,我们才能获得成功。
五年之后,客户开始纷纷选择 MariaDB。也正是由于用户转移,MariaDB 开始受到更多发行版的欢迎。从那时候起,大多数领先的发行版都不再使用 MySQL,转而选择了 MariaDB。
Monty:要我说就是性能更好、稳定性更强,而且承诺始终开源。我们永远不知道甲骨文明天会搞出什么来,甲骨文还修改了发布模式,不再定期稳定更新。他们只是偶尔添加新功能, 推出新版本。
所以如果大家比较关注稳定性,那甲骨文手里的 MySQL 已经没法为业务稳定服务了。但如果你想要修复 Bug,补丁经常闹出其他乱子。
而 MariaDB 则每两年发布一次稳定版本,而且持续提供 bug 修复。MariaDB 承诺稳定,而 MySQL 已经无力做出这样的承诺。
Monty:开源是这一切的核心,我们也真心相信自己在做正确的事情。MariaDB 的开发者们很愿意帮助社区和客户。我们始终以客户和用户为中心。
Monty:符合啊,方向明确、质量可靠。我们也添加了很多 MySQL 不具备的功能特性。我相信我们会做得更好,MariaDB 已经吸引到很多重要的区域开发者参与到贡献中来。我们很清楚自己在做什么。
一般来说,外部人士往往很难不经引导就参与到项目中来,而我要做的就是降低参与门槛,而且效果比预期更好。现在 MariaDB 的代码质量真的很出色。
Monty:我的心思主要放在家庭上吧,再就是 MariaDB 和 MySQL,它们像是种精神图腾,也成了我家庭的一部分。我在它们身上花了很多时间,所以希望它们能取得成功。
当然,一切终会过去。MariaDB 取代了 MySQL,因为 MySQL 已经逐渐陈旧过时。但它们在我心里的地位永远不会动摇。
Monty:没错,因为 MariaDB 的设计初衷就是要取代 MySQL 的。MySQL 的人气大不如前,未来在甲骨文内部也可能得不到持续发展的机会。
Monty:欧洲和美国也差不多,都充斥着大量数据库产品。一直都是这样,但大多数产品都无法成功。
问题在于,如果是一家大企业决定开发数据库,那他们肯定要努力打造一款五年、十年甚至二十年后还仍然存在的产品。
MySQL 就是这样,自 95 年至今仍然保有活力,也成为开源数据库中的“活化石”。我们靠的是做正确的事,我们也有 Maria 基金会,真正地为开源保驾护航。所以我们的根基比较稳固。
至于其他数据库,因为缺乏这样的根基,所以这 200 种产品中有 99% 都会在未来五年内彻底消失,毕竟数据库市场还没大到能容纳得下所有。
Monty:是的,能成功的永远是少数。有些公司的数据库只服务于两、三家客户。而作为一家数据库厂商,我们拥有成千上万客户,未来还会有更多。
Monty:数据库还会继续演进,但它属于像 Linux 那种核心产品,所以应该只会保持小幅增量变化。
对数据库来说,最重要的是稳定性。所以即使是适配新硬件,比如从传统磁盘转向 SSD,都是件需要认真考虑的大事。迟早会有足以容纳一切的巨量系统内存,能把所有操作的速度再提升十倍,这将会是下一件大事。另外,我们也在积极研究分布式计算。所以变化总会存在,但仍然是以小步前进的方式实现。
回顾二十年前的数据库,再看看现在,整个行业并没有太大的变化。虽然我们的底层系统有所扩展,但核心其实很大程度上还是那个样子。就像是处理器,跟二十年前相比,会有多少新功能吗?并没有。也许功能集增加了,但除此之外的一切还是老样子。
所以我觉得未来的数据库会更稳定,也更动态。
感谢杭州沃趣科技对本文的大力支持,以及对 Monty 再次来华的邀请与组织。沃趣科技是国内数据库云领域的代表企业,以“让数据库基础设施更简单”为使命,为多款数据库提供全生命周期的管理能力。沃趣是MariaDB国内社区运营方之一,与 Monty 拥有近十年的深度合作。