Revision of Drupal 8 WSCCI update from Mon, 2013-03-11 14:32

翻譯自 http://groups.drupal.org/node/286108

Drupal 8 的功能凍結的日子已經到了,兩年間無數人們的努力之後,這正是時候停一停,談一談 Web Services and Context Core Initiative (WSCCI) ,還有看一看餘下的工作。

先總結:太扯了,我們已經完成了這麼多!太扯了,我們還有那麼多工作!

Drupal 8 的第一年我們沒有太多的新功能或者超凡的改變。我們修補了很多臭蟲,做了很多地基的工作,但最重的擔子要等到2012年2月才到達。那就是決定完全使用 Symfony2 的Components 作為 Drupal 8 的基本的 pipeline。這是一個多年來 Drupal 最大和最重要的決定,而且我相信完全是一個正確的決定。

直到現在的工作

WSCCI 基本上分成了 SCOTCH 和 WSCCI ,還有 WSCCI rebooted。也即是說過去一年的完成的工作有:

  1. 使用 Symfony2 HttpKernel component 和 model 處理請求
  2. 重寫 routing (路由) 系統,脫離自 menus
  3. 全新的 routing 系統以支持基於路徑路由 (routing by path), HTTP 方法,HTTP vs HTTPS,基本的 mime-based 路由,還有支持第三方的插件。這是一個劃時代的進化,帶來更多的可能性
  4. 全新的 routing 系統可以抽換成基於 non-SQL 的後台
  5. 全新的,更彈性的存取權限管理,支持一個路由有多個存取檢查點
  6. 新的串列化 (serialization)系統,可以輸出任何 entity 到一個標準的格式,例如 Atom, JSON, 或 HAL,支持現有的任何 entity,欄位組合
  7. 新的 rest.module,為任一 entity 對象提供一個 RESTful 存取方式
  8. REST/serialization 支持 Views,令 views 的結果變成一個串列化的資源
  9. Guzzle 加到 core,一個完全支持 HTTP 1.1 的客戶端,比現在的 drupal_http_request()更強大和有彈性

雖然不是 WSCCI 的一部份,但我們對 Drupal 的影響很深遠,重組很多核心系統到整理好的新服務,帶來一個新的相依性容器 (Dependency Injection Container) 從而推動更加可測試的代碼,還有很多一般的 API 改進。側面的影響是,核心會更加模組化和更容易抽換核心的某些部份!

這當中有一些很久之前的功能請求,這些改變都是巨大的,觸及更遠的。Drupal 8 會是一個跨媒界 (Hypermedia) 的服務器,加上其他 Drupal 8 的工作,和 Drupal 作為一個 CMS 的歷史,我們看到一個巨大的可見未來。

等一下,是誰那麼神?

有很多人 involved 到 WSCCI 的工作,我不可能列出每一個人的名字,因為那太花時間了,但我想在此特別提到這些人:

當然還有 Kat Bailey,從 Drupal's bootstrap pipeline 的深湚中帶大家回到水面。

我也想提一下 Acquia 一直為 Klaus 和 Lin 提供經濟上的幫助去為串列化和 REST 模組的工作了數個月。沒有他的話,我們可能會有一個過於強大的路由系統而其中大部份都沒有用到。但這個工作還沒有完成,所以如果你覺得資助他們兩個令 Drupal 8 成為一個一流的 REST server 會幫助到你的話,他們現在正在找更多的資助資源去支持這個工作。

太好了,我們已經完成了?

呀。。還稱不上。過渡 Drupal 到一個新的基礎不是一年可以完成的工作。我們建好了地基,乾了水泥,埋了水管,裝了窗。那是一個大工程,但還有內部裝修,傢俱等的工作要完成。

也即是說,是時候過渡 Drupal 到 Drupal 8 了

WSCCI 團隊每個星期都在 IRC,星期二中午 US 東部時間在 #Drupal-WSCCI。如果你想參加,這是一個好的開始。我們的項目經理,Ashleigh Thevenet 會經常更新最新的重要單元。重要又影響闊的單元也會出現在核心 Initiatives 頁面

  1. 繼續完成 Routes 和 Menus的分離工作。我們已經開始了這個工作,餘下的部分我們需要其他人的幫忙. We have an initial way forward that needs people to help with it, but will need to figure out how to go the rest of the way.
    Fully implement HAL as our preferred format for Hypermedia resources.
    Properly handle Entity References when importing an entity via REST, which would enable full round-tripping and therefore REST-based Deploy.module-like functionality. (All together now, "Oooo...")
    Move our session handling system over to Symfony's, so we can eliminate tons of redundant code.
    Finish the migration to a UrlGenerator, which unifies all of our outgoing-path logic into a single flexible, cachable, pluggable pipeline.
    Finish porting our outgoing requests from drupal_http_request() to Guzzle.
    The big one: Merge page caching and block caching to use HTTP caching and ESI, based on the new Symfony fragment pipeline that was developed in a large part in response to Drupal's needs.

And finally... move all of our page callbacks and routes over to the new routing system as controller classes. This is the most easily crowdsourced part, but we need to complete the first point above before we can really pounce on it.

So no, we're not done. Not by a long shot.

OK, so what's this got to do with me?

Everything! Drupal 8 is poised to kick ass. But it's not going to kick ass unless we close the deal. We need your help to help close the deal.

Come by the WSCCI channel any time to get up to speed. We'll also be working on documentation soon for converting page callbacks to controllers (stay tuned). And don't forget that there's a massive world-wide sprint coming up next weekend! Is there one in your area? Are you going to it? You should be. This is a great opportunity to get involved in core, and in WSCCI specifically. Several WSCCI regulars will be available from their home cities if you need help.

If you're coming to DrupalCon Portland (you are, aren't you?), there are also going to be pre- and post-conference sprints in which WSCCI is participating. Want to get your Drupal on for even longer? Sign up for Portland sprinting and let's crank out as many patches as we can!

Drupal 8 ain't finished until it's finished. Let's get stuff done.

Google