阿树 2019-02-11
Erlang 编程语言在 1998 年 12 月 8 号星期二开源发布。你还记得那一周你在哪里吗?那时候我在达拉斯(德克萨斯州),正在帮助爱立信美国分公司建立一个使用 AXD301 交换机的 Erlang 团队。当我在星期二早上醒来的时候,我收到了消息。
这个发布显得很平静。发布的时候没有公关,没有宣传或者媒体报道。只有一个简陋的 erlang.org 网站(用 vi 编辑器纯手工编辑的)。一封电子邮件被发送到Erlang 邮件列表,一篇帖子在 slasdot 上创建了首页,同时提到了comp.lang.functional(Joe 尽职尽责地跟进)。没有其它营销活动证明爱立信发布了一个巨大的开源项目。那一周我关注的重点并不是 Erlang 的发布,而是在达拉斯市中心的 Marky Ramone 和 Intruders 演出。我几乎不知道开源 Erlang 会如何影响科技行业、我的职业生涯以及我周围的许多人。是什么让 Erlang 从 爱立信中脱颖而出?出于各种原因,我们中的许多人希望 Erlang 作为开放源码发布。我在爱立信的一些同事想离开目前的职位,但仍想用他们认为是银弹的东西开发产品。其他人希望通过为大众提供容错和可扩展系统的卓越工具,使世界变得更美好。 对于爱立信的管理层来说,更广泛地采用 Erlang 意味着可以从中招募更多的人才。
Jane Walerud在我们当中试图在爱立信之外销售Erlang,并且是当时为数不多知道如何与管理层交流的人之一;她知道销售编程语言的时代已经过去了。爱立信软件架构实验室负责人Håkan Millroth建议尝试下名为“开源”的新事物。Jane,拥有早期版本的Cathedral和Bazaar paper,说服了爱立信管理层发布Erlang VM的源代码、标准库以及OTP的部分内容。
在Erlang出现之前,很多人都不相信这会发生。有人担心,在最后一刻,爱立信将放弃对此整个想法。开源,这个几个月前刚刚创造的术语,是一个奇怪的、可怕的新怪物,大公司都不知道如何处之。对此的担忧有很多。为了降低风险,城市的传奇人物,我们的朋友Richard O’Keefe,他当时在新西兰的Otago大学任职,前来搭救。东方的午夜出现地格外早,所以恰好在新西兰午夜时钟敲响之时,erlang.org网站上线了几分钟。这个时间足够一个匿名用户下载首个Erlang版本,这可确保它能够逃离爱立信。当下载确认后,此网站再次下线,仅在瑞典时间午夜十二点后重新开启。我在达拉斯睡着了,所以我既不能确认也不能否认这是否真的发生了。但正如每个传说一样,我相信它背后有些许事实的。
.Com泡沫时代
最初几年的普及是缓慢的。尽管如此,由 Kenneth Lundin 领导的 OTP 团队仍在努力工作。1999 年5月,BjörnGustavsson对BEAM VM(Bogdan的Erlang抽象机)的重构成为 JAM(Joe的抽象机)的官方替代品。Joe在一年前离开了爱立信,而BEAM,虽然速度更快,却需要时间让生产准备就绪。
我记得每次我们发现使用Erlang/OTP的新的非爱立信产品时都会感到很兴奋。瑞典电话公司Telia正专注于呼叫中心解决方案。英国移动运营商One2One最初将其用于增值服务,并将其用于核心网络。在巴黎的IdealX,首次涉足消息传递和XMPP。芝加哥的Vail系统将其用于自动拨号软件。当然,Bluetail有许多产品可以为互联网服务提供商提供可扩展性和弹性。
在爱立信核心产品中Erlang的使用率继续扩大。这与我1999年搬到伦敦的时间相吻合,我越来越多难以理解爱立信内部的Erlang专业知识。Erlang Solutions诞生了。在公司成立的一年内,我在瑞典、挪威、澳大利亚、爱尔兰、法国、美国,当然还有英国都有了客户。2000年,我们获得了第一个非爱立信客户;巴黎的IdealX。
这是Alteon Web Systems以1.52亿美元对Bluetail的收购(几天后Alteon被Nortel收购),它在Erlang社区中荡起了第一批涟漪。爱立信竞争对手正在研发Erlang产品!还有一代成功的企业家,他们有资金参与其他许多创业公司; Synapse,Klarna和Tail-f是其中的一部分。
Bluetail 成功后不久,.com开始崩溃,整个行业进入生存模式,然后恢复模式。然而,该行业并没有影响到那些全力以赴的学者。2002年,Chalmers 大学的John Hughes教授成功举办了由SIGPLAN和ACM认证的Erlang研讨会。我们并不真正清楚这一切意味着什么,但仍然为此感到非常自豪。匹兹堡(宾夕法尼亚州)的ACM SIGPLAN Erlang研讨会是第一个获得认证的研讨会。在这里,来自Uppsala大学的博士生Richard Carlsson向全世界展示了Erlang版本的try-catch机制。
2004年9月,来自 Uppsala大学的Kostis Sagonas在Snowbird(犹他州)的ACM SIGPLAN Erlang研讨会上举办了快速讲座,并首次公开演示了Dialyzer。他在南非Teba银行的代码库上运行了它。这是他为生态系统做出贡献的众多神奇工具中的第一个。
Erlang 长期以来一直被用于在全世界各地的许多大学教授计算机科学的各个方面知识。这反过来导致了相关研究、硕士论文和博士项目。该研讨会为学术界提供了一个论坛,可以在上面发表其成果并与行业合作伙伴一起验证之。从 erlang.org 网站下载的内容随着曝光度而不断增加。
2003年,哥德堡IT大学的项目经理 Thomas Arts 邀请我为他的本科班教授 Erlang 课程。John Hughes 教授虽然已经了解 Erlang,但他想从在生产中使用 Erlang 的人那里学习之。一天早上,他在课堂上表现疲惫,因为已经熬夜了。他开发了 Erlang QuickCheck 的第一个版本,并尽职尽责地测试了课程习题。这是 Quviq 和商业版 QuickCheck 的起点,QuickCheck 是一种首屈一指的基于属性的测试工具。我最终在IT大学教了十年,有 700 多名学生参加了这门课程。
进入消息传递
在互联网泡沫破碎期间,Alexey Shchepin 开始研究一种名为 ejabberd 的基于 XMPP 的即时消息服务器。 经过三年的努力,他在 2005年12月1日 发布了 1.0 版本的 Facebook Chat, 向7千万用户推出了聊天服务。 大约在同一时间,Brian Acton和 Jan Koum 创立了 WhatsApp,同样基于 Ejabberd 的分支。由于 Ejabberd 分支的大肆宣传,MongooseIM 也做了同样的事情,成为大规模消息传递解决方案的通用平台。
2006年5月,RabbitMQ 诞生了,它定义并实现一个名为AMQP的新的发布/订阅消息传递标准。 RabbitMQ 如今已成为数万个系统的支柱。 到这十年结束,Erlang 已成为许多消息传递解决方案的首选语言。
多核心年
在 dot com 恢复期间,不仅仅是大学在进行创新。 2005年5月,发布了 BEAM VM 的多核版本,证明了 Erlang 并发和编程模型是未来多核架构的理想选择。 很多的兴奋点都集中在了 Erlang 的邮件列表上,因为没有多少人意识到免费午餐已经结束了。我们选择了 Ejabberd,只需将其编译为最新版本的 Erlang,在四核机器上运行时的吞吐量增加了 280%。
2007年5月, Erlang 的1991年原始版本被匿名泄露在爱立信保险箱的 VHS 拷贝中,并放在 erlang.org 网站上,最终被放在 YouTube 上。至今仍然没有人公开承担这一行为的责任。 然而,世界终于理解那些依然存在于爱立信 NDA 之下的人们所感受到的,事件中没有一位计算机科学家放弃了他们日常的本职工作......它在 2013 年获得了续篇,让 Erlang 看起来很酷。 这一次,发布它的 curpruit 的人被确定为芝加哥居民 Garrett Smith。
2007年,Joe Armstrong编写的《Erlang编程》由The Pragmatic Programmers出版。第二年,2008年6月,我拿到了《Erlang编程》的第一版纸质复本; 一本由Simon Thompson和我耗时19个月写作而成的书。当时,O'Reilly的书是新兴编程语言所需的入场券,让位于许多其他奇特多样化的书籍。
这本书的发布会与2008年6月在伦敦召开的第一届Erlang eXchange交易会同期举行。这并不是首次,因为爱立信计算机科学实验室的前负责人BjarneDäcker近十年来一直在斯德哥尔摩举行的年度Erlang用户大会。但11月在瑞典很冷,现在是征服世界的时候了。Erlang eXchange让路于在2009年3月Palo Alto(加利福尼亚州)举办的第一届Erlang Factory。更具异国情调,但同样美丽的地方。
欧洲Erlang社区首次与美国同行会面。如你所想象的,我们一见如故。在会上,Tony Arcieri呈现了Reia,这是在BEAM上运行Erlang的Ruby风格版本。谁说过类似Ruby的语法是个糟糕的主意?其他演讲嘉宾和与会者是当年拥有出色职业生涯者,例如企业家和技术领域的领袖。
当时美国的Erlang用户是Tom Preston Werner。他正在使用它来扩展名为Github的共享代码公司的Ruby前端。2009年11月,在斯德哥尔摩参加Erlang用户大会时,我将他和Scott Chacon介绍给了OTP团队。他们一起度过了一个下午,促成了OTP团队将Erlang开发转移到github,使其成为主存储库。
相关会议遍布全球。对应活动已在阿姆斯特丹、班加罗尔、柏林、布宜诺斯艾利斯、布鲁塞尔、芝加哥、中国许多城市、克拉科夫、洛杉矶、巴黎、墨西哥城、米兰、慕尼黑、纽约、罗马、旧金山、圣安德鲁斯、特拉维夫、温哥华、华盛顿特区和许多其他地方举行过。
青少年时期
2010年,我在牛津大学教授我的第一个工业工程硕士课程。 Erlang被选为Concurrency Oriented Programming课程。这也是 Bruce Tate的《七周七中语言》发表的同年。通过这本书,Ruby的核心提交者之一JoséValim遇到了Erlang。他喜爱他所看到的内容,理解Erlang语义和Beam VM的力量。这让他开始思考如何将这种力量带给网络开发者。
2011年1月,Elixir repo中的第一次提交发生了。结果于次年在Krakow Erlang工厂呈现,并于2014年9月完成1.0版。与所有成功的语言一样,他试图解决一个问题,即将Erlang的强大功能带到更广泛的Web开发社区。
时间点是对的。2012年1月,WhatsApp宣布通过修改FreeBSD和BEAM,他们在一个VM和主机上实现了200万个TCP / IP连接。他们的目标是降低运营成本,在尽可能小的硬件占用空间上运行可扩展的服务。这是适用于许多垂直行业的东西,网络就是其中之一。
与WhatsApp公告同月,一组相关公司汇聚了知识、时间和资源,共同创建了工业Erlang用户组。他们与爱立信携手,将Erlang迁移至Apache许可证下,为糟糕的调度程序做贡献,启动错误跟踪工具,资助新的erlang.org站点,启用Erlang Central,并共同努力构建一个基准。
Elixir 时代
2014年7月,Jim Freeze 在奥斯汀(德克萨斯州)举办了第一届 Elixir 会议。共有106名与会者,其中包括主讲人 Dave Thomas 。Chris Mccord 介绍了 Phoenix 浴火重生的始末。Robert Virding 和我也是此阵容的一部分,我清楚地记得我的信息是:仅因你了解 Ruby ,当他们告诉你学习 Elixir 很简单时,不要轻信他们。你需要同时考虑与之对应的挑战。
Elixir 背后的主要思想是并发性,知道如何处理它对项目的成功与否至关重要。一年后,2015年8月,Phoenix 1.0 发布。它与 Rails 在 Ruby 上的效果相同,将人们带入到 Elixir 时代。目前,你不需要掌握并发性就可以获得它!不久之后 Nerves 就出现了,将 Elixir 从单纯的网络中解脱出来。
在 Elixir Conf 上,我谈及了我与 Steve Vinoski 共同创作的书,“使用 Erlang/OTP 的设计可伸缩性”。当时,它正处于 beta 发布阶段。我无法预知的是我必须等到2016年6月才能拿到纸质付印版。最后四章,本来应该独立成书的,最后耗费了我1.5年的时间来撰写。给哪些想写一本书的主要经验教训是,如果你的伴侣告诉你“你将要成为一个父亲”,你会有8个月的时间来完成这本书。另一种选择是你最终像我一样,在你的第二个孩子出生的前几天参加发布会。这本书谨献给 Alison、Peter 以及我们的孩子 bump 。我们的孩子出生于7月初,为 Erlang 带来了真理,类似“在你生下第二个孩子之前,你并不真正了解并发性”。
Erlang 生态系统
整个2016年,Elixir 的普及率不断增长。关于 Lisp Flavored Erlang 和 Effene 的会议 - BEAM 上的另外两种语言 - 揭示了他们的代码已在实际生产中运行。新的实验性移植不断出现在我们的雷达上;语言的时代结束了。与 .net 一样,囊括了 C#、F#、Visual Basic 以及其他语言或包含 Java、Scala、Clojure、Groovy 的 JVM 生态系统类似,仅举几例。Erlang 和 BEAM 也发生了同样的事情,促使 Bruce Tate 将其命名为 Erlang Ecosystem 。
Clojerl,Effene,Elixir,Erlang,Erlog,Erlua,Fez,Joxa,Lisp Flavored Erlang 和 Reia ,与 Erlang 和 Elixir 一起,开启了跨语言交互及协作的时代。我们一起变得更强大,并继续发展!
在2018年12月,Erlang 生态系统基金会的文书工作被提交,建立了一个非盈利组织,其目标是培育生态系统。我期待在 BEAM 上的更多语言越来越受流行,因为我们改善了互操作性、通用工具和库。随着对可扩展和容错系统的需求的增加,Erlang 的构造和语义对生态系统内外的新语言的影响也在逐渐增加。我希望这能在未来20年里作为新一代技术的领航者和首创者展翅起航。
未来
2018年,在 Code BEAM 斯德哥尔摩会议上发明了 Erlang Ecosystem(以前称为 Erlang 用户大会),来自思科的 Johan Bevemyr 宣布他们将每年向 Erlang 迁移200万台设备。这让观众感到震惊,因为这意味着90%的互联网流量都通过由 Erlang 所控制的路由器和交换机。Erlang 为爱立信的 GPRS,3,4G /LTE 提供了支持,如果爱立信最近的招聘广告能够实现的话,5G网络也包含在其中。通过 VerneMQ 和 EMQ(最受欢迎的 AMQP 经纪人)实现物联网基础设施的 MQTT 。Erlang 不仅支持互联网和移动数据网络,它还是数以万计的分布式容错系统的支柱。通过其金融交换机每天切换数十亿美元,同时通过其消息传递解决方案传递更多消息。这绝对不是杜撰的!