譯自 http://heyrocker.com/cmi-feature-freeze
我發現新功能凍結的期限已經過去了,正是一個好的時候更新一下大家設定管理大綱 (CMI)的近況了
TL;DR
CMI 的近況是非常好。我為此感到非常的驚喜和自豪,我們百人以上的合作者在過去兩年一起完成的工作。我們已經完成了全部的主要功能開發,沒有遺漏兩年前定下的目標。當然我們還有很多工作,特別是測試和文檔的部分。
Overview
兩年前我們開始的時候,我心中有一個大概的目標的:
- 將各種設定儲存在一個機器可讀的檔案,使其可以使用版本控制系統管理不同服務器環境
- 提供一個 API 處理設定的修改,和一個基本的介面執行這些更新
- 核心完全使用這個系統
- 多語言系統的支持
- 為開發者和使用者提供使用文檔
這看起來很少,但又非常多。現在功能凍結的期限已經過去了,可以看看這些目標的完成度如何
將各種設定儲存在一個機器可讀的檔案
這已經完成了,而且已經完成了一段時間。這個系統自第一個提交 (commit) 之後經過非常多的修改,包括一次大型的結構修改,由 XML 改為使用 YAML。但對外的 API 就一直幾乎沒有改變過。
核心的更新和介面
雖然 API 的接口很早已經定下了,但一些核心最複雜的部分還沒有完成,包括欄位和內容類型 (fields and node types) 還沒有非常完整地完成測試。這其中有一個可能令這個測試會帶來更多有關依賴關係的問題,有需要的話我們會處理。除了這個以外,還有一些需要幫忙和參與的:
介面在上年的大一月的 BADCamp 完成了,那是一個很基本的介面,但它給用戶看到有那些設定已經準備好匯入,可以一個按鈕就完成匯入。另外的一些條目正在進行中,目的是令介面整合更多功能。
核心完全使用設定系統
這個工作其實在上年 DrupalCon Denver 的時候已經開展,而且進度很好。其中一個比較大的問題是使用新的 ConfigEntity 處理比較 “即時” 的設定例如 Views, Fields, or Roles。一般的轉換圍繞三個區域:
- 轉換 system_settings_form 到 CMI ﹣ 還餘下兩個
- 轉換全部 variables 到 config and state systems ﹣ 核心中的 variable_get 已經少於 150 個了!其餘的大部分都會和 field/node 系統一齊處理
- 轉換設定上的資料到 ConfigEntity ﹣ 已經完成了很多工作,但這仍然是最大的未完成部分
這些是特別需要留意的:
我個已經完成了 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 功能。所以提供一個完整的多環境發佈的基本的條件已經齊備,縱使其中一些部分不會完全包含在核心組件之中,但我覺得這不是一個問題。
參與其中
整合的預計期限是 2013年7月1日。那之前會有三個大型的 sprints:
- 全球性的Drupal sprint 週未,三月九,十日
- DrupalCon Portland 前後的兩個週未的 sprint,五月 18-19,24-26
- Drupal Dev Days Dublin 之前的整個星期,六月 24-27
感謝贊助
值得一提的是,我的工作都是由 ChipIn 的贊助者捐助的,還有以下的公司:
AcquiaRiot GamesBluehostDennis PublishingPantheonWebEnabledReload.dkAnnertechComm-press GmbHUndpaul.de
感謝他們的支持,我會在 post-feature-freeze 之後再更新贊助和進度的
當然還要感謝每一個參與和提交代碼的貢獻者。將這個計劃帶到核心絕對是一個嘔心瀝血的工作,這絕不容易但我們已經完全得很好了。我為 CMI 最終整合到核心感到非常興奮。