# Estensione Mozilla

Un'estensione Mozilla è un piccolo add-on (programma supplementare) che aggiunge funzionalità ad alcune applicazioni Mozilla:
* Mozilla Firefox, un navigatore web;
* Mozilla Thunderbird, un client di posta elettronica;
* Mozilla Sunbird, un'applicazione per la gestione di calendari;
* SeaMonkey, una suite per la navigazione in Internet.
Queste estensioni possono essere utilizzate anche con altre applicazioni basate sulla stessa tecnologia:
* Netscape Browser, un navigatore web;
* Flock, un navigatore web;
* Nvu, un editore di pagine HTML.
Le funzionalità possono andare da una semplice barra degli strumenti che consente la ricerca di informazioni in Internet a una caratteristica più complessa, come può essere quella degli effetti sulle singole schede. Lo scopo principale delle estensioni è, quindi, quello di personalizzare la propria versione delle applicazioni Mozilla.

## Come si installano e dove si prelevano

Nel sito ufficiale Mozilla Add-ons è possibile trovare una lunghissima lista di estensioni pronte per l'uso e facilmente installabili. Per agevolare la ricerca, le estensioni sono suddivise in categorie: dalle estensioni rivolte ai blog a quelle volte alla gestione dei segnalibri o alla navigazione. È possibile inoltre effettuare ricerche di estensioni utilizzando l'apposita sezione presente nella stessa pagina.
Per ogni estensione è disponibile una pagina che ne illustra le caratteristiche principali ed il suo funzionamento. In questa pagina, l'utente può trovare informazioni riguardanti la versione dell'estensione, le eventuali note del suo sviluppatore o le versioni delle applicazioni Mozilla supportate. Nella stessa pagina è poi disponibile un link che consente il download dell'estensione.
Un gran numero di estensioni sono state tradotte in italiano, e sono prelevabili dal sito eXtenZilla.

### Alcune estensioni popolari

Alcune delle estensioni più popolari sono sotto riportate.
* AdBlock e Adblock Plus: per il blocco delle finestre pop-up e dei banner pubblicitari. Offre inoltre all'utente la possibilità di bloccare contenuti pubblicitari realizzati in flash;
* BBCodeXtra: ausilia l'utilizzo del formato BBCode, molto diffuso nei forum;
* ChatZilla: un client IRC per i browser Mozilla, scritto in XUL e JavaScript;
* DownThemAll: ottimizza il download dei file. Il programma parte da più punti di ingresso, e consente di ottenere un notevole aumento della velocità;
* Firebug: permette il debug, la modifica e il monitoraggio di tutti gli aspetti di una pagina web, come il CSS, il codice HTML, la struttura DOM e il codice JavaScript;
* FireGestures: permette di velocizzare la navigazione, consentendo di collegare comandi eseguibili a movimenti del mouse sullo schermo;
* Gmail Manager: sempre più utilizzato grazie all'aumento degli utenti che usufruiscono del servizio mail di Google, è utile per controllare la propria casella di posta senza ogni volta accedervi; il sistema utilizza una serie di notifiche visive e sonore per avvisare l'utente nel caso in cui vi sia un nuovo messaggio in arrivo;
* Greasemonkey: permette all'utente di modificare le pagine web grazie all'uso di script; l'idea alla base è quella di "Navigazione Attiva" ("Active Browsing"): di norma gli script sono prerogativa dell'autore del sito internet, mentre Greasemonkey permette all'utente di eseguirne alcuni e a propria scelta, per aggiungere nuovi contenuti, migliorarne l'aspetto, semplificare operazioni, combinare dati con altre pagine e numerosi altri scopi;
* HTML Validator: è uno strumento utilizzato da sviluppatori di pagine web per controllare il formato delle pagine stesse e verificare se vengono rispettate le norme imposte dal W3C;
* IE Tab: consente di visualizzare una pagina con Internet Explorer, integrato in una scheda all'interno di Mozilla. È adatto in particolare per aprire siti ottimizzati per IE, ad esempio quelli che prevedono l'utilizzo di controlli ActiveX;
* NoScript: consente l'esecuzione di JavaScript ai soli siti a cui si è fornito il permesso e di cui ci si fida;
* Sage: permette di leggere direttamente nel browser i feed RSS, XML ed Atom;
* Stylish: permette di personalizzare l'aspetto dei siti e dell'interfaccia utente di Mozilla Firefox tramite l'utilizzo di fogli di stile CSS;
* Video DownloadHelper: consente lo scaricamento di contenuti non ottenibile mediante procedimenti ordinari, come per esempio quello dei filmati in formato Flash di YouTube;
* Web Developer Toolbar: aggiunge al browser una barra degli strumenti con molti strumenti utili ai sviluppatori web;
* WOT, acronimo di "Web of Trust": fornisce un voto rispetto a affidabilità, affidabilità del fornitore, sicurezza per bambini e riservatezza di un sito.

## Le estensioni nel dettaglio

Ogni estensione è costituita da diversi componenti è può essere riferita utilizzando un indirizzo chrome. Essa organizza i suoi contenuti in una struttura di directory ben precisa, nella quale ogni file con una specifica funzionalità va collocato in una particolare cartella. Ogni estensione è poi accompagnata da un file RDF di nome install.rdf, che contiene i dati dell'estensione, come il suo ID, la sua versione, il suo autore e la sua compatibilità con l'applicazione Mozilla interessata.

## Sviluppo delle estensioni

Grazie alla struttura delle applicazioni Mozilla ed alle loro caratteristiche, le estensioni sono relativamente semplici da scrivere: per sviluppare un'estensione base, infatti, basta conoscere XML User Interface Language (XUL) e JavaScript.
La prima operazione da effettuare per sviluppare una propria estensione è quella di utilizzare XUL per definire l'interfaccia grafica della propria estensione e per modificare l'interfaccia dell'applicazione che la ospita. In questo senso, è possibile aggiungere alle applicazioni Mozilla semplici pulsanti, barre di ricerca o, addirittura, interi menù. Risulta chiaro, quindi, come questi prodotti siano altamente personalizzabili. Una volta definita l'interfaccia grafica della propria estensione, è possibile definire e sviluppare le operazioni che l'utente può effettuare attraverso i controlli dell'interfaccia grafica dell'estensione, utilizzando il linguaggio di scripting JavaScript. Con questo linguaggio, che per altro è già molto utilizzato nei siti web, è possibile fare quasi ogni operazione definita nel framework mozilla, dalla ricerca di informazioni all'interazione con un sito web, alla semplice apertura di una pagina del browser.
Se eventualmente qualche funzionalità non fosse implementata, o non fosse adeguatamente utilizzabile dall'estensione che si sta implementando, è possibile ricorrere alla scrittura di componenti XPCOM, da scrivere in C++.
Una volta completato lo sviluppo della propria estensione è possibile creare un pacchetto installabile (file XPI) per consentire agli altri utenti di utilizzare l'estensione sviluppata.
Le possibilità rese dal framework vanno molto più in là di quanto qui descritto. Esistono infatti molti altri linguaggi che si possono utilizzare nella scrittura di estensioni ognuno offrendo diverse possibilità. Vanno citati infatti:
* XBL, linguaggio con cui è possibile definire comportamenti a elementi XUL
* SVG, una tecnologia in grado di visualizzare oggetti di grafica vettoriale. Essendo basata su XML è possibile gestire documenti SVG tramite DOM e JavaScript e quindi creare animazioni
* HTML e CSS, un documento XUL può contenere tag HTML rendendo semplice la creazione di interfacce complesse