剛讀到這篇 Component Directory Lockdown 新聞時,乍看標題誤以為 Firefox 3.6 中所有的 XPCOM components 都將被閹掉、無法使用了。認真讀了火狐人肉盾牌 (Human Shield) Johnathan Nightingale公告、以及 Vladimir Vukićević詳盡說明,知道關掉的是官方自動載入 Firefox 安裝目錄下的 components 目錄。

其實是為了一些惡搞軟體所下的限制,特別是在 Windows 平台上。許多 Windows 使用者都會安裝一些防毒軟體、輔助工具等等,許多 Windows 上的工具軟體常便宜行事,會偷偷在 Firefox/components 目錄下塞入自己的 XPCOM 元件,藉此置入功能到 Firefox 中。在 Firefox 的設計中,這些 XPCOM 元件都會依照其宣告被自動載入、執行。

問題在於不少軟體的作法都是射後不理,軟體公司常常依照特定版本的 Firefox 開發其 XPCOM 元件,安裝時強制安裝該元件檔案到 Firefox 的 components 目錄,然後就不管了。隨著時間演進,使用者可能會升級 Firefox,結果這些非官方的 XPCOM 元件未被升級,造成相容性問題而使整個瀏覽器當掉。

XPCOM 是設計來接取一些基本的系統資源、或與其他函式庫介接,若是 API 版本不合,不小心會造成當機、安全漏洞或系統損毀。特別是 XPCOM 不同於 Extension,在瀏覽器一執行時就會載入,也不作版本驗證。對於使用者而言,也無法像擴充套件一樣,透過設定介面關掉或移除有問題的外掛。於是使用者很容易就怪罪這個瀏覽器不穩定。

於是,在 Firefox 3.6 中,將只載入寫在 components.list 的官方元件。一般開發者若想使用 XPCOM 元件,應該使用包裝成 extension 的形式,讓系統自動安裝,詳細的技術細節請參考 Mozilla 開發網站