附加組件 (Mozilla)

Mozilla附加組件（Mozilla Add-ons）是一種可安裝的增強組件，可以安裝到Mozilla基金會的包括Firefox、Thunderbird、SeaMonkey和Sunbird等及衍生項目。附加組件使使用者可以增加或修改應用程式功能，使用主題裝飾外觀，以及處理本並不支持的內容類型。

附加組件的三種主要類別是：擴展、主題和插件。前兩種附加組件的主要託管及分發渠道是Mozilla Add-ons網站。

## 類型

附加組件存在多種類型：

- 擴展：修改現有功能的行為或者添加新功能。該功能可以是使用者界面中的某處，或者執行某個動作時表現出的功能特徵。主題則是一種著重關注使用者界面的擴展。搜尋引擎定義是一種功能性擴展。不完全列表見Firefox擴展列表條目，除此之外還有適用於Thunderbird、SeaMonkey和Sunbird的擴展。
- 主題：原名「Personas」（炫彩風格）。它是一種規範化的修改使用者界面某些元素的標準。其最鮮明的特徵就是將背景圖像添加到瀏覽器主窗口的工具欄、菜單欄和狀態欄。它也可以更改一些文本和背景顏色。
- 插件：渲染應用程式本無法呈現的Web內容。例如Adobe Flash Player就是一個插件，它可以在網頁上呈現Adobe Flash內容。Mozilla插件基於名為NPAPI的框架。Mozilla插件正在被逐步淘汰，Mozilla計劃2016年在Firefox中停止使用大多數插件。

## 網站

同名的Mozilla Add-ons網站是Mozilla基金會為Mozilla軟體的附加組件準備的官方存儲庫，適用包括Mozilla Firefox、Mozilla Thunderbird、SeaMonkey以及Mozilla Sunbird等軟體。這些附加組件包括Mozilla擴展和Personas（炫彩風格）等，但不包括Mozilla插件。

相比為Mozilla相關項目提供免費託管的mozdev.org，Mozilla Add-ons的服務目標是最終使用者，而不只是軟體開發者。許多Mozilla應用程式包括到達該網站的直接連結，並包含設置以自動檢查擴展和應用程式本身的更新。Firefox 3開始包含一個功能，允許在附加組件管理器中直接檢索和顯示該網站的提供內容。

2008年1月30日，網站宣布附加組件下載量已達6億次，並且每天服務超過1億次附加組件的自動檢查更新。

2012年7月26日，Mozilla宣布該網站的附加組件下載量已達30億次。

### 歷史

在早期，Mozilla Add-ons被稱之為Mozilla Update（或簡稱UMO，主機名為`update.mozilla.org`）。該網站在發布並歷經多次變化後變成了AMO。

- 2006年4月4日，公共頁面的重大改寫發布。
- 2006年10月24日，Firefox頁面的新版界面推出，迎接Firefox 2發布和新版mozilla.com樣式。
- 2007年3月23日，完全重寫的開發者和公共頁面發布，代號Remora。
- 2008年春季，代號「Remora 3.2」的新版界面推出。
- 2011年，採用PHP/CakePHP編寫的Remora取代採用Python/Django編寫的Zamboni。網站還進行了重新設計，代號Impala。

## 擴展

擴展可以用於修改應用程式現有功能的行為，或者添加全新功能。擴展是Firefox中極受歡迎的一項功能，因為Mozilla開發者希望瀏覽器是一個簡約的應用程式以減少軟體膨脹和缺陷，同時保持高度的可擴展性，使每個使用者都能添加自己喜歡的功能。

### 擴展技術

擴展可以使用下列技術開發：

- XUL：定義使用者界面和與使用者交互的元素
- 層疊樣式表（CSS）
- 文檔對象模型（DOM）：實時更改XUL代碼和編輯被載入的HTML內容
- JavaScript：Mozilla瀏覽器的主要語言
- XPCOM
- XPConnect
- XPI
- Mozilla Jetpack：一個開發工具包，旨在降低製作附加組件的學習曲線和開發時間
- WebExtensions

### 使用

改變使用者界面：一些擴展的用途是改變應用程式的界面。這與功能為主題管理的Personas（炫彩風格）不同。舉例來說，有幾個附加組件的功能是更改「Firefox按鈕」的顏色，例如ColorizedButton。還有一個擴展是，將Windows上的菜單欄移動到標題欄的位置。

增加功能：許多擴展也可為瀏覽器增添功能。可能添加的功能有許多，例如RSS閱讀器、書籤管理器、工具欄、特定網站的客戶端程序、FTP、電子郵件、滑鼠手勢、代理伺服器切換器、開發者工具等等。許多Firefox擴展實現了早前的Mozilla套件的一些功能，例如ChatZilla IRC客戶端以及日曆等。

