新提案呼籲貢獻者停止將 Gutenberg 的實驗性 API 合併到 WordPress 核心
已發表: 2022-08-11將 Gutenberg 的實驗性 API 合併到 WordPress 核心中的做法可能很快就會結束。 由 Automattic 贊助的貢獻者 Adam Zielinski 發布的一項新提案呼籲貢獻者在將 API 合併到核心之前穩定它們。
多年來,從 Gutenberg 插件中合併了大約 280 個實驗性 API,Zielinski 在 4 月份為該問題打開的票中對其進行了審核。 在平衡快速移動的驅動力與迭代編輯器與 WordPress 對向後兼容性的承諾之間,實驗性 API 的數量變得難以為繼,現在正在積極重新考慮將它們合併到核心中的做法。
正式地,實驗性 API 被標記為阻止第三方使用,因為它們預計會改變。 在實踐中,為塊編輯器構建的人無論如何都在使用它們,因為它們是核心,並且他們希望擴展這些 API 啟用的功能。
“插件和主題作者被迫依賴__experimental
功能,這些功能可能隨時以向後不兼容的方式被刪除或更改,”Zielinski 說,這與過去幾年許多開發人員對該項目的沮喪和擔憂相呼應。 “這是一個嚴重的維護負擔。 每個新的 Gutenberg/WordPress 版本都意味著潛在的重大變化。”
WordPress 核心提交者 Peter Wilson 對這張票發表了評論,稱他贊成將實驗性 API 限制在最前沿的產品上。 他強調了對這種變化的需求,並列舉了這些核心實驗性 API 對生態系統產生的一系列負面影響:
- 核心提交者不願意使用某些庫特性來簡化核心任務,因為他們不信任可靠性
- 開發人員不再升級 WP 客戶端站點。 作為多年來一直努力保持向後兼容性的核心提交者,這讓我感到失望。 作為安全團隊成員,這非常令人擔憂
- 開發人員決定在主題和插件中包含包的副本,而不是依賴
wp.*
全局變量。 從安全角度來看,這再次讓我感到擔憂,但它也大大增加了 JavaScript 有效負載,而不是保持向後兼容性- 關於次要版本的向後兼容性中斷的報告:“您不會期望 5.9.1 版本會破壞塊編輯器之外我們網站中的一堆圖像的響應能力”
- 開發人員考慮從不使用核心塊,因為它們太不穩定了:“我停止使用/擴展核心塊,因為它們變化太多,我一直在使用 ACF 塊,所以我至少知道我可以製作不會休息。 誠然 UI 不如核心方塊好,但我會在任何時候破壞方塊時保持穩定性。”
Gutenberg 插件旨在用作功能插件,其中預計會破壞向後兼容性,而貢獻者會在將功能合併到核心之前對其進行潤色。 回到這種方法的根源,減少編輯器的實驗性,是這個提議的核心。
“版本之間的不穩定性已經開始疏遠一些大塊編輯器最大的外部擁護者,”威爾遜說。
保持這種程度的不穩定性可能會阻止人們在 WordPress 上進行構建,從而將他們推向以不同方式管理的其他更直接的項目。 依賴實驗性 API 的需要可能會阻止開發人員構建更多產品,從而減緩塊編輯器的採用。
“作為目前使用許多__experimental
API 的插件作者,我希望看到這些 API 穩定下來,”WP Engine 贊助的貢獻者 Nick Diego 說。 “大多數提供關鍵功能,但構建依賴於__experimental
API 的產品總是有點令人不安。 只要這個過程非常透明,廣為人知,並且我們為插件/主題作者提供瞭如何遷移到穩定版本的指南,那麼我喜歡這個舉措。”

經過幾個月的討論,Zielinski 將貢獻者的擔憂提煉到 Make WordPress Core 博客上提出的行動計劃中。
該提案表明,大多數已經合併到核心中的現有實驗性 API 將獲得一個穩定的別名。
“它將保持向後兼容性,並且不會顯著影響捆綁包的大小,”Zielinski 說。 “有些人需要不同的治療; 讓我們逐案討論。” 他還建議貢獻者考慮是否需要刪除已經在核心中的現有實驗性 API。 他預計不會出現很多這種情況,但建議使用聯繫插件作者、使用軟棄用和發布核心帖子的既定做法。
“我在這裡還看到了兩件事:在 API 設計期間使用和濫用實驗性 API(通常在 Gutenberg 插件中使用和測試)以及在滿足設計標準時缺乏穩定它們的勤奮過程,”古騰堡首席建築師馬蒂亞斯文圖拉評論了原始票。 “那些被認為是事實上的公眾是那些已經以穩定的形式存在於許多版本中的那些,儘管它們有命名法。”
為了保持 WordPress 兌現其向後兼容性承諾的能力,該提案建議將實驗性 API 限制在 Gutenberg 插件中,並且永遠不要合併到核心中。 在穩定功能依賴於實驗性 API 的情況下,Zielinski 確定了一個簡單的答案:
“那麼它實際上並不穩定。 讓我們先穩定依賴關係。”
這本質上是一種新的前進方式,應該會增加對 WordPress 的 API 和更新的穩定性和信心,但它確實有一些缺點。
用戶和貢獻者可以預期 Gutenberg 功能可能會更慢地合併到核心中,因為當它們在主要版本中達到黃金時間分發時,他們不能依賴實驗性 API。 Zielinski 還指出,一旦這些 API 交付並在數百萬個 WordPress 網站上使用,貢獻者也可能難以重構這些 API。
到目前為止,該提案已經獲得了壓倒性的積極支持,因為許多人認為這些 API 在仍處於試驗階段的時候,根本就不應該成為核心。
“我非常贊成這種方法,”WordPress 開發人員 Mark Root-Wiley 說。 “我構建了自定義主題並有一些簡單的插件。 對於這兩者,我發現自己經常被迫處理實驗性 API,並且當核心功能被放入只能通過實驗性 API 關閉、調整或擴展時,很難跟上它們。”
WordPress 撰稿人 Dovid Levine 評論了該提案:“恢復這種核心穩定性將大大有助於重新獲得一些開發者的善意。”
對該提案發表評論的截止日期是 9 月 7 日,這將在 WordPress 6.1 Beta 1 發布前三週結束討論。 這讓貢獻者有時間在下一個主要版本之前更深入地審核實驗性 API,如果他們就將它們限制為 Gutenberg 插件達成共識。