本文投稿在自由軟體鑄造場電子報第 174 期,花了我8個小時才寫完的文章。不過,DrupalCamp當天的活動更精采,可惜了可惜了,只能給大家看看今年的 Drupal 圖章。
對建置網站的朋友們,Drupal 或許是有點熟悉,又有點陌生的開放原始碼內容管理系統平台 (Content Management System)。雖然 Drupal 得獎無數,雖然 Drupal 在全球數一數二,雖然 Drupal 有超過 7000 個開發者參與其中,但就因為這種又近又遠的關係,往往各方都說好用的東西,到了手上卻又覺得不大順手,找不到這個 CMS 真正好用的理由。不過,我相信看完這篇文章後,諸位應會改觀...
這篇文章的出發點,就是以一個使用 Drupal 建置網站超過 5 年的個人觀點,分享 Drupal 這個 CMS 有什麼特別好用的地方,未來值得你作為公司主要的產品發展方向,甚至值得你一窺 Open Source 社群從事的各類活動,和我們公司為何選擇這個建站工具,甚至深度投入參與社群。
1. Drupal 的社群既深且強
Drupal 模組很多,但仍沒有比 Wordpress 或是 Joomla 的模組數來的多,Drupal 使用者眾多,但卻沒有其他兩者多,但我個人認為,Open Source 的整體精神,比起使用量,更重要的是社群核心支持者的凝聚力和協同合作的力量。Drupal 社群有一種類似 Linux 原生社群的特質,有非常好的內聚力和包容力。社群的開發者之間充滿了公開交流的氣氛,分享出來的模組並不是單一開發者或單一公司的產物,往往是經過社群各 種參與者不斷調整,彼此互相協調之後的成果,並且會隨著時間自然演進、接班、交替。
Drupal 的模組跟模組之間共生共榮,開發者跟開發者之間彼此交流熱絡,協同運作。可想而知,這也是為何每年 DrupalCon 這個世界盛會會有超過 3000 名參加者從世界各地專程前往參與,一同討論 Drupal 最新功能與最新訊息,其實,這些來源皆是因此特殊的文化習性而產生。
2. Drupal 功能無比彈性
Drupal 可以輕易地把各式各樣的內容放在同一個網站,討論區、Blog 和影音中心,甚至是會員機制、小群組機制的整合頁面,對了解 Drupal 的人都只是家常便飯。
但這些僅僅是功能的達成,真正厲害的地方並不在此,而是 Drupal 面對各種內容的核心概念。這樣把內容視為整體的核心概念,創造了 Drupal 無比彈性、歷久不衰的主因。
舉例來說,你曾經面臨過,討論區裡頭的人想要另外加入購物功能,卻沒辦法輕易達到的問題,需要 Hack 模組,大改一翻才能達成嗎?對於大多數的 Open Source CMS 平台來說,各功能間的發展,可能來自於不同的支持廠商、個人開發者,彼此技術知識並無互通,而少有 CMS 的核心,能夠扮演好模組和模組之間「接合的橋樑」。這也使得往往第三方支援的軟體孤軍奮戰作戰,想要 A 開發者的功能,又要 B 開發者的功能,就得慢慢等待少數開發者的支援或自己 Hack。
以 Drupal 打造的網站並無此困擾。熟悉 Drupal 的朋友,可以輕易製作一個商品頁面,囊括討論區的整合、地圖、影音、商品規格資料,甚至讓使用者互動的推噓功能,和社群平台 Facebook 整合,都可在彈指之間達成。
這種彈性,讓網站經營團隊免除了許多後顧之憂,網站經營者常常面臨到隨著業務發展,剛開始和半年後所需的功能不一,卻因為架構問題導致系統開發出 現瓶頸,甚至原來使用的第三方延伸套件的開發廠商不再支援。Drupal 的彈性和內聚力將這種問題最小化,經營者只要有 Drupaller 協助,即可放心規劃與經營網站,不用擔心今年僅規劃商品資訊,在明年就無法加入購物車的功能了。
Drupal 的彈性若是搭配自定欄位的強大模組「CCK」,定義各種資料蒐集的欄位也輕鬆簡單,舉含活動報名資料填寫,到影音相簿、地理資訊的蒐集平台,理解 Drupal 彈性概念的朋友,立刻可從既有工具組出蒐集資料的表單。
不過,資料蒐集、資料結構僅是整個彈性網站的一環,還須搭配網頁呈現端的彈性配置。Drupal 的使用者不能不熟悉 Views 這個超級 SQL 產生器,有了 Views 才可以快速設定出表格、清單、Blog、相簿、圖表、新聞等各種形式的內容呈現頁面或區域。再搭配 Panels 這個頁面區域配置模組,做網站就像拼圖一樣簡單,一塊一塊擺到想要的位置。這些就是 Drupal 的彈性來源。
3. Drupal 與 Web 趨勢結合
很少有 CMS 能夠不斷往新的技術邁進,甚至成為引領技術的潮流,Drupal 的核心在每一個版本的演替,都隨著 Web 的潮流不斷行進。核心的演替,會有拉著第三方模組一起成長的力量。
舉例而言,Drupal 4 演進到 Drupal 5 時,做了個重大的決定,內建嵌入 Jquery 為官方支持的 Javascript Library。在 2006 年那個 Javascript Library 百家爭鳴的時代,Jquery 還只是 1.0 的階段,Drupal 就能夠精準的選擇重要的技術整併,凝聚開發者在 Jquery 力量。
而近期 Drupal 6 到 Drupal 7 的演替,又支持了 RDF 這個熱門的網路資料交換格式。可以想像,如果有百萬個支持 RDF 格式的網站,是否意味 RDF 格式交換資料的時代更有機會來臨?Drupal 便是努力扮演這種與 Web 發展趨勢結合的角色,不遺餘力。
核心的積極,表示也能夠聚集新穎技術的開發者一同共襄盛舉,舉凡各種大型網站應用,如 Memcache、Cassandra 資料庫等等的支持模組相繼出現,而近兩年熱門的 Mobile 支援,Drupal 也出現了將資料結構完整 JSON 化的 API 橋樑。
跟著 Drupal一同成長,就表示你與Web的技術不會脫節,不會落伍。
4. 高效能及可擴展性
有建置過中大型網站(月流量 1000 萬 pv 以上)的朋友,大概能夠想像一個兼具彈性、全功能,又維持極佳程式碼架構的系統,要撐起如此流量一定得有兩把刷子。自行用 Framework 開發,嚴肅的要求每一支程式碼記憶體用量、盡善盡美通常是大流量網站不錯的解決方案,但我相信身為與眾不同的工程師,各位看倌們你們的勞力值得有 更好的工具,推薦擴展性強大的 Drupal 給你認識。
Drupal 的優秀案例不少,如 Economist.com(經濟學人雜誌)這個世界舉足輕重的媒體、如 Ubuntu.com 這個著名的 Open Source 作業系統官網,或是 Mtv.co.uk 等等,都是品牌、品質非常好的網站系統。觀看這些案例,並不是想看他精美的設計、多樣的功能,而是這些案例都代表 Drupal 在大流量網站中表現有多麼出色,通過了層層決策關卡,實際而廣泛的應用在商業領域中。舉例而言,經濟學人雜誌,就包含超過 300 萬註冊會員,3000 萬月瀏覽頁,每分鐘有留言和文章不斷出現的高流量。這個案例在在顯示出,Drupal 在擴展力和負載量有多高,不至於發展到一個階段,就面臨架構問題而必須打掉重來。
能夠應付這樣高流量的網站,其實因為 Drupal 本身具備良好的擴展性 (Scalibility)。從 Web 端支援多台網頁伺服器服務,到 Database 端支援多個資料庫 Master-Slave 的主從架構服務,達到基本伺服器的可擴展性,讓網站不受伺服器資源的限制,可分散服務資源到各伺服器中。除此之外,優秀的快取也支援暫存記憶體、靜態 HTML 網頁快取等等,以減少動態網頁消耗 CPU。最後,別忘了搭配 CDN (Content Delivery Network) 的架構支持,一個完整的大流量網站架構就此而生。
更進一步的利用,Drupal 還有多站系統支援,無論是 multi-site to multi-databse,還是 multi-site to 1 databse,都是 Drupal 核心支援的架構,讓你的服務在發展的途中,只需要少許的技術人員支持,幾乎可以不用擔心擴展性問題。這對一個經營者而言,不是天大的好消息嗎?
5. DrupalTaiwan.org永續經營 ( http://drupaltaiwan.org )
經歷過 Open Source 社群起伏的朋友或許會知道,開放原始碼最怕力量分散,各奔東西,不相回饋,不聞不問。很幸運的,Drupal 在台灣的發展並沒有遇到這種情境。Drupal 台灣社群,從 2006 年至今超過 5 年的時間,進行了為數不少的支持行動,就我所認識參與 Drupal 社群的 Drupaller,大多無私奉獻,不求回饋,彼此互相成長。這些成果在哪裡?舉凡 Drupaltaiwan.org 的討論園地,或是 Drupal 現在的正體中文翻譯,到每月一次的小聚,都顯示 Drupal 在台灣已經有成熟的興趣社群、商業社群、Open Source 社群。
或許有人會問,一個在地社群會有多重要呢?資訊不是看國外的就好了嗎?永續經營跟我又有何關係?試想,今天你玩的系統沒人懂而只有你會,那市場怎會接受你「個人」的喜好呢?市場當然會朝向大家討論度較高的軟體,如果每個人都這麼想,就不會有現在的 Drupal 台灣,也不會有現在的 Drupal.org,我們也不會有好用的,同時也是大家一同貢獻心力而成的 Open Source 軟體。
Drupal 台灣發展至今,成功的從少少 10 個人在台灣玩的小玩具,發展成每年一次,超過 200 人的正式聚會、技術交流和產品發展討論。我們最喜歡為大家創造各種機會,交換心得、交換名片、交換勞力!唯有一起來創造開發的機會,Drupal 才能更加茁壯,而我們也期許自己能永續經營。