1998-2018 Erlang編程語言開源20週年
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 不僅支持互聯網和移動數據網絡,它還是數以萬計的分佈式容錯系統的支柱。通過其金融交換機每天切換數十億美元,同時通過其消息傳遞解決方案傳遞更多消息。這絕對不是杜撰的!
這些只是我在過去20年以來的一些個人要點。總之,這是一個遠未完成的實現。1995年,Joe Armstrong 告訴我,Erlang 不會永遠存在。有一天,他說,會有更優的語言出現。快進到2018年12月,我仍然以開放的心態等待該預言成真。無論它將是什麼,毫無疑問,Erlang 將會對其產生重大影響。
非常感謝Joe,Mike 和Robert 撥打了第一個電話,並感謝Bjarne 啟用它。向Jane 致敬,他將其獨立於愛立信,確保了它的可存在性。你們都開始了一些事情,這些事情讓我能夠使用我們都熱衷的技術與令人驚嘆並才華橫溢的人相遇、協作和學習。它為我們提供了一個平台,使我們中的許多人能夠(至少)在未來20年裡推動創新!