Erlang于1998年12月8日星期二以开源的形式发布。你还记得那个星期你在哪里吗?我在达拉斯(德克萨斯州);我多次访问爱立信美国分公司,帮助他们建立了一个从事AXD301交换机研发的Erlang团队。星期二早上醒来,我得到了这个消息。

这次发布平淡无奇。没有关于此次发布的公关活动,没有造势或媒体报道。有的只是一个简单的erlang.org网站(使用vi手工编写)。一封电子邮件被发送到Erlang邮件列表中,一篇文章登上了slasdot的头版,同时,comp.lang.functional上也有提及(得益于Joe尽职尽责地跟进)。没有其他任何营销活动可以证明,爱立信发布了一个庞大的开源项目。那一周,我最感兴趣的不是Erlang的发布,而是去达拉斯市中心的一家夜总会看Marky Ramone and the Intruders乐队的演出。我几乎不知道Erlang开源会对科技行业、我的职业生涯以及我周围许多人的职业生涯产生什么样的影响。

走出爱立信

这一切是怎么发生的?出于各种原因,我们中的许多人希望Erlang以开源的形式发布。我在爱立信的一些同事想离开目前的职位,但仍在用被他们视为银弹的东西开发产品。其他人则希望把用于构建具有容错性和可扩展性的系统的高级工具提供给大众,让世界更美好。对爱立信管理层来说,Erlang更广泛地采用将意味着有一个更大的人才池供他们招聘人才。

Jane Walerud和我们一起试图将Erlang推广到爱立信之外的公司,她是当时少数懂得如何与管理层沟通的人之一;她明白,销售编程语言的时代已经结束了。爱立信软件架构实验室负责人Hakan Millroth建议尝试这个叫做“开源”的新事物。Jane带着论文The Cathedral and the Bazaar的早期版本,说服爱立信的管理层发布Erlang VM、标准库的源代码和OTP的部分源代码。

在Erlang被放出来之前,许多人都不相信这会发生。人们担心,在最后一刻,爱立信会把这个主意全盘否定。开源,这个几个月前刚出现的术语是一个大公司都不知道该如何应对的奇怪而可怕的新怪物。对于进入未知领域,爱立信当然会有许多担忧。坊间传说,为了降低Erlang无法发布的风险,我们的朋友,当时在新西兰奥塔哥大学工作Richard O’Keefe前来增援。东部的午夜来得更早一些,所以新西兰午夜的钟声一响,erlang.org网站就已经上线几分钟了。刚好足够确保匿名用户下载完第一个Erlang发行版。当确认下载完成后,网站再次下线,12小时后,在瑞典时间的午夜再次上线。我在达拉斯,睡得很熟,所以我既不能确认也不能否认这一切是否真的发生过。但就像每一个传说一样,我确信它的背后有一点真相。

互联网泡沫时代

在最初的几年里,采用进展缓慢。尽管如此,Kenneth Lundin领导的OTP团队仍在努力地工作。1999年5月,经Bjorn Gustavsson重构的BEAM VM (Bogdan的Erlang抽象机)正式取代了JAM (Joe的抽象机)。Joe早在一年前就离开了爱立信,BEAM虽然速度更快,但仍需要这么长一段时间才能生产就绪。

每当我们新发现一家使用Erlang/OTP的公司时,我都会感到兴奋。瑞典电话公司Telia正在研究一个呼叫中心解决方案。英国移动运营商One2One最初将其用于增值服务,然后将其应用范围扩大至核心网络。巴黎的IdealX首先在消息传递和XMPP中进行了尝试。芝加哥的Vail System和多伦多的Motivity将其用于自动拨号软件。当然,Bluetail也有许多产品帮助互联网服务提供商实现可伸缩性和弹性。

Erlang在爱立信核心产品中的使用继续扩大。与此同时,我在1999年搬到伦敦,在那里,我越来越多地遇到爱立信内部对Erlang专业知识的需求。Erlang Solutions诞生了。公司成立不到一年,我的客户就遍及瑞典、挪威、澳大利亚、爱尔兰、法国、美国,当然还有英国。2000年,我们有了第一个非爱立信客户;IdealX在巴黎的培训、指导和代码审查。

