Revision of Drupal 8 CMI 設定管理 from Sun, 2013-03-17 23:38

譯自 http://heyrocker.com/cmi-feature-freeze

我發現新功能凍結的期限已經過去了,正是一個好的時候更新一下大家設定管理大綱 (CMI)的近況了
TL;DR
CMI 的近況是非常好。我為此感到非常的驚喜和自豪,我們百人以上的合作者在過去兩年一起完成的工作。我們已經完成了全部的主要功能開發,沒有遺漏兩年前定下的目標。當然我們還有很多工作,特別是測試和文檔的部分。

Overview
兩年前我們開始的時候,我心中有一個大概的目標的:

  • 將各種設定儲存在一個機器可讀的檔案,使其可以使用版本控制系統管理不同服務器環境
  • 提供一個 API 處理設定的修改,和一個基本的介面執行這些更新
  • 核心完全使用這個系統
  • 多語言系統的支持
  • 為開發者和使用者提供使用文檔

這看起來很少,但又非常多。現在功能凍結的期限已經過去了,可以看看這些目標的完成度如何

將各種設定儲存在一個機器可讀的檔案
這已經完成了,而且已經完成了一段時間。這個系統自第一個提交 (commit) 之後經過非常多的修改,包括一次大型的結構修改,由 XML 改為使用 YAML。但對外的 API 就一直幾乎沒有改變過。

核心的更新和介面
雖然 API 的接口很早已經定下了,但一些核心最複雜的部分還沒有完成,包括欄位和內容類型 (fields and node types) 還沒有非常完整地完成測試。這其中有一個可能令這個測試會帶來更多有關依賴關係的問題,有需要的話我們會處理。除了這個以外,還有一些需要幫忙和參與的:

  • 實現重新命名
  • 實現 hook_config_validate()
  • 重构設定的匯入和同步功能

介面在上年的大一月的 BADCamp 完成了,那是一個很基本的介面,但它給用戶看到有那些設定已經準備好匯入,可以一個按鈕就完成匯入。另外的一些條目正在進行中,目的是令介面整合更多功能。

  • 加入 Diff 的功能
  • 當更新會覆蓋本機設定的時候警告用戶

核心完全使用設定系統
這個工作其實在上年 DrupalCon Denver 的時候已經開展,而且進度很好。其中一個比較大的問題是使用新的 ConfigEntity 處理比較 “即時” 的設定例如 Views, Fields, or Roles。一般的轉換圍繞三個區域:

  • 轉換 system_settings_form 到 CMI ﹣ 還餘下兩個
  • 轉換全部 variables 到 config and state systems ﹣ 核心中的 variable_get 已經少於 150 個了!其餘的大部分都會和 field/node 系統一齊處理
  • 轉換設定上的資料到 ConfigEntity ﹣ 已經完成了很多工作,但這仍然是最大的未完成部分

這些是特別需要留意的:

  • 轉換 Field API to CMI
  • 轉換 node/content types to CMI
  • 轉換 file_public_path to CMI

我個已經完成了 80﹪的核心轉換,我覺得非常自豪和滿意。特別一提,Views 自從第一日提交到核心便已經完全使用 CMI

多語言和翻譯
這是整個 CMI 中最困難的部分。我們花了很多時間去找出一個可行的方案,而代碼花了更多時間才提交。但因為時間的問題,其中一些功能會對 D8MI 幫助很大的功能,例如管理設定的整合等,都放棄了。但現在看來我們差不多囡完成了。

加入了 context 系統令設定可以基於 context 修改,例如語言,或者 Domain Access
一個設定的 schema 系統提供可翻譯的設定。這個正在進行中,可以到 http://drupal.org/node/1910624 追蹤和參與
設定的 schema和 locale 模組的整合, 進行中 (http://drupal.org/node/1905152)

文檔
當然,這個部分通常都留到最後。但現在正是時候認真的開展這個工作了。我們有一個為開發者而設的 handbook 頁面,但它已經嚴重過時了。但由 Gábor 編寫的 schema and context 就完成度很高。
除了技術文檔,我們也需要一個一般使用者的文檔或者使用手冊,針對簡單使用和進階使用。我希望有經驗的技術作家可以帶領這個工作,所以如果你知道誰有興趣的話,請聯繫一下

進階題目
現在有一個激烈的討論有關模組安裝的時候設定的處理,和一個基本的問題,“誰擁有這個設定檔?” 其中一個經歷例子是 node.module 為 Drupal 主頁提供一個頁面 (View) ,這究竟是 node 還是 views 的設定?如果 node 卸除了,那個 views 怎麼辦?這個問題的詳細討論 (http://drupal.org/node/1776830) 這是餘下的一個最大的結構問題。現在我們是暫停了,直到我們為卸除的模組的處理定案為止 (http://drupal.org/node/1199946)

  • url 別名設定,包括一些關於何為設定何為內容的討論
  • 還有一些關於內容發佈,CMI 的討論
  • UUIDs 現在是每一個 entity 的一部分,令開發環境和上線環境之間可以連接起來,不用理會那連續遞增的 ID
  • 核心可以交互串列化冖後的 Entities

核心通過 REST 模組,也會支持基本的 CRUD 功能。所以提供一個完整的多環境發佈的基本的條件已經齊備。
There are even basic web services for CRUD functionality in core through the REST module! So the basic building blogs for a variety of solid content staging solutions are in place, although those solutions will have to live in contrib, which frankly I think is fine.
Getting involved
The planned deadline for the integration phase (when all APIs are frozen and all conversions are complete) is July 1st 2013. There are three big sprints until then that we plan to use to boost our standing (please come and sign up for these):
• Drupal sprint weekend, March 9th and 10th all around the globe
• Sprints on the weekends both before and after DrupalCon Portland, May 18-19th and 24-26th
• Sprints all week before Drupal Dev Days Dublin, June 24-27th
Thank you to my sponsors
As a reminder, my time on this work is sponsored by the individual donations from ChipIn on my site, as well as the generosity of donations from the following companies:
Acquia
Riot Games
Bluehost
Dennis Publishing
Pantheon
WebEnabled
Reload.dk
Annertech
Comm-press GmbH
Undpaul.de
Thank you all for your support. I will have an update on funding and work on CMI post-feature-freeze in a followup post in the coming days.
And of course THANK YOU TO EVERYONE WHO HAS CONTRIBUTED TO THE SYSTEM. Getting this implemented into core has taken a great deal of blood, sweat and even tears to get done. It has not been easy but we have come so far. I am really excited to see CMI get pushed through these last phases of the core cycle.

Google