蘋果正在試圖殺死Web技術

鏈接:https://dwz.cn/L5RDL9cR

蘋果正在試圖殺死Web技術

這家公司在自己的平臺上為基於 Web 技術的使用設下了重重障礙,希望開發者就此退縮。

用來構建 Web 的編程語言往往會在應用程序中找到自己的立足之地,這在很大程度上歸功於對應的軟件技術。這些軟件允許開發人員在開發支持 Linux、Android、Windows 和 macOS 等操作系統的產品時,“複用”他們為 Web 程序所編寫的代碼。

但是蘋果公司並不喜歡這種 Web 技術的回收再利用方式,它希望 Mac App Store 中塞滿你在其他任何地方都找不到的應用程序,不想讓在各個平臺上都能見到的應用充斥 App Store。隨著最近的政策更改,開發人員向這家公司提交包含 Web 代碼的應用程序也變得更困難。

Mac App Store 已經默默地開始拒絕使用一款流行工具製作的應用程序:Electron 允許開發人員在基於 Web 的代碼的基礎上開發運行在所有平臺上的應用。App Store 中的一些最受歡迎的應用程序(例如 Slack、Spotify、Discord 和 WhatsApp 等)都屬於這一類型。

蘋果正在試圖殺死Web技術

在 Github 上的相關討論中,幾位開發人員表示,他們使用 Electron 構建的應用程序被拒絕了——過去,這些應用還能通過審核——但現在,審核拒絕的同時還給出了說明:這些應用程序“試圖隱藏私有 API 的使用”。這裡的“私有 API“指的是專為蘋果公司內部使用而設計的 API,沒有對第三方開發人員開放授權。人們通常不贊成使用私有 API 來構建面向公眾的應用程序,因為時間一長這些 API 可能被更改或損壞,並且蘋果公司禁止使用它們的應用程序上架。

相關探討:https://github.com/electron/electron/issues/20027

多年來,Electron 一直在使用這些私有 API,過去都沒出什麼問題。這些私有 API 允許開發人員做很多事情,例如大幅改善功耗。相比之下,使用蘋果公司認可的工具實現類似的目標只會讓用戶體驗變得更糟。在大多數情況下,蘋果公司並沒有為想要獲得這些私有 API 所提供功能的開發人員提供真正可行的選擇。

現在,除非 Electron 框架發佈重大更改,否則使用 Electron 構建應用的數千名開發人員已經不太可能為應用發佈更新了。

開發人員可以從自己的網站分發他們的應用程序,要求用戶直接下載它們。但這意味著要放棄一些好處,諸如蘋果公司在 Mac App Store 中提供的自動更新機制和 iCloud 同步之類的功能。而且,這種直接面向消費者的方法也可能很快就被鎖定了,因為蘋果公司發佈了充滿爭議的公證條款,根據這一條款蘋果可能會要求對這些第三方渠道發佈的應用進行審查。

公證條款:https://developer.apple.com/documentation/security/notarizing_your_app_before_distribution

蘋果公司在自己的平臺上阻礙 Web 發展的做法由來已久。在 iOS 上,蘋果公司不允許使用完全獨立的第三方瀏覽器,要求所有應用在渲染基於 Web 的內容時,都必須使用他們的 Safari 瀏覽器。儘管 App Store 中提供了 Chrome 和 Opera 之類的瀏覽器,但它們必須在後臺使用蘋果公司的 Safari 瀏覽器來渲染網頁,不能使用自己的渲染引擎。這意味著蘋果壟斷了 iPhone 和 iPad 用戶訪問 Web 的方式。為了推動開發人員在 iOS 上構建原生應用程序(而不是使用 Web 技術),蘋果公司出於自身利益,無視了其他瀏覽器實現的開放 Web 規範中的許多流行部分。

單獨來看,蘋果公司這些微妙的反競爭做法似乎並不怎麼可怕,但它們連在一起形成了一項明確的戰略。

例如,一種稱為 WebRTC 的技術無需使用額外的軟件即可在 Web 瀏覽器中進行視頻通話。它為 Google Meet 等工具提供了支持。但蘋果公司實現這一規範的速度異常緩慢,還遺漏了一些關鍵功能。當開發者將這一技術嵌入到應用程序中時,它也無法正常工作。

蘋果公司還阻礙了一種新興的標準,即漸進式 Web 應用程序(PWA)——這項技術與 Electron 一樣,允許開發人員為桌面和移動端構建效果類似原生的應用——蘋果的做法是隻實現該標準的一部分,結果讓它與完整標準相距甚遠,使開發者難以依靠。如果用戶能在 Chrome 或 Firefox 中啟動 PWA 應用就不會出現這些問題,但是 iPhone 和 iPad 用戶無法安裝第三方瀏覽器,蘋果公司也關閉了用戶使用基於 PWA 技術的途徑。

開發人員願意使用諸如 Electron 和 PWA 之類的技術,是因為它們加快了跨平臺更新的速度,並且無需使用一系列不同的代碼庫。有人認為這樣會產出質量較低的應用程序,但我認為不用它們的結果就是根本做不出這種跨平臺應用,或者做出的應用程序更新緩慢,因為針對 Windows、Mac 和 Web 平臺單獨維護產品的做法既複雜又昂貴。蘋果公司最近推出了一個競爭性的框架,稱為 Catalyst,這一框架允許製作了 iPad 應用的開發人員將其快速引入 macOS——對專門面向蘋果用戶的開發人員來說,這是一款出色的工具,但對那些跨平臺應用來說沒什麼意義。

單獨來看,蘋果公司這些微妙的反競爭做法似乎並沒什麼可怕的,但它們連在一起形成了一項明確的戰略:給開發人員在蘋果平臺上使用基於 Web 的技術構建應用的做法設下重重障礙,最終逼迫這些開發者退縮。既然 App Store 不接受使用 Electron 構建的應用程序,開發人員可能會找出創新的方法來解決這個問題,但是蘋果公司已經準備玩一場長期的貓鼠遊戲,因為它計劃未來進一步控制平臺上可以運行哪些應用程序。

https://www.macrumors.com/2019/09/03/apple-macos-catalina-notarization-mac-apps/

這些變化可能是以隱私或安全的名義進行的。但現實情況是,當用戶和開發人員都沒有選擇權時,這種名義就顯得微不足道了,因為蘋果公司控制了平臺、瀏覽器引擎和分發渠道。無論你對 Electron 應用程序的質量有何看法,選擇權都是非常重要的。

蘋果對其應用程序生態系統的控制是一種新型的壟斷,對於立法者而言這是很難理解的,而且我們也難以反抗——因為當公司同時控制發行渠道和平臺本身時,根本沒有擺脫這些限制的方法。

我自己是一名從事了多年開發的前端老程序員,辭職目前在做自己的前端私人定製課程,今年年初我花了三個月整理了一份最適合2019年學習的前端學習乾貨,從最基礎到高級的各種框架都有整理,送給每一位前端小夥伴,想要獲取的可以關注我的頭條號並在後臺私信我:前端,即可免費獲取。


分享到:


相關文章: