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