Veloce è veloce…

2 Settembre 2008

Firefox 3.0.1 su Windows XP (VM in Parallels): 1.755,40ms (link)

Firefox 3.1b1pre con JIT attivato su Mac OS X: 1.156,80ms (link)

Google Chrome su Windows XP (VM in Parallels): 342,80ms (link)

Commento a caldo: stica!

P.S. Per i risultati di altri browser date un’occhiata al vecchio post 😉

UPDATE 3 settembre: in Mozilla hanno fatto un po’ di test, e i risultati sembrano essere decisamente buoni per Fx 3.1 con Tracemonkey attivato 😉


Disclaimer: as you may have already noticed, this post is written in Italian. If you need an English version, just ask and I’ll provide one (comments inside the scripts are already in English) 😉

Come avrete sicuramente notato dal post precedente, in questi giorni ho la possibilità fare un po’ di test con un Nokia N810: per questo devo ringraziare Luca, che come sempre si è dimostrato gentilissimo – alla faccia del ferragosto e del periodo vacanziero – e mi ha messo in contatto con le persone giuste (un sentito grazie anche a loro e a Nokia Italia per la disponibilità).

Il punto di partenza è il post del team francese con le indicazioni per la localizzazione di Fennec 0.4. L’idea è quella di semplificare ulteriormente la procedura creando alcuni script, nella speranza che il post possa essere utile anche ad altri team l10n. Tutte le operazioni devono essere eseguite su una macchina debian-based (io uso una VM con Ubuntu su Parallels-OS X); dal momento che scrivere script non è esattamente il mio lavoro, sono sicuro che esistano ampi margini di miglioramento 😉

I pacchetti da localizzare sono due: Fennec e XulRunner. Per prima cosa è necessario scaricare i file dal server Mozilla.

Localizzazione di XulRunner

Partiamo dal pacchetto più semplice, in quanto non sono richiesti interventi manuali.

Per procedere bisogna inserire in una cartella:

  • lo script setup_xulrunner.sh
  • il file it.jar recuperato dal language pack italiano (attenzione: per xulrunner 1.9.1a2pre serve quello per Firefox 3.1)
  • il pacchetto fennec_0.6_armel.deb

Descrizione dello script:

  • imposto delle variabili con nome del pacchetto, nome del file .deb e il locale (utilizzate per semplificare il riutilizzo dello script)
  • estraggo il contenuto del pacchetto .deb in ./xulrunner, quello del file it.jar nella cartella ./locale_xulrunner
  • attraverso sed sostituisco il nome di una variabile in xpinstallConfirm.dtd (ancora mi chiedo il perché di questa differenza tra Firefox e XulRunner…)
  • ricreo il file it.jar (in realtà si tratta di un file zip con estensione .jar), sistemo il chrome.manifest sostituendo en-us con it (sempre usando sed)
  • elimino i file en-US e ricreo il pacchetto .deb con la localizzazione

setup_xulrunner.sh

#!/bin/sh
# Create an empty folder and place inside this directory:
# * this script (setup_xulrunner.sh)
# * the xulrunner .deb package
# * the ab-CD.jar file taken from your localized Firefox (for 1.9.1a2pre you need a Fx 3.1 language pack!)
#
# Change the package_name variable according to the the xulrunner package,
# language_code according to your locale
package_name="xulrunner_1.9.1a2pre-2008080410_armel"
language_code="it"
product_name="xulrunner"
# Create directories
mkdir ${product_name}
mkdir locale_${product_name}
# Extract deb package
cd ${product_name}
dpkg-deb -e ../${package_name}.deb
dpkg-deb -x ../${package_name}.deb .
# Extract locale files
cp ../${language_code}.jar ../locale_${product_name}
cd ../locale_${product_name}
unzip ${language_code}.jar
rm ${language_code}.jar
# Adapt Firefox localization to xulrunner
# - Remove reporter files
rm -r ./locale/${language_code}/reporter
# - Change variable name
sed -i 's/warningMain.label/warningPrimary.label/' ./locale/${language_code}/mozapps/xpinstall/xpinstallConfirm.dtd
# Create ab-CD.jar with localized files
cd locale_${product_name}
zip -r ${language_code}.jar *
# Move ab-CD.jar to package directory
mv ${language_code}.jar ../${product_name}/usr/local/${product_name}/chrome
# Change en-US.manifest and save as ab-CD.manifest
sed 's/en-US/'${language_code}'/g' ../${product_name}/usr/local/${product_name}/chrome/en-US.manifest > ../${product_name}/usr/local/${product_name}/chrome/${language_code}.manifest
# Remove en-US files (jar and manifest)
rm ../${product_name}/usr/local/${product_name}/chrome/en-US.jar
rm ../${product_name}/usr/local/${product_name}/chrome/en-US.manifest
cd ../${product_name}
# Create localized .deb package
dpkg-deb -b . ../${package_name}.${language_code}.deb

Localizzazione di Fennec

A differenza di XulRunner, la localizzazione avviene in due fasi:

  • nella prima fase (setup_fennec.sh) estraggo il contenuto del pacchetto .deb in ./fennec e creo la cartella ./locale_fennec
  • nella seconda fase (repackage_fennec.sh) ricreo il pacchetto .deb

Le due fasi sono necessarie in quanto bisogna localizzare a mano le stringhe presenti in ./locale_fennec: come riferimento è consigliabile utilizzare gli analoghi file del language pack di Firefox (molte stringhe sono simili o identiche).

setup_fennec.sh

#!/bin/sh
# Create an empty folder and place inside this directory:
# * this script (setup_fennec.sh)
# * the fennec .deb package
#
# Change the package_name variable according to the the fennec package,
# language_code according to your locale
#
# After the script is run, you should find a locale_fennec folder with the files to localize
fennec_package="fennec_0.6_armel"
# Create directories
mkdir fennec
mkdir locale_fennec
cd fennec
# Extract deb package
dpkg-deb -e ../${fennec_package}.deb
dpkg-deb -x ../${fennec_package}.deb .
# Extract locale files
cp ./usr/local/fennec/chrome/en-US.jar ../locale_fennec
cd ../locale_fennec
unzip en-US.jar
rm en-US.jar

repackage_fennec.sh

#!/bin/sh
# Change the package_name variable according to the the fennec package,
# language_code according to your locale
#
# Inside ./locale_fennec you should have the localized files
#
# Don't run this script twice: since the first execution deletes the en-US.manifest, the second one
# creates an empty ab-CD.manifest file (and a broken .deb package)
fennec_package="fennec_0.6_armel"
language_code="it"
product_name="fennec"
# Create ab-CD.jar with localized files
cd locale_${product_name}
zip -r ${language_code}.jar *
# Move ab-CD.jar to package directory
mv ${language_code}.jar ../${product_name}/usr/local/${product_name}/chrome
# Change en-US.manifest and save as ab-CD.manifest
sed 's/en-US/'${language_code}'/g' ../${product_name}/usr/local/${product_name}/chrome/en-US.manifest > ../${product_name}/usr/local/${product_name}/chrome/${language_code}.manifest
# Remove en-US files (jar and manifest)
rm ../${product_name}/usr/local/${product_name}/chrome/en-US.jar
rm ../${product_name}/usr/local/${product_name}/chrome/en-US.manifest
cd ../${product_name}
# Create localized .deb package
dpkg-deb -b . ../${fennec_package}.${language_code}.deb

Per installare i due pacchetti è sufficiente copiare i file sul dispositivo ed eseguirli: Fennec risulterà disponibile nella scheda Extra del menu (vedi screenshot) 😉

Tag Technorati: ,

TraceMonkey

23 Agosto 2008

Nelle ultime ore sui vari blog Mozilla non si fa altro che parlare del nuovo motore JavaScript che verrà integrato in Firefox 3.1: TraceMonkey.

Pare che il nuovo JavaScript engine, evoluzione dell’attuale SpiderMonkey, sia decisamente veloce: per i maniaci dei benchmark consiglio la lettura del post già indicato di Brendan Eich – per chi non lo sapesse stiamo parlando del papà di JavaScript – oppure dell’articolo di Mike Shaver, per un’analisi meno attenta ai grafici date un’occhiata al blog di kairo, per un esempio pratico gustatevi il minuto di screencast sul blog di Mike Schroepfer.

Nel frattempo continuano le proposte di nuove funzionalità per l’interfaccia di Firefox 3.1 e le discussioni sul famigerato ctrl+tab


Durante il Firefox Summit 2008 Mike Shaver, VP Engineering ad interim dopo il (doloroso) passaggio di Mike Schroepfer a FaceBook, ha delineato la roadmap di Firefox:

  • Firefox 3.1 2008 Q4
  • Firefox 3.2 2009 Q2
  • Firefox 4 2009

Sulle slide le ultime due date erano seguite da un punto interrogativo, segno che si tratta (ovviamente) di un’indicazione di massima.

Quello che mi lascia abbastanza perplesso sono i tempi prospettati per la 3.1, attualmente alla versione alpha1: parlando direttamente con Axel Hecht, coordinatore del processo di localizzazione e membro del gruppo l10n-driver, ho chiesto a che punto eravamo. La risposta è stata spiazzante:

  • anche i localizzatori dovranno passare da CVS a Mercurial (ipotizzabile, ma nessun messaggio ufficiale era ancora circolato);
  • i tempi saranno brevi (idealmente solo una alfa e una beta, in realtà ci sono già tracce di una alpha2 alle porte).

Le stringhe modificate al momento sono meno di una decina, il problema è lasciare il tempo ai localizzatori per imparare a utilizzare i nuovi strumenti: per questo motivo la data del 19 agosto indicata questa mattina per lo string freeze appare poco ragionevole, senza considerare che allo stato attuale non esiste ancora un’infrastruttura per la realizzazione di build localizzate di Firefox 3.1 (e non esisterà per almeno ancora una settimana).

In ogni caso, se c’è una cosa che questo summit ha sottolineato, è l’importanza che Mozilla attribuisce al processo di localizzazione: se non fosse sufficiente il numero di localizzatori invitati (foto di una parte del gruppo), in assoluto il gruppo più consistente, basta pensare al nuovo ruolo di Zbigniew Braniecki (Mozilla Central/Eastern European community) e Simon Paquet (Thunderbid localization coordinator). Quindi sono fiducioso che le esigenze dei localizzatori verranno tenute nella giusta considerazione 😉