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年裡推動創新!