Alteon Web Systems以1.52亿美元收购了Bluetail(几天后,Alteon被Nortel收购),这在Erlang社区引发了第一波反响。爱立信的一个竞争对手正在开发Erlang产品!大量有资金的成功企业家参与了许多其他创业公司,其中包括Synapse、Klarna和Tail-f。

在Bluetail取得成功之后不久,互联网泡沫破裂了,整个行业进入了生存模式,然后是复苏模式。然而,此次泡沫破裂并未影响那些全力以赴的学者。2002年,查默斯大学的John Hughes教授使Erlang研讨会成功获得了SIGPLAN和ACM认证。我们真的不知道这一切意味着什么,但我们仍然感到非常自豪。匹兹堡(宾夕法尼亚州)的ACM SIGPLAN Erlang研讨会是第一个获得认证的研讨会。在这里,来自乌普萨拉大学的博士生Richard Carlsson向世界展示了Erlang版本的try-catch。

在2004年9月,乌普萨拉大学的Kostis Sagonas在雪鸟(犹他州)主持了ACM SIGPLAN Erlang研讨会的闪电秀,第一次公开演示了Dialyzer。他在南非Teba银行的一个代码库上运行了它。这是他和他的学生向Erlang生态系统贡献的许多令人大为惊奇的工具中的第一个。

在很长一段时间里,Erlang被世界各地许多大学用于计算机科学各方面的教学。这反过来又催生了研究、硕士论文和博士项目。研讨会提供了一个论坛,让学者们发表他们的成果,并与工业伙伴进行验证。erlang.org站点的下载次数不断增加,采用率也在增加。

2003年,哥德堡IT大学的项目经理Thomas Arts邀请我给他的本科班教授Erlang课程。虽然John Hughes教授已经具备了Erlang的相关知识,但是他想向在生产中使用过Erlang的人学习这门语言,所以他也加入了这个班。一天早上,他上课累了,他刚刚熬了一整夜。他开发了Erlang QuickCheck的第一个版本,并用它非常认真地测试课程练习。这是Quviq也就是QuickCheck商业版的开端。这是一款一流的基于属性的测试工具。最终,我在IT大学教了10年书,有700多名学生参加了这个课程。

进入消息传递领域

在网络泡沫破裂期间,Alexey Shchepin开始开发一个基于XMPP协议的即时消息服务器,名为Ejabberd。经过三年的研发,他在2005年12月1日发布了第一个版本。Facebook Chat生成了它的一个分支,向7000万用户推出了一项聊天服务。大约是在相同的时间,Brian Acton和Jan Koum创建了WhatsApp,也是基于Ejabberd的一个分支。那会儿,创建Ejabberd的分支很热门,MongooseIM做了同样的事,成为一个通用大型信息平台的解决方案。

2006年5月,RabbitMQ诞生了,因为我们发现一种新的发布/订阅消息传递标准AMQP正在定义和实现当中。现在,RabbitMQ已经成为数万个系统的基础。到本世纪末,Erlang已经成为许多消息传递解决方案的首选语言。

多核年代

在互联网复苏期间,不仅仅是大学进行了创新。2005年5月,OTP团队发布了BEAM VM的多核版本,证明Erlang的并发编程模型是未来多核体系结构的理想选择。大多数兴奋来自Erlang的邮件列表,因为没有多少人意识到免费午餐时代已经结束。我们使用Ejabberd,仅仅通过将其编译到Erlang的最新版本,在四核机器上运行时,其吞吐量就增加了280%。

2007年5月,拍摄于1991年的影片Erlang the Movie的原声带从爱立信保险箱里的一盘VHS录像带中被匿名泄露,并被放到了erlang.org网站上,最终传到了YouTube上。目前还没有人公开对这一行为负责。然而,这个世界终于明白了,那些仍然在爱立信NDA工作的人所感受到的宽慰:影片中出现的计算机科学家中,没有一个放弃了自己的日常工作,转而投身演艺事业。2013年,一名潮人试图让Erlang看起来更炫酷,这部电影有了一部续集。这一次,发布者的身份被确认为芝加哥居民Garrett Smith。

