一向搞「小圈圈」的蘋果為什麼選擇將 Swift 開源?

作者 | 發布日期 2015 年 12 月 08 日 9:14 | 分類 Apple , 軟體、系統 follow us in feedly

蘋果在今年 6 月的 WWDC 大會上推出了 Swift2.0,並宣布將於今年年底前開放源程式碼。而蘋果也在近日正式將 Swift 語言轉成了開源程式語言,並將其放到程式碼託管網站 Github 中以供更多開發者共同開發。蘋果公司高級副總裁克雷格·費德里希最近接受了外媒的採訪,對 Swift 開源這一行為進行說明。



開源的基礎

據悉,Swift 的程式語言將在 Apache 2.0 許可的基礎上推出,Apache 2.0 也是微軟去年在 .NET 框架開源時所使用的許可,軟體開發者將可以對這款新程式語言根據自己的需要進行修改。該程式碼將被放在 GitHub 上託管,其中包括編譯器、LLDB 調試器以及 REPL 命令行環境、標準核心庫以及程式碼配套工程等。在 Swift(包括開源部份)中新加入了 Swift 軟體包管理器,該管理器將做為用於儲存 Swift 模組的早期專案。

雖然其中的絕大部份都符合 Apache 許可標準,但費德里希表示,蘋果還提供了一種更高的許可運行機制——如果開發者在 Swift 上創建了程式碼,而且其中的部份程式碼是從 Swift 庫中調用的話,開發者將不必再提供該程式碼的來源。

蘋果的工程師正在著手把 Swift 改為使用 GitHub repos 來以開源的方式開發語言。

「Swift 將在 GitHub 上完成開源工作,」 費德里希說,「Swift 團隊正在加緊修改的工作進程,其中也包括對 Swift 3.0 的開發,所有的工作進展都會在 GitHub 上開放。」

所以,Swift 3.0 將不會再像今年 6 月公布 Swift 2.0 那樣在 WWDC 上得到大量關注,3.0 將不會在 WWDC 2016 上出現,開發者更不會得到 Xcode 上的 beta 版。相對的,開發者能夠在 WWDC 之前就拿到最新版的 Swift 語言的變化,體驗到下一代 Swift 的新變化。

儘管程式碼將在 GitHub 上提供,但 Swift 社區同樣也是 Swift.org 的家。在這裡,開發者將能夠提交 bug 並使用 bug 追蹤系統,也能夠使用郵件列表或是與 Swift 工程的部落格(蘋果官方部落格)進行交流,獲取社區指南、Swift 教程文檔或是開發和 API 設計指南等。換句話說,你所能想到的任何開源程式語言社區中所提供的服務這裡應有盡有。

 

將不僅限於支援 OS X 和 Linux 平台

蘋果官方聲稱 Swift 將不僅能夠支持蘋果自家的平台還能夠支援 Linux,而這正像蘋果在 6 月份的時候所承諾的那樣。這已經涵蓋了大量的 Swift 開發者(他們通常都會運行 OS X 作業系統)以及大部份的大眾開發者(他們使用 Linux 的頻率要遠高於一般用戶)。蘋果的 Linux 工具包括全新的封包管理器、LLDB 調試器以及 REPL 命令行環境。

至於 Windows 等其他平台,如果需求較多的話,至少在一開始蘋果將會依靠社群來提供支持。

Swift_leiphone120702

「(對於 Windows 平台的支援)在 Swift 開源的初版中,這並不是我們所首要考慮的問題,」 費德里希說,「我們認為對 Linux 和我們自家平台的支持才能夠為初版打下一個很好的基礎。但是實際上,我們已經具備了把 Swift 開源移植到其他平台的能力,LLVM、Clang 以及 LLDB 這些 Swift 的基礎技術,其實已經完全可以移植到 Windows 平台上。我認為這是可以預見的——社群中的某個人——無論是微軟的領導者還是其他的人,早晚都會這樣去做。」

 

為何開源?

Swift 開源蘋果公司主要有兩個目的。第一個目的就是讓 Swift 程式語言更加通用、更加多樣化——除了蘋果平台的應用,開發者也可以在其他項目中使用這個程式語言。

另外蘋果也非常有遠見,很有野心。費德里希表示:「我們認為未來 20 年 Swift 將成為撰寫程式的標準語言。我們認為它將成為未來主要的程式語言之一。」

「一些開發者,包括 IBM 的企業開發者很早之前就開始在 Swift 中開發他們的行動應用程式,他們就希望能夠將開發者開發的東西、還有一些程式碼等部署在雲端中。」 費德里希說,「而我們認為要想在這方面給他們提供支援的話,最好的辦法就是開源。」

Swift_leiphone120703

