我們日前剛慶祝 Mozilla 開發者社群網站 (Mozilla Developer Network,MDN) 之十年有成。另將透過本文進一步介紹 MDN 起源、是如何多元發展,未來的發展方向。
(本文大部分是根據 2015 年 4 月於德國柏林 (Berlin) 舉辦的「Hack on MDN」圓桌會議結果,並參考 Florian Scholz 所寫 MDN 的 JavaScript 說明文件歷史紀錄相關文章所撰寫而成。)
在看完了《MDN 十年淬鍊 (上)》並了解 MDN 當初的起源、目前性質,及其鎖定的讀者群之後,接著就來看看 MDN 當初在多種平台上「顛沛流離」的原因,以及最後選擇落腳之處的過程。
2010 年於巴黎舉辦 MDN 的「Doc sprint」活動
平台演進
MDN 曾架設於共 3 個不同的 Wiki 平台上:先是 MediaWiki,接著 MindTouch DekiWiki,再來就是現在由 Mozilla 開發的「Kuma」平台。從技術面的觀點看這個架構不僅頗有趣味,也能發現科技確實影響了如社群的社交結構。
MediaWIki
MDC 所用的第一代 Wiki 平台就是「MediaWiki」,即以 Wikipedia 的開放源碼軟體為基礎,也是當時最廣泛運用的 Wiki 頁面。而到 Devmo 專案時,則發現此為了撰寫一般百科全書網頁所設計的軟體,似乎並不適合撰寫開發者導向的技術文件,像是根本無法處理範例程式碼,且重新將之格式化又變得無法閱讀。Mozilla 曾試著打造 MediaWiki 的旁支版本以解決此問題,但最後又發現維護不易。
從貢獻的角度來說,因為許多技術人員已經熟悉了 MediaWiki 而有其初期的優勢,但最後卻因為難以讓貢獻者回流而遇到了瓶頸。再加上某些技術上的落差,促使我們必須轉用對使用者更友善的平台。
Dekiwiki
在評估過市面上的所有 Wiki 產品之後 (並不限於開放源碼),我們選用了 MindTouch 所架構的 DekiWiki,而其優點之一就是以 HTML 作為文章的原始格式;而非 Wiki markup。對於一個 Web 開發者常用,且將標準 Web 程式語言作為原始格式的網站來說,這看來是非常合乎邏輯的選擇。接下來就必須將 MediaWiki markup 格式的內容完全移植為 HTML 格式。我們於 2007 年 11 月宣佈選用 DekiWiki,並於 2008 年 8 月轉移網站完畢。
雖然 DekiWiki 是不錯的產品,但由於當初並未納入主要關係人 (即網站貢獻者) 參與平台選擇,而造成選擇流程上的瑕疵,再加上貢獻者社群並不青睞此平台,而導致貢獻比例暴跌。負責將英文內容翻譯為不同語言的本地化社群也因此受到嚴重影響。這些社群本來針對 MediaWiki 設計了相關工具與流程,卻無法用於 DekiWiki。在幾個月後,許多團隊只好解散並停止貢獻,造成翻譯過的說明文件乏人更新,所提供的資訊也就越來越不合時宜。
DekiWiki 亦是以 C# 撰寫而成,並為了於 Microsoft .NET 環境中執行所設計;這更與 Mozilla 以 Linux 為基礎的技術架構不符。於 Mono 上執行 DekiWiki 就更不穩定,網站不時就必須關站數天甚至數週。
幾年之後,這些問題又促使我們再找出下個解決方案。而市面上最佳選擇仍是 MediaWiki 與 DekiWiki。但當時網站內容已全用 HTML 所寫成,若要再移植回 MediaWiki markup 的語法根本不可行。看來沒有任何產品能滿足開放式開發文件網站的特殊需要,所以 Mozilla 決定自己架一個平台來用。
Kuma
目前 MDN 所用的平台「Kuma」,即是以 Python 搭配 Django 所建構而成。Kuma 剛開始採用了 Mozilla 支援網站「Kitsune」平台的分支,再根據開發者 (而非末端使用者) 對 Wiki 網站的需求修改而成。「kitsune」與「kuma」分別是日文中狐狸和熊的意思。因為使用者會像狐狸一樣四處探索,開發者則像熊一樣到處開發新境地,對吧?
與 DekiWiki 相同,Kuma 也是以 HTML 作為內容的原始格式。所以移植工作主要就是轉換網站所使用的指令碼與巨集。DekiWiki 所使用的「DekiScript」是以 Lua 為基礎;而 Kuma 所導入的「KumaScript」則是以 JavaScript 為基礎且使用 Node.js。KumaScript 是開發者 Les Orchard 的心血。由於 KumaScript 的內容均為 HTML 格式,也代表 MDN 就是以其文章的技術實作而成,而且貢獻者早已熟知此技術。所以可自動移植 70% 的現有巨集,剩下以手動處理即可。
啟用 Kuma 平台的同時,就應該要能達到與 MDN 的 DekiWiki 相同功能。我們將內容移植到新系統,且公開伺服器 (Production server) 的變動也定期更新到 Kuma 預備伺服器 (Staging server) 上。因此 Kuma 一直與 DekiWiki 保持同步。正式啟用 Kuma 之前的幾個月都在進行大量的移植作業,也因此啟用過程特別順利,接著將流量無縫移轉到新的網站上,甚至已經登入舊站的人也不須再次登入。
MDN 之所以更換過這幾種平台,不外乎是基於編碼的相容性、後續維護難易度,當然更重要的,就是廣大社群是否易於參與貢獻。如上面所提過的,由於貢獻者社群並不青睞 DekiWiki 平台,因此造成貢獻比例暴跌,連帶不同語言的本地化社群也受到嚴重影響。接著我們將讓大家看看 MDN 貢獻社群在這段期間的活動情形,以及 MDN 在下個十年對自己的期許與可能的走向。請別錯過即將上刊的《MDN 十年淬鍊 (下)》。
原文連結:Ten years of evolution of MDN