2007年,Joe Armstrong的《Erlang编程》由The Pragmatic Programmers出版。第二年,2008年6月,我拿到了《Erlang编程》的第一份纸质副本;这是我和Simon Thompson花了18个月的时间写的一本书。当时,O’Reilly的一本书是新兴编程语言获得认可所需的印章,为许多语言的其他许多精彩而多样的图书开辟了道路。

新书发布会与2008年6月在伦敦举行的第一届商业性Erlang大会Erlang eXchange同时举行。这并不是第一次,因为爱立信计算机科学实验室前负责人Bjarne Dacker在斯德哥尔摩主持每年一度的Erlang用户大会已经将近十年了。但是,瑞典的11月很冷,征服世界的时候到了。Erlang eXchange让位给第一届Erlang Factory,后者于2009年3月在加州帕洛阿尔托举行。一个同样美丽但更具异国情调的地方。

欧洲Erlang社区首次与美国同行见面。正如你所想象的那样,我们一见如故。在大会上,Tony Arcieri展示了Reia,这是在BEAM上运行的Ruby版的Erlang。谁说类似Ruby的语法是一个坏主意?那一年的其他演讲者和与会者都是科技界的企业家和领导者,他们的职业生涯都非常出色。

当时,美国有一个名为Tom Preston Werner的Erlang用户。他使用它来扩展一个名为GitHub的社交编程公司的Ruby前端。2009年11月,在斯德哥尔摩参加Erlang用户大会时,我向OTP团队介绍了他和Scott Chacon。他们一起度过了一个下午,促使OTP团队将Erlang的开发转移到GitHub,使其成为他们的主存储库。

会议遍布世界各地。活动已经在阿姆斯特丹、班加罗尔、柏林、布宜诺斯艾利斯、布鲁塞尔、芝加哥(许多地方我都不认识)、中国、克拉科夫、洛杉矶、巴黎、莫斯科、墨西哥城、米兰、慕尼黑、纽约、罗马、旧金山、圣安德鲁斯、特拉维夫、温哥华、华盛顿特区和许多许多其他地方举行。

卡布其诺年代

2010年,我在牛津大学教授我的第一门研究生课程。Erlang被选为面向并发的编程课程。也是在这一年,Bruce Tate的《七周七语言》问世。正是通过这本书,Rails的核心提交者之一Jose Valim认识到,Erlang在并发性竞赛中领先于所有人,因为它还改进了发行版。

2011年1月,Elixir库出现首次提交。其成果于次年在克拉科夫Erlang Factory大会上公布,并于2014年9月发布了1.0版本。像所有成功的语言一样,它试图解决一个问题,即把Erlang的力量带给更广泛的社区,而Web是起点。

恰逢其时。2012年1月,WhatsApp宣布,通过修改FreeBSD和BEAM,他们在一个虚拟机和主机上实现了200万个TCP/IP连接。他们的目标是降低运营成本,在尽可能少的硬件上运行可伸缩的服务。这些结果适用于许多垂直领域,Web就是其中之一。

就在WhatsApp发布该消息的同一个月,一些公司汇集了知识、时间和资源,创建了“工业企业Erlang用户组(Industrial Erlang User Group)”。他们与爱立信合作,将Erlang从开源Mozilla公共许可协议的派生版本转移到Apache许可协议,为“脏调度器(dirty scheduler)”做贡献,推出Bug跟踪工具,资助建立了一个新的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不再仅仅是一种Web语言。

在Elixir大会上,我谈到了与Steve Vinoski合著的一本书,即《高伸缩性系统:Erlang/OTP大型分布式容错设计》。当时,它还是Beta版。我一点也不知道,我不得不等到2016年6月才拿到一份纸质副本。最后四章本应是一本独立的书,最终花了一年半才写成。别人写书的主要经验是,如果你的伴侣告诉你“你将成为一个父亲”,那么你有8个月的时间来完成这本书。另一种情况则是像我一样,在第二个孩子出生前的几天还在参加发布庆祝会。这本书是献给Alison、Peter 和我们的“孕宝宝”。7月初,“孕宝宝”诞生了,这证明了一句Erlang谚语:“只有当你有了第二个孩子,你才能真正理解并发。”

