蘋果Swift語言、LLVM編譯器之父Chris Lattner的新動向,引起程序員圈關注。
這位編譯器大神現在與Swift核心團隊分道揚鑣、徹底退出管理事務的消息引發了大量討論。
Lattner在Swift官方論壇自曝,離開的原因是團隊文化“有毒”。
其中特別點出,去年夏天一次視頻會議上他被人侮辱和大喊大叫,而且這已經不是第一次了。
此次沖突后,Lattner漸漸退出了Swift的管理和開發。
反正他本人還有很多興趣和事業可忙,不如向前看,眼不見為凈。
現在他正忙著籌備新公司Modular.ai,致力于開發AI編譯器、運行時等基礎設施。
啊這,Swift團隊具體出了什么問題,竟能把大神給氣走了?
Lattner五年前就已不再是蘋果正式員工,先后做過特斯拉自動駕駛軟件VP、谷歌Tensorflow基礎設施主管、SiFive工程總裁。
不過Swift這門親手研發的編程語言他心里一直放不下,堅持每周參加例會、參與社區討論,也親自編寫和迭代了許多代碼。
Swift語言逐漸發展壯大,接替老的Objective-C成為許多公司開發新iOS應用的首選語言。
但這門語言發展的方向漸漸與Lattner的理想出現分歧,比如他的設計理念“簡單事物的有效組合”(simple things that compose)就不再流行。
有這種感覺的不止他一人,一些Swift忠實用戶也感到很失望。
我在Swift上投入了很多,2015-2019年都是社區的活躍成員,看到現在這門語言的發展方向,我有點難過。
這位老哥主要不爽的是一些語言特性的添加太過隨意和倉促,讓編譯過程不再透明。
實際上,引發Lattner自曝退出原因的帖子,也是在討論是否添加一個語法糖。
一位開發者認為,隨意添加語法糖對語言維護者來說不算什么,但帶來的混亂會對語言使用者影響很大。
我不是說這個特性毫無價值,但我不想它被引入成語法糖,這會“折斷語言使用者的脖子”。
隨后,他引用了Lattner本人很早以前就發表的一段關于語法糖的思考。
Lattner認為一門編程語言的主要功能相當于蓋房子時的“磚”,語法糖相當于填磚縫的“灰漿”。
如果房子主體都蓋好了去填縫沒啥問題。
如果磚還沒擺全就先抹了大量的漿,那整個房子成了用漿蓋起來的,結構不會牢固,以后再想擺磚頭也找不到合適的地放了。
看來這種分歧在Swift社區由來已久,直到去年夏天那場視頻會議,沖突集中爆發。
Lattner會議上被人罵了以后休息了一段時間,后來找到團隊管理層談話。
他認為管理層逃避問題、找借口,并明確表示不打算對此采取任何措施。
后來大神決定暫時離開每周會議,只參與論壇討論,反正還有很多別的事業可忙。
不過他發表的意見越來越被核心團隊忽視,覺得再這樣下去就是浪費時間了,最終徹底離開。
現在,Swift管理團隊正在嘗試推出新的社區治理機制來解決問題。
他們打算參考其他編程語言和開源項目的成功經驗,重新成立一個專注于語言本身演進迭代的大型工作組,并讓更多社區成員能參與決策。
對于編程語言社區究竟應該如何治理,也有網友發表了自己的觀點。
有人覺得Python之父這種“仁慈的終生獨裁者”模式(BDFL, Benevolent Dictator For Life)才是王道。
Python之父會聽取社區意見,但是最終自己拍板決定。
這位老哥認為所有不采用BDFL模式的編程語言都會因特性太多變得冗雜。
因為開發團隊每個成員都想把自己的想要的特性添加進去,特性之間的交互帶來平方級的復雜度,這樣用戶就難受了。
其他網友覺得也有一個例外,Go語言不是由仁慈的獨裁者管理,但團隊始終堅持簡潔的設計理念。
Go語言每個新功能提案都會被仔細權衡和討論,有些用戶覺得更新速度慢的像冰川移動,但我個人挺欣賞這點。
Lattner本人則在Swift官方論壇對此留下了最后一段建議和祝福。
我認為Swift是一種現象級的語言,有成功和長久的前景,但它肯定不應該是一種社區共同設計的語言,這在立項之初就寫進了章程。
新的機制聽起來有些希望……一個健康和包容的社區有益于Swift的設計和發展。
最后再來介紹一下Lattner現在去忙的新事業。
Modular.ai,致力于為全世界重構AI基礎設施。
包括編譯器、運行時環境,為異構計算設計、邊緣和數據中心并重,并專注于可用性。
最終構建出模塊化、可組合和分層架構的人工智能。
公司的共同創始人及首席產品官Tim Davis,此前在谷歌團隊參與了TF Lite、 Android ML、NNAPI等項目的編譯器開發。
新公司正在全球范圍內招聘大量編譯器、運行時、ML Ops和框架方向的開發者,以及產品經理和云計算工程師。
[1]https://forums.swift.org/t/core-team-to-form-language-workgroup/55455/6
[2]https://news.ycombinator.com/item?id=30416070
[3]https://forums.swift.org/t/pitch-2-light-weight-same-type-requirement-syntax/55081/126
[4]https://www.modular.ai/careers