文/張文正
Drupal的過去、現(xiàn)在以及未來
文/張文正
“毛坯房”Drupal雖然不能“拎包入住”,但比WordPress和Joomla的優(yōu)勢在于提供了強(qiáng)大得多的可配置性和開發(fā)框架。
Drupal是什么及其特點(diǎn)
Drupal是一款基于PHP的開源內(nèi)容管理系統(tǒng)和開發(fā)框架;多次榮獲“全球最佳內(nèi)容管理系統(tǒng)”評(píng)比大獎(jiǎng);基于GPL授權(quán),免費(fèi)商用不侵權(quán);典型案例有美國白宮、法國中央政府、英國政府OpenData、紐約時(shí)報(bào)、索尼音樂、哈佛大學(xué)等。
借助于蓋房子的比方和一些流行的開發(fā)框架和內(nèi)容管理系統(tǒng)的對比,我們能更直觀清楚地了解Drupal。如表1。
表1 開源開發(fā)框架對比
該表中最底下一層和Drupal無可比性。主要來看Drupal和上下相鄰兩層的對比。
“毛坯房”Drupal雖然不能“拎包入住”,但比WordPress和Joomla的優(yōu)勢在于提供了強(qiáng)大得多的可配置性和開發(fā)框架,各個(gè)功能插件除了能夠充分利用核心提供的框架之外,之間還能夠互相調(diào)用。WordPress和Joomla缺乏這一特性,“精裝房”定型的比較死,無法應(yīng)用于對擴(kuò)展性要求高的中大型解決方案,特別是Joomla社區(qū)的開源不徹底,漸有沒落之勢。Drupal比WordPress的劣勢在于學(xué)習(xí)曲線比較陡,難以很快上手。
Drupal比Java play等快速開發(fā)框架的優(yōu)勢在于其提供了相當(dāng)多的開箱即用的功能,尤其是擁有極多的第三方貢獻(xiàn)的功能模塊,減少了項(xiàng)目中定制開發(fā)工作量,降低了開發(fā)和維護(hù)成本。當(dāng)然,劣勢就在于“毛坯房”沒有“預(yù)制件”靈活。但值得一提的是:現(xiàn)在已處于beta階段的Drupal 8即基于流行的PHP的快速開發(fā)框架Symfony開發(fā)的,這進(jìn)一步增強(qiáng)了Drupal 8的開發(fā)框架特性,其他Symfony的功能包可以不加修改或小幅修改后就能供Drupal使用。
Drupal相比同類系統(tǒng)的另一個(gè)很大的特點(diǎn)就是軟件工程嚴(yán)謹(jǐn)性非常高,有編碼標(biāo)準(zhǔn)、單元測試、代碼審查、安全評(píng)估、Bug提交、補(bǔ)丁提交、版本管理、文檔手冊、產(chǎn)品生命周期管理等一系列規(guī)范的流程,且大家都可以參與其中,而非僅僅是功能模塊的作者,這樣也促成了極為活躍的社區(qū)參與和支持,形成了良性循環(huán)。這對于開源軟件保持生命力最為重要。
Field-able entity
Entity可以近似理解為以下二者的混合:面向?qū)ο箝_發(fā)中的抽象類和數(shù)據(jù)庫建模E-R圖中的實(shí)體。Entity是個(gè)抽象的概念,每種Entity可以擁有各種不同類型的字段(Field)和屬性(Property)。其中:Entity的字段類似于數(shù)據(jù)庫的字段,但是個(gè)超集,更側(cè)重于功能應(yīng)用,且可自由增刪Entity的字段,即所謂Field-able entity,這一特性奠定了Drupal遠(yuǎn)超同類系統(tǒng)的靈活性的基石;而屬性一般是在創(chuàng)建Entity時(shí)就定義好,用戶不可增刪,如:創(chuàng)建時(shí)間、作者等。另外,有個(gè)極為重要的字段Entity reference,類似于數(shù)據(jù)庫設(shè)計(jì)中的主外鍵關(guān)系,實(shí)現(xiàn)了Entity之間的相互關(guān)聯(lián)。
Views
Views主要是用來呈現(xiàn)展示Entity的,可理解為數(shù)據(jù)庫視圖和HTML模板的結(jié)合,它調(diào)用Drupal的數(shù)據(jù)庫抽象層讀取數(shù)據(jù)并使用各種格式將數(shù)據(jù)渲染出來,實(shí)現(xiàn)了后臺(tái)數(shù)據(jù)和前臺(tái)展示的解耦。這些渲染格式有日歷、網(wǎng)格、幻燈片、瀑布流、360度全景圖、時(shí)間線、Word文檔、Excel表格、JSON、XML等。Views有個(gè)上下文參數(shù),可以根據(jù)當(dāng)前網(wǎng)址提供動(dòng)態(tài)查詢參數(shù),實(shí)現(xiàn)了高級(jí)的動(dòng)態(tài)(dynamic)內(nèi)容顯示。
Services
Services用于對外暴露調(diào)用接口,提供了最通用的、最易跨異構(gòu)環(huán)境的HTTP RESTful接口(也提供了其他常用接口),提供了JSON/XML等多種常用數(shù)據(jù)格式。且有擴(kuò)展功能模塊用于調(diào)用外部接口,實(shí)現(xiàn)了系統(tǒng)內(nèi)外互操作。這對于重視系統(tǒng)開放、資源共享的今天具有不言而喻的重大意義。
Rules
Rules用于以下場景:當(dāng)發(fā)生某個(gè)(些)事件→滿足某個(gè)(些)條件→執(zhí)行某個(gè)(些)操作。這為設(shè)計(jì)業(yè)務(wù)流程提供了很大的便利。
以上幾個(gè)概念(功能模塊)都是基于Entity互相調(diào)用的,且每個(gè)功能點(diǎn)自身也是插件式架構(gòu),這為構(gòu)建靈活復(fù)雜、可擴(kuò)展的業(yè)務(wù)應(yīng)用提供了無窮的想象力。同時(shí),Drupal成熟的多語言機(jī)制、SEO、響應(yīng)式主題等特性也大幅降低了構(gòu)建面向國際的、現(xiàn)代化的Web應(yīng)用的門檻和成本。
在歐美發(fā)達(dá)國家,高校從來都是開源的主要使用者和貢獻(xiàn)力量之一。Drupal也不例外,其本身就是由比利時(shí)安特衛(wèi)普大學(xué)學(xué)生Dries Buytaert在2001年將他的程序按照GPL授權(quán)開源的。據(jù)Dries創(chuàng)辦的Drupal云服務(wù)公司Acquia 2011年統(tǒng)計(jì),全球Top 100大學(xué)中有71所大學(xué)使用Drupal,其中美國常春藤聯(lián)盟大學(xué)無一例外。到今天,這一數(shù)字仍不斷提高,如2014年底,牛津大學(xué)也轉(zhuǎn)用Drupal構(gòu)建他們的主頁網(wǎng)站。國外高校同時(shí)也積極貢獻(xiàn)代碼,回饋社區(qū),如表2(僅收錄極少部分?jǐn)?shù)據(jù),且不包括企業(yè)貢獻(xiàn)的面向高校的應(yīng)用及K12學(xué)校的應(yīng)用)。
Drupal在國外高校的主要應(yīng)用領(lǐng)域有:WWW門戶網(wǎng)站、內(nèi)網(wǎng)業(yè)務(wù)應(yīng)用系統(tǒng)、Drupal站群托管和自助建站、科學(xué)數(shù)據(jù)庫、圖書館領(lǐng)域應(yīng)用、全媒體發(fā)布、學(xué)習(xí)管理系統(tǒng)、學(xué)生社團(tuán)應(yīng)用等。
值得一提的是:斯坦福大學(xué)從2014年起每年在校園內(nèi)舉辦一次Drupal Camp,高手云集;俄勒岡州立大學(xué)使用Drupal云服務(wù)托管一千多個(gè)網(wǎng)站(或Web應(yīng)用)。這足見Drupal在美國高校中的流行。另外,還有人寫了一本書《Drupal for Education and E-Learning》。
表2 國外大學(xué)對Drupal的應(yīng)用
到了2006年,標(biāo)志性版本4.7版發(fā)行后,國內(nèi)就已有不少人在跟蹤研究,并建設(shè)了國內(nèi)的Drupal社區(qū)。2008年發(fā)行了Drupal 6后,Drupal已經(jīng)發(fā)展成熟,穩(wěn)居內(nèi)容管理系統(tǒng)世界第一名。此時(shí)國內(nèi)已有好幾家公司基于Drupal提供服務(wù)。2011 年Drupal 7發(fā)布后,國內(nèi)的Drupal社區(qū)也變得非?;钴S,并從2013年開始,由從美國留學(xué)歸來的人士在上海牽頭舉辦China Drupal Camp。由于上海從事Drupal的外國人也比較多,所以從一開始,Drupal中國的社區(qū)就具有國際開放性。目前北京、上海、廣州、深圳、南京、寧波、廈門、成都、貴陽、西安、蘭州、烏魯木齊等城市均有公司和團(tuán)隊(duì)從事Drupal開發(fā)和服務(wù),其中也包含多家使用Drupal來基于互聯(lián)網(wǎng)創(chuàng)業(yè)的公司。目前,這些公司和團(tuán)隊(duì)主要服務(wù)于外企(很多外企總部指名要求分部使用Drupal)、 “走出去”的中國企業(yè)等高端市場。
據(jù)筆者所知,國內(nèi)高校最早公開使用Drupal的可能是哈爾濱工業(yè)大學(xué)于2010年上線的教師個(gè)人主頁系統(tǒng)。標(biāo)志性的事件是上海海事大學(xué)2012年使用Drupal重建的WWW主頁,以及2015年初上海外國語大學(xué)和企業(yè)合作使用Drupal重建的內(nèi)網(wǎng)Portal(一定程度上證明國內(nèi)基于Drupal的研發(fā)能力已經(jīng)能比肩甚至超越傳統(tǒng)教育行業(yè)提供商)。上海紐約大學(xué)2013年也用Drupal開發(fā)了主頁。中國科學(xué)院植物研究所使用Drupal建設(shè)的國家標(biāo)本平臺(tái),含有1000萬條以上數(shù)據(jù),有豐富的查詢、展現(xiàn)形式,應(yīng)該是目前國內(nèi)最大的Drupal站點(diǎn)。其他使用Drupal建設(shè)的高校網(wǎng)站有:南京師大的多個(gè)二級(jí)網(wǎng)站、中山大學(xué)、北大圖書館、清華大學(xué)圖書館、清華大學(xué)五道口金融學(xué)院等。另外,很有意思的是衡陽黨建網(wǎng)(雖然不是高校界的),其風(fēng)格和中國傳統(tǒng)式政府網(wǎng)站一致,這說明Drupal的主題定制性非常靈活,并非只能做現(xiàn)代化風(fēng)格的網(wǎng)站。
開源軟件的發(fā)展離不開社區(qū)協(xié)作。隨著中國Drupal社區(qū)的蓬勃發(fā)展,高校也組建了相應(yīng)的社區(qū)。2013年10月上海海事大學(xué)王玉平在高校信息化委員會(huì)華東區(qū)青年會(huì)議上向大家介紹Drupal;2013年12月筆者在上海MIS年會(huì)青年會(huì)議上進(jìn)一步推介,此次會(huì)議上Drupal被列為高校信息化委員會(huì)開源推進(jìn)工作組首批3個(gè)項(xiàng)目之一;2014 年4月,筆者與王玉平面向全國做了一次Drupal網(wǎng)絡(luò)視頻講座。此后,“Drupal在高?!盦Q群(239613913)人數(shù)越來越多,從985高校和職業(yè)院校都有老師參與。并于2014年10月份上線高校Drupal協(xié)作推廣網(wǎng)站及配套的嚴(yán)肅協(xié)作開發(fā)平臺(tái)(版本控制、任務(wù)指派、問題跟蹤)?,F(xiàn)在基本上能保持每個(gè)月一次的在線視頻交流講座,由各位老師免費(fèi)分享自己的案例和經(jīng)驗(yàn)。也適當(dāng)引入企業(yè)界Drupal高手加入,打造良性循環(huán)的Drupal生態(tài)圈。2014年底,溫州大學(xué)向Drupal社區(qū)貢獻(xiàn)了中國高校界第一個(gè)模塊。目前,隨著大家對Drupal了解的深入,2015年QQ群內(nèi)的討論更加頻繁熱烈。
當(dāng)前,我國高等教育領(lǐng)域的信息化工作有了三個(gè)明顯的轉(zhuǎn)變:1.建設(shè)重點(diǎn)已經(jīng)從網(wǎng)絡(luò)、存儲(chǔ)等基礎(chǔ)設(shè)施建設(shè)演進(jìn)到信息化軟件系統(tǒng)和教學(xué)科研信息化資源建設(shè)新階段。2.師生用戶在微博、微信等互聯(lián)網(wǎng)產(chǎn)品快速功能更新和良好的用戶體驗(yàn)的“嬌慣”下,已經(jīng)對高校信息化系統(tǒng)的需求有了很大的提高。3.對一線技術(shù)了解較為深入的70、80后青年教師逐漸參與項(xiàng)目選型決策。在這個(gè)新階段下,產(chǎn)生了一個(gè)很大的矛盾:教育信息化行業(yè)傳統(tǒng)服務(wù)提供商提供的產(chǎn)品和服務(wù)模式無法適應(yīng)用戶的新需求。一方面,由于教育行業(yè)項(xiàng)目金額相對較小,研發(fā)投入普遍不足,這些廠商難以招到高級(jí)IT人才,產(chǎn)品自身水平比較有限,如瀏覽器兼容性等基本問題比比皆是;另一方面,他們大多采用銷售成型產(chǎn)品的模式,不大愿意定制開發(fā),或者說定制開發(fā)的響應(yīng)速度很慢,無法滿足高校個(gè)性化需求,特別不適合邊做邊有新想法的迭代式項(xiàng)目。而這種快速迭代式項(xiàng)目在互聯(lián)網(wǎng)產(chǎn)品的沖擊下越來越多,如部分高校的移動(dòng)App項(xiàng)目在微信的沖擊下成了“僵尸”項(xiàng)目。而Drupal的開箱即用的基礎(chǔ)框架、高可擴(kuò)展性、高可配置性正好是解決該矛盾的一劑良藥,允許甲乙雙方適量試錯(cuò),降低雙方的時(shí)間成本和機(jī)會(huì)成本。
另外,有些人擔(dān)心開源軟件的質(zhì)量和安全問題。其實(shí),Linux和OpenStack的成功證明了這不是問題。就連一向不開源的微軟2014年也開放了.Net Framework的部分源代碼?,F(xiàn)階段很多成功流行的開源軟件的質(zhì)量要超過同類商業(yè)軟件,更是遠(yuǎn)超國內(nèi)商業(yè)軟件;因?yàn)閷懙貌畹拇a都不好意思被開源,更不可能流行。
國內(nèi)有些廠商的產(chǎn)品因?yàn)楹诵拈_發(fā)人員的離職或其他原因就無法繼續(xù)提供升級(jí)、維護(hù)等服務(wù),校方過幾年就不得不推倒重來,重復(fù)建設(shè)、浪費(fèi)資金。這增加了雙方的維護(hù)建設(shè)成本。而選用開源的Drupal將會(huì)大幅消除這些問題,也降低被某一家廠商“鎖死”的風(fēng)險(xiǎn)。更為重要的是:基于Drupal這樣擴(kuò)展性好、生命力強(qiáng)的框架來開發(fā)高校業(yè)務(wù)系統(tǒng),能使業(yè)務(wù)系統(tǒng)可持續(xù)運(yùn)營,能將數(shù)據(jù)積淀下來,甚至能建成信息化時(shí)代下的校園文化品牌,并對決策支持產(chǎn)生實(shí)實(shí)在在的支撐。
筆者保守估計(jì),中國高?,F(xiàn)有的這些基于Web的應(yīng)用業(yè)務(wù)系統(tǒng),大約有20%~30%可以使用Drupal來建設(shè),且易用性、可擴(kuò)展性會(huì)大幅提升,能帶動(dòng)信息化水平的整體提升。具體講,根據(jù)開箱即用的程度和可擴(kuò)展性,Drupal特別適合以下領(lǐng)域的應(yīng)用(其實(shí),幾乎所有數(shù)據(jù)密集型應(yīng)用都可以使用Drupal來做)。
1.多語種網(wǎng)站群:實(shí)現(xiàn)國際化、真正的多語種網(wǎng)站群。這對于985、外語類高校建設(shè)世界研究型大學(xué)非常有意義;
2.ITIL系統(tǒng):知識(shí)庫、工單管理、工作日志(自動(dòng)生成)、項(xiàng)目管理、配置管理、自助服務(wù)、軟件版本庫管理等;
3.移動(dòng)應(yīng)用和微信開發(fā)者模式的服務(wù)器端:Drupal實(shí)現(xiàn)內(nèi)容管理,將內(nèi)容開放給移動(dòng)應(yīng)用和微信調(diào)用;
4.圖書館&知識(shí)典藏:RDF、Dublin Core等元數(shù)據(jù)、知識(shí)管理、掃描件數(shù)字化(光學(xué)文字識(shí)別)、影音資料管理等;
5.學(xué)術(shù)會(huì)議管理系統(tǒng):論文在線提交、評(píng)審、發(fā)行,食宿預(yù)定等;
6.表單數(shù)據(jù)密集型應(yīng)用,如:招生管理、校友管理等等;
7.學(xué)生社團(tuán)管理:通知發(fā)布、募捐、活動(dòng)檔案、簡歷輔助生成等;
8.科研管理社交系統(tǒng):科研數(shù)據(jù)提交、計(jì)劃執(zhí)行、交叉學(xué)科社交協(xié)作等等。
Drupal自帶了CAS/LDAP/Shibboleth等單點(diǎn)登錄功能,能使用MySQL、Oracle、SQL Server等主流數(shù)據(jù)庫,對于高校信息化環(huán)境具有先天的親和性。當(dāng)然,我們也需要知道Drupal的弱點(diǎn),主要是:1.不適合做流程密集型應(yīng)用,如OA等;2.不適合調(diào)用面向Java應(yīng)用的SDK,但可以通過PHP/Java Bridge來彌補(bǔ),或者讓服務(wù)端的Java應(yīng)用提供HTTP接口(這些年隨著RESTful和oAuth的流行,這個(gè)問題也越來越少)。
當(dāng)前的主要挑戰(zhàn)還是在于Drupal在中國高校是新事物,大家的認(rèn)識(shí)還不夠,提供基于Drupal的教育行業(yè)產(chǎn)品和解決方案的廠商在業(yè)界還是“新人”。在此情況下,很多青年教師們都是自己基于Drupal來開發(fā)網(wǎng)站和Web應(yīng)用,由于體制的限制,沒有額外的項(xiàng)目獎(jiǎng)勵(lì)和榮譽(yù),難有可持續(xù)的動(dòng)力。鑒于此,筆者在此斗膽呼吁高校信息化委員會(huì)建立起可持續(xù)、可執(zhí)行的優(yōu)秀開源軟件推廣機(jī)制,從高層推介、廠商加入、科研課題、項(xiàng)目協(xié)作、職稱評(píng)定、物質(zhì)獎(jiǎng)勵(lì)等諸方面予以實(shí)質(zhì)性的支持,將開源推廣落到實(shí)處。
期待在不久的將來,Drupal和其他優(yōu)秀的世界級(jí)開源軟件能在中國高校遍地開花,從技術(shù)上助推體制改革,將中國教育信息化提升到一個(gè)新水平。
(作者單位為上海外國語大學(xué)信息技術(shù)中心)