Erlang生态系统

2016年,Elixir的使用持续增长。关于Lisp Flavoured Erlang和Effene(BEAM上的另两种语言)的大会演讲表明,它们的代码已经在生产环境中运行。新的试验性移植不断地出现在我们的雷达上;语言的时代结束了。正如.NET包含C#、F#、Visual Basic等语言,而JVM生态系统则包含Java、Scala、Clojure、Groovy等等。Erlang和BEAM也发生了同样的事情,这使得Bruce Tate提出了Erlang生态系统这个术语。

Alpaca、Clojerl、Efene、Elixir、Elm-beam、Erlog、Erlua、Fez、Joxa、Lisp Flavoured Erlang和Reia,与Erlang和Elixir一起,开启了一个跨语言交互与协作的时代。在一起,我们更强大,我们可以不断进化!

2018年12月,Erlang生态系统基金会的全部文件提交完成,一个以培育生态系统为目标的非营利组织成立了。随着我们对互操作性、通用工具和库的改进,我期待更多的BEAM语言得到普及。随着可伸缩和容错系统需求的增加,Erlang的结构和语义对生态系统内外的新语言的影响也在增加。我希望,随着新一代科技领袖和企业家们展翅翱翔,这将为未来20年设定方向。

未来展望

2018年,在提出Erlang生态系统(以前称为Erlang用户大会)的Code BEAM斯德哥尔摩大会上,来自思科的Johan Bevemyr宣布,他们每年交付200万台运行Erlang应用程序的设备。这让观众大吃一惊,因为这意味着90%的互联网流量都通过由Erlang控制的路由器和交换机。Erlang支撑着爱立信GPRS、3G、4G/LTE网络,如果最近的招聘广告可以作为参考的话,还有他们的5G网络,以及用于物联网基础设施的MQTT代理VerneMQ和EMQ(最流行的AMQP代理)。Erlang不仅支撑着互联网和移动数据网络,还是成千上万的分布式容错系统的骨干。每天通过其金融交换机的交易金额达数十亿美元,通过其消息传递解决方案的消息更多。这可不是编出来的!

这些只是我个人过去20年中看到的一些亮点。所有这一切让我们意识到,我们的工作还远远没有完成。1995年,Joe Armstrong告诉我,Erlang不会永远存在。有一天,他说,更好的东西将会出现。时间快进到2018年12月,我仍然怀着开放的心态等待着那个预言成真。无论如何,Erlang无疑会对它产生重大的影响。

非常感谢Joe、Mike和Robert打通了第一个电话,也非常感谢Bjarne的推动。Jane喊了一声,使它走出爱立信,保证了它的生存。你们都开创了一项事业,使我能够与那些令人惊叹、才华横溢的人们碰面,与他们一起工作和学习,并使用我们都热爱的技术。它为我们提供了一个平台,使我们中的许多人能够推动未来20年(至少)的创新!

查看英文原文:Twenty Years of Open Source Erlang

