Firefox.html – Quando il browser è il core

Partiamo dal presupposto un browser è una interfaccia ad un motore grafico che reinderizza le pagine web con la sua interazione dovuta a JavaScript.

Io sono dell’idea che la differenza in ambito browser non è l’interfaccia ma il core altrimenti puoi fare la più bella grafica ma se il tuo engine è pessimo non puoi pensare di andare molto lontano.

Parliamo un’attimo dei browser attuali e dei loro engine anche a livello mobile per capire meglio la questione (si lo sò mi piacciono gli spiegoni tecnici ma io li faccio semplici):

Sistemi operativi desktop

  • Windows: Internet Explorer con engine Trident
  • OSX: Safari con WebKit
  • Linux/BSD: qualunque browser con qualunque engine

Possiamo installare, però su questi sistemi, qualunque browser altro che userà un’engine differente dagli altri. La maggior parte delle volte si tratta di WebKit o suoi derivati (Google Chrome usa Blink che è un suo derivato) mentre Mozilla Firefox usa Gecko ed Opera usa WebKit.

Quindi in ambito desktop siamo liberi di scegliere l’engine a seconda del contenitore.
Se invece sviluppiamo per un sistema specifico potremmo usare degli engine specifici nelle nostre applicazioni, per esempio se facciamo un programma .NET useremo Trident perchè è integrato in Windows. Se usiamo le Qt o le GTk useremo WebKit. Se usiamo XUL useremo Gecko.

In ambito mobile la situazione è completamente differente!

Sistemi operativi mobile

  • Windows Phone: Trident per il mobile
  • iOS: WebKit
  • Android: qualunque browser con qualunque engine
  • ecc

I marketplace di Windows Phone e iOS hanno delle regole restrittive sulle app che possono essere pubblicate ed impediscono di usare altri engine oltre a quello di sistema. Quindi tutte le app usano lo stesso engine con la stessa versione.

Android invece non ha questa limitazione che ha permesso la nascita di Firefox for Android di cui ho parlato in un video.

Quindi la notizia di questi giorni di Firefox per iOS non sarebbe altro che un contenitore di WebKit. Lascio a voi la disquisizione sul caso che non voglio addentrarmi.

Concludendo questo cappello prima di passare all’argomento di questo articolo parliamo delle Web App. Oramai ci sono molti sviluppatori che realizzano delle web app snellendo tutti quei problemi di aggiornamenti e librerie.
Quindi sono nati dei contenitori che mostrano solamente la Web App sia per NodeJS che per PHP (niente barra degli indirizzi per capirci) anche le la stessa applicazione è in locale.

Per questo motivo sono nate le applicazioni installabili da browser in ambito Mozilla le Open Web App e Google le Chrome Apps.
Che permettono agli sviluppatori di non dover distribuire nessun programma ma dire al cliente di andare su un dato sito per poter installare la app senza scaricare niente. Non il classico segnalibro/collegamento perchè possono accedere a API avanzate come ai file o funzionalità di sistema.

Partendo da questo importante presupposto abbiamo capito che la vera potenza di un web browser è l’engine non l’interfaccia.

Questa pensata ha portato la nascita di Firefox OS ovvero perchè fare un sistema nativo invece di fare tutto con il browser?
In Firefox OS il browser in realtà è una pagina web!

Per questo uno sviluppatore Mozilla ha realizzato Firefox.html.

Firefox.html non è altro che Gecko solo con il motore grafico senza XUL (a parte la finestra) con l’interfaccia del browser stessa realizzata in HTML.

logo_sbam4-400x279Vediamo uno screenshot di questo esperimento si perchè è un esperimento in stato embrionale.

Mte90.net

Come potete vedere il mio sito è visualizzato correttamente e l’interfaccia del browser è uguale a quella di Firefox.

Quali sono in vantaggi di una soluzione del genere?

Performance!

Il browser è molto leggero perchè non deve caricare tutte le librerie ma solamente l’engine, anche se in questo stadio del progetto consuma poca ram, perchè manca il pannello di configurazione e tutto il resto. L’ho già detto che è iniziato 14 giorni fà?

Comporterà meno problemi perchè XUL andrà a morire, meno tempo di compilazione e sviluppo facilitato.
Come Firefox OS ha dimostrato una velocità di sviluppo altissima perchè Gaia (l’interfaccia è in HTML5) anche questo progetto potrebbe portare allo stesso risultato. Oltre alle performance molto più interessanti.

Fare le estensioni sarebbe facilissimo perchè non ci sarà XUL!

Come potete capire niente XUL ovvero le librerie grafiche basate su GTK usate in Mozilla per i suoi software.

In mailing list infatti si è discusso che in un futuro potrebbe portare alla rimozione di XUL per via dei molti problemi che ha, rendendo più semplice lo sviluppo del browser stesso.

Come provarlo?

Basta andare sul repo https://github.com/paulrouget/firefox.html e seguire le istruzioni del readme.
Inoltre è multipiattaforma quindi OSX, Windows e Linux funzionano senza problemi.

Richiede NodeJS?

La domanda sorge spontanea perchè il browser è realizzato anche con JavaScript ma siccome Firefox.html usa Gecko sfrutta il suo engine JavaScript per il caricamento del browser stesso.

Sicurezza?

Ogni sito aperto è in iframe differente che non può comunicare con gli altri ma vedremo come il progetto si evolverà perchè è meglio fare un prototipo completo e poi dedicarsi alla sicurezza altrimenti il progetto si bloccherebbe sui dettagli tecnici rendendo impossibile lavorarci sopra.

Non vedo l’ora di fare qualche pull anch’io per questo progetto ma tra il lavoro e gli altri progetti non è che abbia molto tempo 😀

Liked it? Take a second to support Mte90 on Patreon!
Become a patron at Patreon!

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *