蘋果是否應(yīng)該將Swift推向開源:七個(gè)支持與反對(duì)的理由
蘋果的全新編程語言Swift自首次亮相以來才剛剛過去幾個(gè)月,但蘋果已經(jīng)信心滿滿地將重注押在了它的身上。作為宣傳核心,“更干練”、“更簡(jiǎn)單”、“現(xiàn)代化”與“強(qiáng)大”等形容詞被一一賦予了Swift語言。
不過整個(gè)技術(shù)業(yè)界目前還只能從假設(shè)層面來對(duì)Swift作出展望——盡管其編程工具本身并不收費(fèi),但卻只能運(yùn)行在Xcode或者Playground當(dāng)中。換句話來說,也就是只能運(yùn)行在蘋果推出的硬件平臺(tái)之上。當(dāng)然,如果大家真的對(duì)這種設(shè)定感到絕望,倒也可以在不觸及任何資源庫(kù)的前提下使用Swift中的一部分基礎(chǔ)代碼。
蘋果采取這樣的設(shè)計(jì)思路實(shí)在令人有些費(fèi)解。最近幾年來,編程語言的創(chuàng)造者們一直在努力想盡各種辦法保證自己的代碼能夠運(yùn)行在盡可能多的不同計(jì)算設(shè)備之上。這意味著他們需要對(duì)自己的工具進(jìn)行開源化處理,并盡其所能把自己的工作成果推廣到技術(shù)領(lǐng)域的各個(gè)角落。
但很明顯,蘋果向來就是那種不走尋常路的類型。雖然從表面上看,將Swift以開放姿態(tài)交付到每個(gè)人手中也許是最理想的作法,不過這絕不意味著蘋果會(huì)采取這樣的思路。我們也無法作出蘋果愿意以免費(fèi)或者能夠?qū)崿F(xiàn)用戶最大利益的方式設(shè)計(jì)Swift的假設(shè)。事實(shí)上,對(duì)于Swift這樣的語言來說,開源其實(shí)是個(gè)頗具難度的深層問題。
下面不才就以拋磚引玉之心態(tài),先來談?wù)勌O果對(duì)Swift進(jìn)行開源的七大益處、再思考這種情況不可能發(fā)生的七項(xiàng)理由。
蘋果為何應(yīng)該對(duì)Swift進(jìn)行開源: 開源促進(jìn)創(chuàng)新。就編程領(lǐng)域而言,新思路、新工具乃至新架構(gòu)往往會(huì)以開源姿態(tài)開始自己的市場(chǎng)推廣之旅。像JavaScript、PHP、Clojure以及Haskell這樣的突破性語言都為了吸引編程者的關(guān)注而提供開源引擎。舉例來說,Node.js之所以能夠順利將JavaScript帶入服務(wù)器環(huán)境,正是要?dú)w功于以V8及Rhno為代表的開源JavaScript引擎。如果大家希望自己的成果能夠吸引到更多技術(shù)人士的關(guān)注,那么最簡(jiǎn)便的辦法無疑是將代碼免費(fèi)在GitHub或者Sorceforge等共享站點(diǎn)上推廣,并借此盡可能實(shí)現(xiàn)廣泛的普及程度。開發(fā)人員將因此匯聚到它身邊,同時(shí)利用自己的智慧與心血對(duì)其進(jìn)行擴(kuò)展與實(shí)踐。
蘋果為何不會(huì)對(duì)Swift進(jìn)行開源: 創(chuàng)新并不是蘋果公司的真正目的。Swift所采用的語法看起來有所不同,而蘋果方面也在新聞發(fā)布會(huì)上把“全新”這個(gè)詞說了一遍又一遍。但從核心角度看,Swift只是一項(xiàng)精明的商業(yè)策略的具體表現(xiàn),旨在維持現(xiàn)有資源庫(kù)的發(fā)展?fàn)顟B(tài)并從中壓榨出更多潛力。
從本質(zhì)角度出發(fā),Swift的設(shè)計(jì)目標(biāo)在于支撐起以O(shè)bjective-C為基礎(chǔ)的整個(gè)iOS生態(tài)系統(tǒng)。這意味著Swift語言能夠很好地與Objective-C保持千絲萬縷的聯(lián)系,而非將其徹底取代。換句話講,蘋果公司作為一位誓將所有資產(chǎn)牢牢控制在自己手中的統(tǒng)治者、根本不關(guān)心采取開源機(jī)制后該項(xiàng)目能夠在哪些方面作出突破。蘋果的意愿是保證自家硬件設(shè)備能夠繼續(xù)平穩(wěn)運(yùn)行,而非鼓勵(lì)旺盛但卻混亂的廣泛創(chuàng)新。
蘋果為何應(yīng)該對(duì)Swift進(jìn)行開源:未來的技術(shù)勞動(dòng)力將普遍擁有豐富的開源經(jīng)驗(yàn)。一位計(jì)算機(jī)科學(xué)教授曾告訴我,盡管他對(duì)Swift相當(dāng)喜愛、但仍然不會(huì)建議自己的學(xué)生為此購(gòu)買昂貴的硬件設(shè)備以滿足這款編程語言的使用條件。正是出于這個(gè)理由,很多計(jì)算機(jī)科學(xué)課程往往更傾向于采用能夠運(yùn)行在商用硬件上的免費(fèi)IDE方案,例如Eclipse。出于同樣的理由,很多面向初學(xué)者的培訓(xùn)課程會(huì)以HTML 5、JavaScript以及Firefox OS等內(nèi)容為關(guān)注核心。自學(xué)成才的黑客們同樣選擇這條發(fā)展道路:要么開源,要么放棄。
如果蘋果希望能夠吸引到教育培訓(xùn)及自學(xué)群體的青睞,那就必須保證Swift可以運(yùn)行在更為廉價(jià)的硬件設(shè)備之上。相比之下,孩子們?cè)贓clipse上學(xué)習(xí)了Java編程技巧之后,只需要花幾分鐘安裝Android開發(fā)套件即可動(dòng)手打造屬于自己的應(yīng)用程序。而存下一筆錢購(gòu)置Mac設(shè)備并安裝Xcode就沒這么方便快捷了。面對(duì)這群熟悉Android開發(fā)的新生力量,蘋果要在未來幾十年中繼續(xù)保持良好的生態(tài)系統(tǒng)狀況恐怕還需多多努力。
蘋果為何不會(huì)對(duì)Swift進(jìn)行開源: 市場(chǎng)才是決定開發(fā)人員走向的實(shí)質(zhì)性因素。盡管Android開發(fā)在便捷性與經(jīng)濟(jì)成本方面確實(shí)更容易吸引年輕的開發(fā)學(xué)習(xí)者,但歸根結(jié)底影響學(xué)生選擇的還是市場(chǎng)需求與招聘條件。對(duì)于應(yīng)用程序開發(fā)者而言,iOS仍然是最具收益潛力的移動(dòng)系統(tǒng)平臺(tái),而收益與工作機(jī)會(huì)也成正比關(guān)系。學(xué)員們當(dāng)然希望能夠投身于付費(fèi)客戶群體最龐大的平臺(tái),而就目前來看,相比低端的Android手機(jī)環(huán)境還不足以承載年輕人的創(chuàng)業(yè)夢(mèng)想。只要蘋果繼續(xù)在這一角度保持領(lǐng)先地位,學(xué)習(xí)其編程語言的群眾基礎(chǔ)就不會(huì)動(dòng)搖——即使這意味著他們需要投入更多資金來購(gòu)置作為入行門票的昂貴硬件。
蘋果為何應(yīng)該對(duì)Swift進(jìn)行開源: 在開源體系的支持下,“任何bug都不足為懼”。作為開源機(jī)制的一大核心宗旨,眾多參與者的雪亮眼光足以揪出所有可能或者確切存在的軟件漏洞。有鑒于此,大多數(shù)困擾著新代碼的常見問題在擁有良好維護(hù)體系的開源項(xiàng)目中都難以容身。由廣泛的參與者社區(qū)負(fù)責(zé)代碼處理可以說是最為理想的調(diào)試手段。也許有些開發(fā)者會(huì)在工作中犯下錯(cuò)誤,但總會(huì)有人、甚至是從未謀面的人發(fā)現(xiàn)這一錯(cuò)誤并加以修復(fù)。如果Swift希望在發(fā)展速度、功能添加、性能優(yōu)化與安全改進(jìn)方面有所突破,就必須讓程序員們能夠更輕松地實(shí)現(xiàn)代碼剖析并與其他同行分享自己的調(diào)整心得。
蘋果為何不會(huì)對(duì)Swift進(jìn)行開源: 閉源機(jī)制也擁有自己的天然優(yōu)勢(shì)。開源領(lǐng)域也許常常會(huì)將出色的漏洞修復(fù)記錄作為炫耀的資本,但必須承認(rèn)的是、他們根本無法確切衡量漏洞修復(fù)的實(shí)際效率。宣揚(yáng)所有漏洞都已經(jīng)得到修復(fù)根本就是句不切實(shí)際的廢話。不相信?問問那些多年來對(duì)OpenSSL死心塌地的擁護(hù)者吧。
閉源機(jī)制要求我們對(duì)一套內(nèi)容未知的黑匣子給予充分信任,雖然其中有可能充斥著大量漏洞甚至是后門,但此類方式也有自己的優(yōu)勢(shì):惡意人士與我們一樣、也對(duì)實(shí)際情況一頭霧水。這種無知狀況雖然不值得慶祝,但有時(shí)候卻真的屬于積極因素。另外,蘋果公司歷史上最嚴(yán)重的漏洞“goto fail”卻正好來自其很久之前的開源代碼部分。很明顯,開源業(yè)界的群眾們花了很多年也沒能發(fā)現(xiàn)這位要命的麻煩制造者。
蘋果為何應(yīng)該對(duì)Swift進(jìn)行開源:開放意味著快速傳播與新興市場(chǎng)。曾幾何時(shí),蘋果公司一度獨(dú)自統(tǒng)治著整個(gè)智能手機(jī)世界。但谷歌隨后憑借著開源Android贏得了驚人的市場(chǎng)份額比例——根據(jù)最近公布的一項(xiàng)估算結(jié)果,其份額占據(jù)智能手機(jī)銷售市場(chǎng)的85%。這樣的數(shù)字對(duì)于開發(fā)人員而言無疑極具吸引力。開源為從業(yè)者構(gòu)建起一條隱蔽的通路,幫助他們進(jìn)行市場(chǎng)滲透、打造新型設(shè)備并吸引數(shù)量龐大的新合作伙伴。目前市面上的Android產(chǎn)品已經(jīng)涵蓋了電視、照相機(jī)、筆記本電腦甚至是冰箱。相比之下,iOS世界中付出的最大新聞僅僅是——現(xiàn)在iPhone提供更多配色可供選擇。
蘋果為何不會(huì)對(duì)Swift進(jìn)行開源: 份額帶來碎片化難題。可觀的份額確實(shí)能夠吸引到更多關(guān)注與更具創(chuàng)新性的思維成果,但這往往也會(huì)導(dǎo)致分裂與混亂——或者用Android擁護(hù)者的話來說,“設(shè)備多樣性”。蘋果為什么要鼓勵(lì)通過更多Swift版本讓初學(xué)者或者開發(fā)人員頭痛不已?同時(shí)支持iPhone 4與iPhone 5已經(jīng)是個(gè)大麻煩了。這并非一家之言,事實(shí)上Android開發(fā)者們也對(duì)沒完沒了的系統(tǒng)版本充滿了抱怨。
除此之外,如果有人想搞出一些只能運(yùn)行在Linux環(huán)境而非Mac設(shè)備上的Swift新代碼呢?這顯然不會(huì)給蘋果公司及其客戶帶來任何幫助。蘋果希望能夠?yàn)槊恳晃挥脩籼峁┛梢皂槙尺\(yùn)行的業(yè)務(wù)解決方案,而不是培養(yǎng)出一大堆專門處理這類復(fù)雜難題的黑客級(jí)程序員。
蘋果為何應(yīng)該對(duì)Swift進(jìn)行開源: 開源能夠保證工具擁有強(qiáng)大的生態(tài)系統(tǒng)。如果大家希望為Android環(huán)境開發(fā)應(yīng)用程序,則可以使用來自Java開源領(lǐng)域的大部分現(xiàn)有工具。Eclipse?沒問題。IntelliJ?聽起來也不錯(cuò)。想嘗試命令行界面中的Ant或者M(jìn)aven?它們可都擁有一大群忠誠(chéng)的粉絲。Java陣營(yíng)的可用工具列表相當(dāng)豐富,而且其中充滿了創(chuàng)新實(shí)踐成果。而對(duì)于這份列表而言,最重要的一點(diǎn)在于:Sun/甲骨文方面并沒有參與其中任何一款工具的創(chuàng)建工作。開源Swift能夠培植起強(qiáng)大的開發(fā)者生態(tài)系統(tǒng),并確保開發(fā)人員擁有更多選擇這款編程語言的理由。
蘋果為何不會(huì)對(duì)Swift進(jìn)行開源: 開放性只是Android成功的一個(gè)側(cè)面。蘋果在智能手機(jī)銷量方面可能已經(jīng)失去了統(tǒng)治地位,但該公司的產(chǎn)品受眾卻更樂于購(gòu)買更多應(yīng)用程序。大量研究結(jié)果表明,iPhone用戶在應(yīng)用程序購(gòu)買方面支付的費(fèi)用要遠(yuǎn)高于Android用戶——這也是移動(dòng)開發(fā)人員總會(huì)將iPhone作為首選平臺(tái)的根本理由。這同時(shí)也讓App Store擁有更理想的購(gòu)買體驗(yàn)。如果開發(fā)人員能夠非常輕松地將Swift代碼同時(shí)部署在iPhone與Android市場(chǎng)之上,那么蘋果將徹底喪失自身在應(yīng)用程序領(lǐng)域的優(yōu)勢(shì)地位。如果人們能夠在昂貴的iPhone與廉價(jià)的Android設(shè)備上享受到同樣的應(yīng)用程序使用體驗(yàn),那么低價(jià)者自然會(huì)獲得勝利。
蘋果為何應(yīng)該對(duì)Swift進(jìn)行開源: 蘋果有責(zé)任將項(xiàng)目推向開源。蘋果并沒有將Swift的全部榮耀盡皆歸于自身。事實(shí)上,這款新型編程語言可謂站在巨人的肩膀上。與蘋果獨(dú)力開發(fā)了gcc或者LLVM不同,Swift的基礎(chǔ)來自開源世界,而將其最終回歸開源也是蘋果作為回報(bào)所應(yīng)采取的方針。蘋果曾經(jīng)通過Darwin為BSD作出了一系列開源貢獻(xiàn),為什么不在移動(dòng)領(lǐng)域再次重復(fù)這一正確決策呢?
蘋果為何不會(huì)對(duì)Swift進(jìn)行開源:蘋果不需要將任何項(xiàng)目推向開源。如果大家利用開源工具開發(fā)出自己的成果,那么根本不需要將其以開放方式交付給用戶。誠(chéng)然,以GPL為代表的某些許可要求用戶將利用其工具打造出的所有成果加以共享,但這并不適用于全新開發(fā)項(xiàng)目。蘋果以開源機(jī)制為基礎(chǔ)構(gòu)建出某些新生事物。我們也做過同樣的工作,并最終選擇將其作為專有成果。既然我們可以,蘋果當(dāng)然也可以。
蘋果為何應(yīng)該對(duì)Swift進(jìn)行開源: Swift能夠被克隆。微軟一直努力將.Net限定在Windows平臺(tái)之上。作為應(yīng)對(duì),開源業(yè)界對(duì)其進(jìn)行了克隆。同樣的情況也可能發(fā)生在Swift身上。如果有人構(gòu)建出一套完整的開放軟件包,那么該版本將成為Swift語言中最受歡迎的主要載體。程序員利用它將自己的思路變成現(xiàn)實(shí),而蘋果對(duì)這一切只能望洋興嘆。但如果對(duì)Swift進(jìn)行開源,蘋果公司則能夠在一開始就占據(jù)有利位置、從而抵御其它合法競(jìng)爭(zhēng)對(duì)手的出現(xiàn)。
蘋果為何不會(huì)對(duì)Swift進(jìn)行開源: 誰會(huì)想要克隆版本?一臺(tái)iPad的售價(jià)大概在500美元甚至更高。但能夠運(yùn)行Android系統(tǒng)的其它平板在eBay上只要不到100美元,還很難賣得出去。哪家公司的直營(yíng)店里總是排著長(zhǎng)隊(duì),哪家公司的直營(yíng)店里總有客戶等待付款的身影?沒錯(cuò),某些窩在地下室的黑客確實(shí)能夠?qū)wift中的大部分特性進(jìn)行克隆,但他們最終會(huì)發(fā)現(xiàn)這些成果毫無意義、還不如花點(diǎn)心思找一份薪水豐厚的工作。在真正獲得大廠商的資金支持之前,這些克隆方案仍然只能作為技術(shù)能力的體現(xiàn)而非切實(shí)可行的盈利手段。更進(jìn)一步講,在人們排隊(duì)購(gòu)買運(yùn)行著開源Swift代碼的商用硬件設(shè)備之前,這樣的盈利可能性仍然并不存在。
英文鏈接:http://www.networkworld.com/article/2607031/software/7-reasons-apple-should-opensource-swift-and-7-reasons-it-wont.html