Erlang开源20周年:这门编程语言见证了互联网的技术成长相关推荐

  1. 用20门编程语言说生日快乐/我爱你

    最近逛B乎,老看到有人在说今天ta生日,让人祝他生日快乐,既然是码农,那就要拿出点码农的特产出来,特地搜罗了20门编程语言的输出. java:System.out.println("生辰吉乐 ...

  2. 凭什么说这门编程语言是下一代 Java?

    问世于 1987 年的面向并发的编程语言 Erlang,比 Java 和 Ruby 等老牌语言都要出现得早,但是彼时的 Erlang 并不被业界广泛地熟知,因为在其发布的十年间,它只作为商业产品出售且 ...

  3. 20 周年特别策划 | 说出你与 CSDN 的故事!

    CSDN 编者按:不知不觉,CSDN 已经与开发者共同走过 20 年岁月.20 年间,CSDN 与开发者们互相见证彼此的进步,共同收获成长.在成立 20 周年之际,CSDN 特推出特别策划,让开发者说 ...

  4. 甲骨文携手各界共庆Java 20周年

    本文讲的是 :   甲骨文携手各界共庆Java 20周年 , [IT168信息化]可曾记得你用Java写的第一句话"Hello World"?你的第一本Java书籍的封面?你调试的 ...

  5. Visual Studio 20周年,我和VS不得不说的故事(内含福利)

    Visual Studio 2017正式版已如期发布(点击这里查看发布全记录)!自去年 11 月正式宣布 Visual Studio 项目之后,微软终于正式推出了"宇宙最强集成开发环境(ID ...

  6. .NET 20周年专访 - 张善友:.NET 技术是如何赋能并改变世界的

    点击蓝字 关注我们 今年是 .NET 发布20周年,值此20周年之际,微软 Reactor 特别策划了 .NET 20周年系列主题专访.我们邀请了数位中国 .NET 领域的技术专家以及社区名人,来聊聊 ...

  7. EdgeGallery开源一周年:在风起云涌的边缘计算时代独立潮头

    时间如白驹,今天是EdgeGallery开源一周年的日子! 这一年里概念创新.技术演进.版本迭代,无论你是否驻足,EdgeGallery和伙伴们都在坚实地推进5G MEC技术进步.产业发展,为5G t ...

  8. QB期刊:纪念人类基因组草图发表20周年系列文章 | Michael Q. Zhang教授分享个人研究历程及学科发展思考...

    2021年是人类基因组草图公布的20周年,QB期刊非常荣幸地邀请到了一批曾在人类基因组计划(HGP)中发挥重要作用并做出突出贡献.或见证HGP重大进展和影响的杰出科学家,为大家分享HGP背后的故事.我 ...

  9. 【历史上的今天】2 月 13 日:晶体管之父出生;.Net 面世 20 周年;《敏捷软件开发宣言》诞生

    整理 | 王启隆 透过「历史上的今天」,从过去看未来,从现在亦可以改变未来. 今天是 2022 年 2 月 13 日,在 2001 年的今天,跨国科技公司谷歌(Google)进行了其历史上的第一次收购 ...

最新文章

  1. Open3d 学习计划—13(Azure Kinect)
  2. 全网最火的Nacos监控中心——Prometheus+Grafana
  3. 相比Redis,Memcached真的过时了吗?
  4. Ubuntu14.04 + Matlab2014a + caffe + cuda + cudnn环境搭建
  5. 结合keepalived实现redis群集高可用故障自动切换
  6. 翻牌游戏如何打乱牌面java_剑仙登上虎牙封面C位,成为新的牌面,虎牙造星能力真的强...
  7. C编程,随机数,排序
  8. 5个令人震惊的统计数据证明日志不足
  9. PS教程第十九课:移动工具
  10. UNREAL ENGINE 4.13 正式发布!
  11. (转)淘淘商城系列——使用solrj来测试索引库
  12. 腾讯开源业内最大多标签图像数据集,附ResNet-101模型
  13. java中的技术_Java中的四个核心技术思想
  14. 神经网络控制基本原理,神经网络理论及其应用
  15. mongodb查询某个字段数据
  16. [week13] 2 - T1
  17. Android后台切回到应用显示广告页
  18. 配置文件工具类【ConfigTools】
  19. 企业怎么制作网站?怎么制作网站教程步骤
  20. 【算法-剑指 Offer】62. 圆圈中最后剩下的数字(环形链表;约瑟夫环;动态规划)

热门文章

  1. java中between and什么意思,关于 oracle between and的用法!
  2. 错误(mailed 59 bytes of output but got status 0x004b#012)
  3. 第九批游戏版号下发 巨人网络一游戏获版号
  4. Android Tag-Cloud (云标签) 效果
  5. dos(cmd)命令
  6. Python基本语法(初学者,不是很完善)
  7. 产品引流的方式有哪些?适合引流推广的平台有哪些?
  8. java透视图_Eclipse透视图
  9. 小米路由器3c 虚拟服务器,小米路由器3C上不了网怎么办?
  10. 自定义Android电子时钟控件