知識管理 2:OpenAtrium 的 Features 解決什麼問題?

Usage statistics for Features

不打算寫 OpenAtrium 可以怎麼應用之類的文章了,想瞭解的人可以直接下載評估,發揮您的想像力。

這裡要提的是 Drupal 在開發上的難處,以及 Drupal community 試圖發展的解決方案,或者非 Drupal 專案面臨相同的問題,也可以當借鏡。

類似的解決方案有 Patterns, Database Scripts, Deployment... 等,在 drupal.org 都可找到。

那我到底想說的是什麼?

案例需求:

某個已經在線運作的 live 網站,其中一位版主大大,想說為網站加一個 karma 功能,依會員發表文章的次數,賦與不同級數的分數以及代表圖像。然後要在網頁呈現各註冊會員的 karma 值,能量光棒和 karma 頭銜與圖案。最後,也許會依據 karma 來發展不同的玩法。

實務開發:

  1. 把該站弄回一個副本到開發環境,並 dump 下來該站的數百 G 資料庫 XD
  2. 查看並分析站務結構,擬程式撰寫計劃。
  3. jimmy 支援撰寫 setting 的表單和 karma 計算程式,我 harry 處理撈出資料呈現 karma 能量棒與套版置入現有網站的事務。

我和 jimmy 則以 Git 來管理程式碼分散、合作撰寫功能與版型,直到 jimmy 告一個段落,我檢測 karma 各種臨界值是否正確,填寫後台 setting form,分別有十個等級,每個等級都有極小、大值和 karma 圖像。

就這樣費了一番功夫和時間,並修正一些臭蟲,共同檢視預發行版本後,打算上線。

而問題就在這一段,雖然開發環境是 live 網站的副本,並且為他加上新功能,此時 live 站也在開發期中有新文章、新會員進來,我們不能拿開發好的資料直接蓋掉線上運行的版本啊!這樣做的結果你會發現網站都是舊聞,新會員也消失不見。

怎麼辦?

刻苦一點把相同的事,到 live 站重演一遍,再次到後台重新為 karma 填寫複雜的表單設定,一個一個再上傳 karma avatar,重新跑一遍為每個會員計算點數,清掉快取讓新的網頁樣式渲染出來。

也許經驗老道的 Drupal 開發者,會把預設值寫在 settings.php 或寫死在模組裡面,那這樣的話,版主大大心血來潮希望更改 karma 的分級點數,就無法透過 setting form ui 改變,回頭還是要交給開發者改程式碼,的確不是好方式,同樣的事又要折騰二次才能上線。

很沒效率是嗎?

的確,不過 OpenAtrium 裡面就有用到 features 的解決辦法,例如要加個 simple crm, gallery 之類的功能,只要透過 features 把模組裝上,即可使用。

而上述的案例,則可以把 karma 包裝成 features 的套件模組,交給版主大大線上安裝,裡面也許包含了 cck, views, default values... 等等,隨裝即用,不滿意預設值或 views 設定,也可以自己動手小改一下。

後續發展呢?

版主大大覺得我們開發好給的模組,自己在 live 站上透過 ui 改了滿意,並且用了一段時間之後,覺得要進一步玩 karma 花招?hmm, 這是意料中的事。

沒關係,版主大大只要從 features 介面,匯出線上運作的 karma 模組,也就是會包含線上版的設定值和程式碼的一個壓縮包,再交給開發人員進一步加強功能,弄好後裝回去便成了。

這樣子對網站主人、參與的開發者都好。省掉把副本 co 來 co 去的次數,和重做線上運行網站的設定。

您認為呢?

 

ps. 本文圖片取自 http://drupal.org/project/usage/features ,你也可以看出 drupal 社群是多麼關注這件事。