剛讀到這篇 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 開發網站。