修改使用者查閱的網頁：許多擴展可以改變所呈現的網頁內容。比如說，Adblock擴展可以阻止瀏覽器加載廣告性質的圖片。Greasemonkey可以讓使用者安裝使用者腳本來以程序的方式修改修改目標網站的特定代碼等。

也有一些擴展的存在目的只是輕鬆、幽默或諷刺。還有一些擴展是為找回存在於舊版Firefox但最新版本已經刪除的功能。

### 安全

不同於Google Chrome，Mozilla平台沒有限制擴展權限的機制。擴展代碼受到Mozilla應用程式的完全信任。對擴展與作業系統之間的相互通信也沒有限制。這意味著一個擴展可以讀取和修改另一個擴展使用的數據，以及訪問使用者運行Mozilla應用程式所在系統的任何可訪問文件。

Mozilla擴展默認安裝到應用程式的使用者配置文件夾中，使用者和使用者運行的任何程序都可以讀寫和覆蓋其中的代碼。由於曾經Mozilla平台不檢查已安裝擴展的完整性，因此這些代碼可以被更改以用於任意代碼執行。

從Firefox 40.0開始，Mozilla將擴展簽名列為正式版和公測版（Beta）的強制要求。從40.0開始，瀏覽器將向最終使用者警告未簽名的擴展；從43.0開始，只有在about:config頁面中啟用一個特殊的首選項才能安裝未簽名的擴展；從44.0開始，Firefox阻止未簽名擴展的安裝和加載。在Firefox的開發者版本（Developer Edition）和每夜版（Nightly）中，Firefox仍保留一個首選項及相關功能來禁用或繞過簽名要求。根據計劃，Firefox後期也發布了「無品牌版本」的正式版和公測版，以允許開發者在特定平台上測試未簽名的擴展。

### 兼容性與更新

擴展包含的附有元數據的XML文件會被附加組件安裝機制使用。在該文件中，此附加組件適用的Mozilla應用程式項目的最大和最小版本也被標明。如果安裝的附加組件適用版本不再範圍內，安裝可能會被阻止或警告。然而，元數據中的版本範圍並不能保證附加組件在此範圍內與外一定能正常工作，並可使用方法繞過該兼容性檢查。

附加組件管理器會定期的自動從Mozilla附加組件網站（或擴展自行定義的地址）檢查是否存在更新，使用者也可自行觸發附加組件的檢查更新。

## 主題

主題，原名Personas（炫彩風格），它允許用戶快速的改變一個應用程式的外觀。儘管最早的Personas是採用一個擴展來實現，但該功能從Firefox 3.6開始已被內置，並在之後被其他一些應用程式採用。這些「背景主題」與實現為Mozilla擴展的傳統主題、完整主題不同。這種主題更加基礎，也更容易創建和安裝，但能力僅限於更改工具欄、菜單欄和狀態欄的背景圖像、背景顏色和文本顏色。它們不需要以擴展的形式安裝，也不能更改工具欄等界面元素的形狀、外觀、功能表現等。安裝它們非常簡單，只需單擊即可下載並激活，並還支持懸停預覽即時效果。

該類主題最早託管於GetPersonas.com，後在2013年被轉移到Mozilla Add-ons網站。此外，因為名稱與被稱為「Mozilla Persona」的方案類似，Mozilla停止使用該名稱並改稱之為「主題」，儘管這將基於擴展實現的主題（現稱之為完整主題、傳統主題）與Personas混淆，但它們均由附加組件管理器安裝和管理，並且顯示在同一欄目中（現稱之為「外觀」）。

儘管此功能受到了一些好評，但TechCrunch批評Mozilla只著眼於發展瀏覽器的外觀來吸引目光，而沒有將精力更多地放在改進Firefox的速度和可用性上

## 插件

Mozilla插件是為呈現應用程式本無法呈現的Web內容而準備的瀏覽器擴展，採用NPAPI框架創建。Firefox 41.0本身預裝兩個插件：思科提供的「開放H.264影片編解碼器」和Adobe Systems提供的「Primetime內容解密模塊」。常見的第三方Mozilla插件包括：Adobe Flash Player、Acrobat Reader、Adobe Shockwave Player、Java SE、QuickTime和RealPlayer。不同於其他類型的附加組件，Mozilla不分發第三方插件，附加組件管理器也不能更新它們。

Mozilla插件正在被逐漸淘汰。Mozilla計劃2016年在Firefox中停止使用大多數插件。

## 外部連結

- https://addons.mozilla.org/
- Mozilla開發者中心上的附加組件相關文檔

## 基本資料

- 日語原文：Add-ons for Firefox
- 商業性質：否
- 類型：託管附加組件
- 註冊：自由，僅開發人員和特殊功能需要
- 持有者：Mozilla基金會
- 作者：Andy McKay、Chris Howse、Gregory Koberger、Jeff Balogh、Jorge Villalobos (jorgev)、Justin Scott (fligtar)、Kumar McMillan、Matt Claypotch、Stephen Donner、Wil Clouser等
- 現狀：活躍