而蘋果的另一個目的則與教育相關:當開發者花時間來學習 Swift 時(或者教育工作者教授 Swift 使用方法時),蘋果希望這些技術能夠為更多人所用。

「我們與教育工作者合作,很多教授都有意教授 Swift,因為它是一種富有表現力的語言,能夠引入各種程式撰寫概念。Swift 開源能夠讓教育工作者盡快地將其整合,讓它成為核心課程的一部份。」

在今年 6 月份,蘋果向開發者了解他們過去一年使用 Swift 的體驗時,他們就發現 Swift 的可傳授性強是它最大的賣點。Swift 不僅能夠用於交流程式撰寫創意,而且還能夠將它的相關知識利用到更多場合。

「當你第一次學習時,通常會出現的問題是:你的程式碼是否被編譯過。而我喜歡 Swift 的一點就是,在某些情況下,你根本不用去想這些事情,直接輸入程式碼就好。希望這將有助於更好地理解正在發生的事情,不再讓人感到頭疼。」——iOS 開發者,App Camp 教師萊斯利·貝克

雖然開源後給開發者帶來了諸多便利,不過遺憾的是,根據 Swift.org 中的表述,開發者在把應用程式提交給蘋果的應用程式商店時,仍需要在 Mac 上使用 Xcode。

 

開源會對程式語言帶來什麼影響?

在 Swift 開源並在此基礎上開發新版本的同時,不但能夠使開發人員更容易地看到蘋果公司在做什麼,同樣也使他們能夠更容易直接對該項目做出貢獻。蘋果表示,從 Swift 1.0 到 2.0,開發者的回饋為開發工作做出了相當大的貢獻。但是同樣的,至少從理論上講,公司將不再成為 Swift 語言的唯一仲裁者——開發者可以提交引入請求。Swift.org 概述中也提到了當開發人員要提出修改時的工作流程。

「如果你注意到我們的 Swift 2.0 的語言特性,你就會發現在錯誤處理、保護資訊、可用性和控制等,均基於開發者使用 Swift 來開發應用的對話上。我們認為,Swift 開源後將獲得進一步發展,這將有利於進一步深化互動。」

Swift_leiphone120704

Swift 雖然只是一個很「年輕」的語言,但是自問世以來卻一直廣受歡迎。而這也使得試圖開發和維護的程式碼的開發人員產生了小小的挫敗感。Swift 1.x 在半年甚至一年前所創建的程式碼,可能也不會在今天的 Xcode 的最新版本中編譯,所以如果有問題的話蘋果肯定是知道的。

「在為開發者提供源發展工具方面,我們是非常開放的。所以如果開發者在 Swift 中撰寫程式,而我們在不斷發展語言的過程中,我們也會給他們提供適合的工具來幫他們發展程式碼。」

不過蘋果公司也在計劃解決更大的問題,如今有越來越多的開發者直接貢獻於該語言的發展,蘋果就更需要解決這個問題。蘋果計劃在 Swift 3.0 中進一步完善源相容特性。

 

Swift 會對 Objective-C 產生什麼影響?

對於 Objective-C,Swift 的開源並沒有改變其在蘋果的生態系統中的位置。它已經存在好幾年了,它仍然被用來編寫蘋果的平台上運行的諸多應用程式(包括蘋果自己的),這個數字截至目前仍在持續增加,因為這的確是有必要的。但 Swift 顯然是 Objective-C 未來的發展方向,所以蘋果仍然希望開發者可以用 Swift 來啟動他們的新專案。

「Objective-C 將不會就此消失。我們還是非常喜歡 Objective-C 這種語言,我們還需要依賴 Objective-C,在蘋果公司有很多工作都需要透過 Objective-C來完成。我們會繼續支援 Objective-C,繼續完善這種語言,以適應這個不斷變化的世界。不過對於即將進入我們的平台,想要開發者應用的開發者,我們認為 Swift 更適合他們。我們覺得從 Swift 入手是非常正確的。但是在可預見的未來,我們會繼續維護、完善和支持 Objective-C 。」

Swift_leiphone120705

開發者們在談到 Swift 和 Objective-C 的使用情況時通常都會這麼說。有些人堅持使用 Objective-C,因為他們已經熟悉該語言,或是因為他們不希望混合使用 Objective-C 程式碼和 Swift 程式碼,但越來越多的消息顯示,無論是新專案還是老專案,新數據塊都在逐漸被 Swift 程式碼所取代。

似乎蘋果未來將繼續為 Objective-C 提供支援,但蘋果何時會停止支援目前並沒有一個確切的消息,同樣也沒有人會想要被打個措手不及。Swift 的日益成熟、Swift 3.0 所承諾的程式碼相容性、開源版本更加廣泛的應用場景都旨在推動開發者更為舒服的過渡到 Swift 陣營。

(本文由 雷鋒網 授權轉載) 

發表迴響