Charge serveur causée par les bots IA sur un forum phpBB : quelques solutions

Je gère les forums de Mozfr (ex-Geckozone) depuis 2012, la communauté des bénévoles francophones de Mozilla. C'est un gros forum (>750.000 messages, >80.000 inscrits) qui fête ce mois-ci ses 23 ans d'existence. phpBB marche très bien, ça tourne sur un petit VPS sponsorisé par Gandi, (merci à eux !).

Depuis un an, le serveur est matraqué par toutes les IA de la terre, au point que la charge serveur le met régulièrement en panne. Je pense que 99% des hits sur le serveur sont probablement uniquement des bots qui aspirent notre contenu. Je n'ai pas la main sur tout sur le serveur, pas non plus des compétences devops et il y a des contraintes sur le serveur qui sont liées à son histoire qui ne me permettent pas d'installer ce que je veux. Je ne peux donc pas installer des bloqueurs de traffic IA comme Anubis ou souscrire à un service payant type Cloudflare. J'ai donc mis des solutions en place maison au niveau de l'htaccess (le serveur est sous Apache), du paramétrage des forums eux-mêmes, de la configuration PHP (même si le goulot d'étranglement est surtout sur mariadDB et Apache) et des crons qui tournent dans la journée. 

A force d'essais, de tâtonnements et aussi de suggestions de Gemini (comme quoi, j'ai rien contre l'IA), voici les changements qui ont très bien marché pour nous.

Changements dans phpBB

  • Général > Paramètres de la recherche > Intervalle d’affluence de la recherche des invités > 60s
  • Général > Paramètres de la recherche > Méthode d’indexation de la recherche : Mysql Fulltext
  • Général > Paramètres de la recherche > Afficher les invités dans la liste des utilisateurs en ligne > Non
  • Général > Paramètres de la recherche > Afficher le statut de connexion des utilisateurs > Non

Ce qui matraque le serveur, ce sont d'une part les bots qui lancent des recherches texte, j'ai donc restreint le délai entre deux recherches, et les sessions invitées ajoutées dans la base pour chaque visite. Les simple compteurs de visiteurs sur la page d'accueil marchent très bien pour quelques dizaines voire quelques centaines de visiteurs par heure, mais quand ce sont des dizaines de milliers d'IP de bots par heure, ça crée une véritable charge sur la BDD. De la même manière, on utilisait depuis plus de 20 ans la recherche texte de phpBB sans problème qui n'est pas liée à la base utilisée, mais vu la charge la recherche texte mysql semble bien plus performante. Bref, il fallait minimiser la charge sur la BDD car c'était notre plus gros goulot d'étranglement.

Changements de paramètres Apache

Changement de la valeur de MaxRequestWorkers de 150 à 300 connexions. Ajout de "ServerLimit 10". On a 4Go de Ram et on peut se permettre cette petite augmentation.

> cat /etc/apache2/mods-enabled/mpm_worker.conf

<IfModule mpm_worker_module>
        StartServers            2
        MinSpareThreads         25
        MaxSpareThreads         75
        ThreadLimit             64
        ServerLimit             10
        ThreadsPerChild         25
        MaxRequestWorkers       300
        MaxConnectionsPerChild  0
</IfModule>

Changement de la valeur de KeepAliveTimeout dans /etc/apache2/apache2.conf de 5s à 2s.

cat /etc/apache2/apache2.conf | grep KeepAliveTimeout
# KeepAliveTimeout: Number of seconds to wait for the next request from the
KeepAliveTimeout 2

Changements des paramètres PHP dans opcache.ini

Ces changements sont des suggestions de Gemini de changements du fichier opcache.ini, je ne suis pas sûr qu'elles aient beaucoup joué sur la charge mais ça ne mange pas de pain.

; configuration for php opcache module
; priority=10
zend_extension=opcache.so
opcache.jit=off

; Give it enough room to actually breathe (256MB is safe for most forums)
opcache.memory_consumption=512

; Fix the string buffer issue (increase from 8MB to 32MB)
opcache.interned_strings_buffer=32

; Since phpBB has many files, keep this high
opcache.max_accelerated_files=20000

; During bot attacks, stop checking for file changes every second.
; 60 seconds is much easier on the CPU.
opcache.revalidate_freq=60

; This is important for stability
opcache.save_comments=1

Changements du crontab Transvision

On a de multiples sous-domaines, l'un deux est une application maison d'indexation des chaînes à traduire de Firefox et Thunderbird, Transvision,  qui extrait les données de multiples dépôt et les traite toutes les deux heures. C'est essentiellement du python, c'est lent et ça cause plein d'I/O. J'ai mis donc des paramètres nice et surtout ionice qui réduisent au maximum les accès disques. Ce n'était pas un problème avec une charge serveur normale, c'est pourquoi on ne l'avait pas fait. L'indexation prend un peu plus de temps mais ce n'est pas un problème.
00 */2 * * * /usr/bin/nice -n 19 /usr/bin/ionice -c 3 /chemin/vers/script
Généralement parlant donc, j'ai aussi regardé ce qu'on pouvait optimiser chez nous.

Blocage de blocs d'IP

J'ai décidé de bloquer des régions entières, on a déjà du blocage d'IP dans phpBB géré par les modérateurs contre les spammeurs et on bloquait spécifiquement des IPs depuis un an mais la rotation des IPs était trop rapides, des blocages qui marchaient une semaine étaient continuellement à refaire. Les forums sont dédiés essentiellement aux francophones, j'ai donc décidé de bloquer l'Asie, des pays d'Afrique anglophone et du Brésil et des gros services cloud aux États-Unis. C'est malheureux  mais ça a aidé, surtout le blocage des IP chinoises:

 

# 1. phpBB Security: Protect core files
<FilesMatch "^(config\.php|common\.php)$">
    Require all denied
</FilesMatch>

# 2. CONSOLIDATED IP BLOCKING (Processed before Rewrite)
# This is much faster for the CPU than separate blocks
<RequireAll>
    Require all granted

    # --- THE USA & CLOUD BLOCK (The "Hammering" Culprits) ---
    # Amazon AWS
    Require not ip 3.0.0.0/8 13.0.0.0/8 34.192.0.0/10 52.0.0.0/10
    # Google Cloud
    Require not ip 34.0.0.0/11 35.184.0.0/13
    # Microsoft Azure
    Require not ip 13.64.0.0/11 40.64.0.0/10 52.145.0.0/16 20.0.0.0/8 172.213.0.0/16
    # DigitalOcean / Cloud Infrastructure
    Require not ip 104.16.0.0/12 159.203.0.0/16 45.0.0.0/8

    # --- ASIA/CHINA BACKBONE (High Bot Activity) ---
    Require not ip 1.48.0.0/14 1.180.0.0/14 1.192.0.0/13 14.0.0.0/8 27.0.0.0/8
    Require not ip 36.0.0.0/8 42.88.0.0/11 43.0.0.0/8 49.32.0.0/11 58.32.0.0/11
    Require not ip 58.208.0.0/12 59.32.0.0/11 60.0.0.0/10 61.128.0.0/10 101.248.0.0/14
    Require not ip 103.0.0.0/8 106.0.0.0/8 110.0.0.0/8 111.0.0.0/8 112.0.0.0/10
    Require not ip 113.0.0.0/8 114.0.0.0/8 115.128.0.0/9 116.0.0.0/10 117.0.0.0/8
    Require not ip 118.0.0.0/8 119.0.0.0/10 120.0.0.0/8 121.0.0.0/8 122.0.0.0/8
    Require not ip 123.0.0.0/8 124.0.0.0/8 125.0.0.0/8 139.192.0.0/10 171.0.0.0/8
    Require not ip 180.96.0.0/10 182.0.0.0/8 183.0.0.0/8 218.0.0.0/10 221.0.0.0/8
    Require not ip 222.0.0.0/8 223.0.0.0/8

    # --- LATAM & AFRICA ---
    Require not ip 41.32.0.0/14 102.0.0.0/10 105.0.0.0/10 154.0.0.0/10
    Require not ip 177.0.0.0/8 179.0.0.0/8 181.0.0.0/11 186.0.0.0/10 187.0.0.0/8
    Require not ip 189.0.0.0/8 190.0.0.0/10 191.0.0.0/8 197.0.0.0/11 200.0.0.0/11 201.0.0.0/8

    # --- IPv6 ---
    Require not ip 2400:89c0::/32 2408:8000::/14 2409:8000::/14 240e::/18

    # --- Specidic IPs ---
    Require not ip 81.167.26.0/24
    Require not ip 90.156.143.0/24

</RequireAll>

# Force a hard 403 with no fancy PHP styling
ErrorDocument 403 "Forbidden: Access Denied"

# 3. REWRITE RULES (Processed only if IP is allowed)
<IfModule mod_rewrite.c>
    RewriteEngine on

    # Bot Blocking via User Agent
    RewriteCond %{HTTP_USER_AGENT} (AddSearchBot|AI2Bot|Amazonbot|anthropic-ai|Applebot|AzureAI|Bytespider|CCBot|ChatGPT|Claude|Crawl4AI|DeepSeekBot|Diffbot|FacebookBot|Gemini|GPTBot|MetaSr|MistralAI|OpenAI|Perplexity|PetalBot|QichaoBot|SemrushBot|DotBot|AhrefsBot) [NC]
    RewriteRule ^.*$ - [F,L]

    # phpBB standard URL Rewriting
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)$ app.php [QSA,L]
</IfModule>

# 4. PERFORMANCE & OPTIONS
<IfModule mod_headers.c>
    Header set Retry-After "600"
</IfModule>

<IfModule mod_negotiation.c>
    Options -MultiViews
</IfModule>

À noter que j'envoie une 403 en texte brut aux bots identifiés et que je bloque aussi par user agent les gros bots connus, évidemment on a aussi un fichier robots.txt par acquis de conscience que l'on maintient avec la liste fournie part ai.robots.txt. A côté de ça on bloque aussi en 403 pour une semaine les IP qui pilonnent (100 requêtes par secondes) via fail2ban mais c'est une solution qui ne marche plus trop parce que l'indexation se fait maintenant par des dizaines d'IP en parallèle réparties dans le monde entier, mais on a quand même laissé les règles en place.

Voilà, ça a marché pour notre petit VPS, on ne bloque qu'une fraction des bots mais ils n'ont plus d'impact négatif sur le serveur et tous nos sites sont en ligne et réactifs. En espérant que ça aide d'autres projets communautaires qui sont dans une situation similaires ou bien que les solutions que j'ai listé donnent des pistes d'adaptation dans votre propre contexte.

 

Mettre une page HTML locale comme page de nouvel onglet dans Firefox

Depuis 25 ans, j'ai une vieille habitude avec mon navigateur qui est de maintenir une page HTML de liens catégorisés que j'utilise tout le temps et que j'ai en page d’accueil. C'est un simple fichier HTML sur mon disque, pas de serveur web qui tourne. C'est très « old school » je sais, mais ça marche très bien pour mon usage.

Dans Firefox, on peut mettre le lien file:///chemin/vers/mon/fichier.html directement dans la page des paramètres, jusque là tout va bien. Par contre on ne peut pas depuis les préférences redéfinir la page pour l'ouverture des nouveaux onglets, or je commence souvent par ouvrir un nouvel onglet avec CTRL+T avant d'aller sur une de mes pages favorites, donc là je serais obligé de cliquer sur l'icône de page d'accueil ou de faire un ALT+Orig pour charger ma page.

Firefox étant très personnalisable, il est possible de redéfinir ça avec un fichier autoconfig de cette manière :

Création d'un fichier autoconfig.cfg dans le dossier d'installation de Firefox avec ce contenu

// This first line must be a comment
try {
  // New module loader for modern Firefox (v136+)
  ChromeUtils.defineESModuleGetters(this, {
    AboutNewTab: "resource:///modules/AboutNewTab.sys.mjs",
  });

  // Set your local file path here
  var newTabURL = "file:///cheminf/vers/le/fichier/index.html";

  AboutNewTab.newTabURL = newTabURL;
} catch (e) {
  // If there's an error, it will show in the Browser Console (Ctrl+Shift+J)
  console.log("AutoConfig Error: ", e);
}

Création d'un fichier autoconfig.js dans le sous-dossier de l'installation firefox defaults/pref/ :

pref("general.config.filename", "autoconfig.cfg");
pref("general.config.obscure_value", 0);
pref("general.config.sandbox_enabled", false);

(Sous LInux, mettre des droits de lecture possible sur ces fichiers par les utilisateurs, typiquement sudo chmod 644, si l'exécutable est dans un dossier root))

Plus d'information sur autoconfig : Configurer Firefox avec AutoConfig - Mozilla Support

Firefox Nightly, nous voilà !

Ce billet est en grande partie une version en français de mon billet en anglais Let's give Firefox Nightly some love! que j'ai publié il y a un peu moins de deux semaines.

Après une décennie dédiée à rendre les sites web Mozilla disponibles dans des dizaines de langues, à construire des communautés de traducteurs dans le monde entier et à créer des outils de contrôle qualité, des tableaux de bord et des APIs pour nous aider à livrer nos logiciels et sites dans toutes les langues, j'ai récemment quitté le département « Localization » afin de travailler sous les ordres de Doug Turner et de mettre en place un nouveau projet bénéficiant directement aux équipes Plateforme et Firefox !

Je suis désormais responsable d'un projet visant à faire de Nightly un canal maintenu à part entière (tout comme nous avons les canaux Aurora, Bêta et Release) et dont l'objectif sera d'impliquer notre communauté d'utilisateurs les plus techniques dans le projet Mozilla à travers des activités ayant un impact mesurable sur la qualité même de nos logiciels.

Voici quelques uns des objectifs que j'aimerais nous voir atteindre en 2016-2017 :

  • Doubler le nombre d'utilisateurs de Nightly afin de détecter beaucoup plus tôt les régressions, plantages et problèmes de compatibilité avec le Web. Une régression détectée et rapportée juste après que le patch la causant a été intégré sur mozilla-central est un simple backout (retour arrière) du dit code, cette même régression rapportée des semaines voire des mois plus tard via Aurora, Bêta ou bien même découverte sur la version en production de Firefox peut représenter un problème bien plus important.

  • Faire de Firefox Nightly un véritable point d'entrée pour les utlisateurs les plus techniques souhaitant s'impliquer dans Mozilla et nous aider à livrer du logiciel (qualité, code, compatibilité web, sécurité…). Dans le cadre de Firefox bien sûr, mais aussi dans celui de tout projet Mozilla pouvant bénéficier d'une plus grande participation externe.

  • Faire de Firefox Nightly un logiciel plus adapté à ces contributeurs techniques. Cela signifie dans un premier temps d'utiliser les canaux de communication qui y sont intégrés (about:home, tuiles, pages de premier démarrage et de mise à jour…) afin de communiquer des informations adaptées à une audience technique et proposer des ressources, des activités et des pistes techniques pour participer au projet Mozilla. J'ai aussi l'intention d'apporter une attention tout particulière à trois pays (l'Allemagne, la France et l'Espagne) où nous avons des communautés locales fortes, des employés et des locaux pouvant accueillir des événements et nous permettant d'interagir plus facilement avec les bénévoles.

Je ne travaillerai pas seul sur ce projet, Sylvestre Ledru (Release Managment Lead) a créé une nouvelle équipe composée de Marcia Knous aux États-Unis et de Calixte Denizet en France qui travaillera à améliorer la qualité du canal Nightly et analysera les plantages et régressions. Des membres d'autres départements (Participation, MDN, Security, Developer Relations…) ont aussi montré un grand intérêt pour ce projet et ont annoncé leur intention de s'impliquer.

Mais d'abord et avant tout, j'ai bien l'intention d'impliquer la communauté Mozilla et j'espère aussi attirer des personnes qui ne sont pas encore mozilliens et faire avec elles de ce projet « Nightly Reboot » un retentissant succès !

Quelques ressources pour s'impliquer :

  • Il existe un canal IRC #nightly sur le serveur irc.mozilla.org, mon pseudo là bas est pascalc, n'hésitez-pas à m'y contacter si vous désirez apporter votre pierre à l'édifice, en savoir plus sur l'état du projet ou bien proposer vos propres idées (le canal est anglophone).

  • Si vous désirez télécharger Nightly, rendez-vous sur nightly.mozfr.org et vous y trouverez des versions en français. Le site officiel de Mozilla est nightly.mozilla.org mais il ne propose que des versions en anglais et donner des retours sur la qualité de la traduction est aussi une manière d'améliorer Firefox !

  • Si vous voulez découvrir au jour le jour tous les trucs sympa qui arrivent sur Nightly, suivez le compte Twitter @FirefoxNightly

  • Si vous êtes déjà utilisateur de Nightly et que vous rapportez des bugs sur bugzilla.mozilla.org, ajoutez le texte [nightly-community] dans le champ whiteboard de vos rapports de bugs, cela nous permettra de mesurer l'impact de notre communauté Nightly sur Bugzilla.

Intéressé par ce projet ? N'hésitez-pas à vous impliquer et ne manquez-pas de me contacter si vous avez une suggestion ou une idée qui pourrait s'inscrire dans ce projet. Plusieurs personnes m'ont déjà donné des retours des plus intéressants !

Vous pouvez me contacter (en anglais, français ou espagnol) via les moyens de communication suivants : pascal À mozilla POINT com IRC sur Moznet et Freenode: pascalc Twitter: @pascalchevrel

Événements chez Mozilla Paris en Septembre !

Depuis la récente ouverture des nouveaux locaux de Mozilla à Paris, nous organisons régulièrement des réunions et des événements avec la communauté Mozilla bien sûr, mais aussi avec les communautés du libre et du web francophones.

Nous organisons aussi de nombreuses autres rencontres et séminaires de travail dans d'autres domaines (par exemple cette semaine le W3C et le CSS WG travailleront dans nos locaux) et ce mois-ci, nous avons plusieurs événements intéressants auxquels vous pouvez assister / participer :

  • Mercredi 11 septembre c'est Javascript les doigts dehors, de 19h à 23h. Si vous voulez apprendre, ou enseigner le javascript, en mangeant des gateaux fait main, c'est par ici. Inscription obligatoire (dans la limite des places disponibles).
  • Jeudi 12 septembre à 19h, rencontre avec les trois startups françaises sélectionnées par Mozilla dans le cadre de notre programme WebFWD d'accélérateur de startups du Web : CozyCloud, PLOM.IO et Webshell.io (par ordre alphabétique). Pour mieux les connaitre, les féliciter… et boire un coup à leur santé, linscription est sur ce framadate.
  • Week end des 14 et 15 septembre : en collaboration avec la mairie du 9ème arrondissement, les locaux de Mozilla seront ouverts au public pour les journées du patrimoine ! Comme vous le savez peut être, Mozilla occupe des locaux classés monuments historiques et qui bénéficient d'une décoration exceptionnelle. Si vous voulez rencontrer Mozilla et des Mozilliens tout en faisant une sortie culturelle, c'est une excellente occasion !
  • Le samedi 21 septembre, nous organisons une rencontre avec la communauté Dotclear, si vous voulez participer au code de Dotclear, au développement des futures version, au design, apprendre à faire un thème ou une extension et de manière générale participer au projet Dotclear, vous êtes les bienvenus (mais inscrivez-vous svp ;) )!
  • week end des 28 et 29 septembre : Mozilla Game Jam Paris, hackathon de création de jeux vidéos en HTML5, a priori c'est déjà plein mais il y a une liste d'attente

Ce n'est évidemment qu'un début, si vous faites du libre et du web et que vous voulez orgnaniser un petit événement ou une réunion de travail, n'hésitez pas à nous (me) contacter ! :)

Plan vers Mozilla Paris

Compiler Firefox OS en version desktop sur une Ubuntu

J'ai installé hier Firefox OS en version Desktop sur mon Ubuntu (12.04) afin de jouer avec.

Voici les étapes qui marchent chez moi :

Tout d'abord, il vous faut installer les paquets nécessaire à la compilation et bien sûr les outils de gestionnaire de version nécessaires :

sudo apt-get install mercurial g++ make autoconf2.13 yasm libgtk2.0-dev libglib2.0-dev libdbus-1-dev libdbus-glib-1-dev libasound2-dev libcurl4-openssl-dev libiw-dev libxt-dev mesa-common-dev ccache git

Ensuite, on va créer un dossier FirefoxOS dans son /home :
mkdir ~/FirefoxOS/

Puis on va ce dossier :
cd ~/FirefoxOS/

Ensuite on récupère le code source de Firefox OS Bêta :
hg clone http://hg.mozilla.org/releases/mozilla-beta

(ça créera un dossier ~/FirefoxOS/mozilla-beta)

Puis on récupère le code source de Gaia, l'interface graphique en HTML5 de FirefoxOS :
git clone https://github.com/mozilla-b2g/gaia/

(ça créera un dossier ~/FirefoxOS/gaia)

Les deux étapes ci-dessus prennent du temps, surtout si vous avez une petite connexion.

Une fois ceci fait, il vous faut créer un fichier .mozconfig (notez bien le point avant mozconfig) que l'on mettra ici:
~/FirefoxOS/mozilla-beta/.mozconfig

Voici le contenu de mon .mozconfig :

CONCURRENCY=$(( `grep processor /proc/cpuinfo | wc -l` + 2 ))
mk_add_options MOZ_MAKE_FLAGS="-j$CONCURRENCY"
mk_add_options MOZ_OBJDIR=../build
# Use ccache
ac_add_options --with-ccache=/usr/bin/ccache
ac_add_options --enable-application=b2g
ac_add_options --disable-libjpeg-turbo
# This option is required if you want to be able to run Gaia's tests
# ac_add_options --enable-tests
# turn on mozTelephony/mozSms interfaces
# Only turn this line on if you actually have a dev phone
# you want to forward to. If you get crashes at startup,
# make sure this line is commented.
# ac_add_options --enable-b2g-ril

Une fois ceci fait, on va compiler Firefox OS, attention, ça prend du temps ! Plus de deux heures sur mon petit portable.
cd ~/FirefoxOS/mozilla-beta
make -f client.mk


La compilation créera un dossier ~/FirefoxOS/build/ et votre binaire se trouve là :
~/FirefoxOS/build/dist/bin/b2g

Une fois ceci fait, on va créer un profil Gaia :
cd ~/FirefoxOS/gaia
make

Une fois le profil créé, vous pouvez lancer Firefox OS avec cette commande :
~/FirefoxOS/build/dist/bin/b2g -profile ~/FirefoxOS/gaia/profile


et voilà le résultat :
Firefox OS sur Ubuntu

Si vous voulez plus d'informations, il y en a plein ici en anglais :
https://developer.mozilla.org/en-US/docs/Mozilla/Firefox_OS

N'oubliez pas non plus que Geckozone (la section forums de MozFr) a ouvert récemment un forum pour FirefoxOS :
Forum Firefox OS en français

Et vous pouvez discuter avec des développeurs et bénévoles Mozilla francophones dans le salon IRC #devfr sur irc.mozilla.org

MODIFICATION : 10h40, j'ai modifié l'url du dépôt mozilla-beta, je l'avais tapée de mémoire et évidemment ma mémoire était défaillante, désolé :)
MODIFICATION: 12h11,décidemment c'est la série, la création de profil gaia se fait évidemment après un cd dans le dossier gaia et pas dans le dossier mozilla-beta, corrigé aussi :)
MODIFICATION: 05/12/2012,ajout de ccache et git dans les dépendences nécessaires

Quelques nouvelles Mozilla

Tiens, ce matin j'ai envie d'utiliser mon blog :)

Alors voilà quelques nouvelles intéressantes cette semaine liées à Mozilla :

  • Mozilla ces deux dernières années s'est beaucoup impliqué techniquement dans les groupes de travail de l'IETF qui crée les normes Internet (protocoles par exemple) et dépend pour son fonctionnement de la fondation Internet Society. Mozilla est désormais membre sponsor de l'internet Society afin d'aider aussi l'IETF pour ses dépenses de fonctionnement. Billet de Josh Ash à ce sujet : Mozilla Joining ISOC in Support of IETF Activities
  • On est en train de finaliser un mode de navigation privée par fenêtre, ce qui permet d'avoir une fenêtre Firefox normale et une fenêtre Firefox en navigation privée en même temps (alors qu'en ce moment soit toutes la navigation est en mode incognito, soit tout est en mode normal). Ehsan Akhgari, le développeur qui est derrière le mode de navigation privée (qu'il avait ajouté à Firefox en tant que simple bénévole à l'époque et qui a bossé sur plein de projets importants pour Firefox depuis qu'il est employé, par exemple le nettoyage du composant Editor, le système de mise à jour silencieux depuis Firefox 4, plein de trucs sur le layout...) fournit des binaires en anglais depuis aujourd'hui basés sur Firefox Nightly avec ce nouveau mode de navigation privée par fenêtre et demande à tout le monde de tester et de lui envoyer plein de feedback parce que cette réécriture implique des changements de code importants touchant plein de domaines et pourrait causer des régressions. Plein de détails sur son billet Per-window private browsing ready for testing now!
  • Xavier Mouton-Dubosc a écrit aujourd'hui un très bon article en français sur FirefoxOS, le Firefox Marketplace et de manière générale ce que représente Mozilla et Firefox pour l'avenir du Web Mobile, à lire : 2012, fin d'un monde du web ?
  • Les forums de Geckozone ont maintenant rejoint le projet collaboratif Mozilla francophone MozFr, les habitués ont donc pu découvrir la nouvelle addresse des forums qui sont maintenant sur notre serveur commun (forums.mozfr.org). La migration est passée, Google réindexe les forums vitesse grand V (déjà plus de 220.000 pages indexées en deux semaines), il y a encore beaucoup à faire mais il y a aussi des nouveautés, en particulier, un tout nouveau forum pour Firefox OS et un autre pour les Open Web Apps 

Fonctionnement en parallèle de deux versions de Firefox

Une petite astuce que j'ai apprise récemment sur IRC et qui est bien pratique.

J'utilise en permanence deux versions de Firefox (celle proposée par les dépôts Ubuntu et Firefox Nightly). Jusque là, tout va bien, j'ai un lanceur spécifique qui me permet de les lancer en parallèle avec des profils séparés :

$ firefox -P "nom" -no-remote

Mais cette méthode a un inconvénient dans Gnome Shell (peut être aussi sous Unity, pas testé), c'est que lorsqu'on fait alt+tab pour passer d'une appli à une autre, toutes les fenêtres de mes deux firefox sont groupées sous la même icône Firefox. La solution à cela est de rajouter une option dans le lanceur :

$ firefox -P "nom" --class "Nocturne" -no-remote

Voilà, j'ai maintenant des icônes distinctes en utilisant alt+Tab, chacune avec ses sous-fenêtre associées.

Le seul bug est que lorsqu'il y a une mise à jour automatique, l'option class n'est pas reprise en compte lors de la relance du navigateur, il faut le fermer/ouvrir manuellement pour que ça le reprenne en compte.

La seule référence à cette option est celle-ci https://bugzilla.mozilla.org/show_bug.cgi?id=496653.

Nouvelle page d'accueil pour Firefox + nouvelle page sur ouverture d'onglet

Depuis quelques jours, la page d'accueil de Firefox (about:home) a connu sa première modification majeure depuis Firefox 4.

Désormais, de larges icônes permettent d'accéder aux marque-pages, à l'historique, aux extensions, aux paramètres de Firefox, au gestionnaire de téléchargements et à l'outil de synchronisation des données.

Voici une capture écran sur Firefox Nightly d'hier (sous Linux):

about:home

En parallèle, l'ouverture d'un nouvel onglet affiche désormais les neufs sites les plus fréquemment visités que l'on peut réorganiser à la souris, enlever et épingler pour qu'ils ne soient pas remplacés:about:newtab

On peut s'attendre à des évolutions dans les versions à venir bien sûr, mais les captures écran étant sympas, je les partage :)

Si vous voulez essayer ça dans une nightly, c'est par là:

ftp://ftp.mozilla.org/pub/firefox/nightly/latest-mozilla-central-l10n/

Ce soir c'est Fosdem, venez rencontrer Mozilla !

Comme tous les ans depuis 2004,  je vais à FOSDEM ce soir pour y passer le week end entre développeurs libristes à boire des bières refaire le monde et partager l'expérience de nos différents projets.

fosdem

Si vous avez envie de participer à un projet international et populaire (utilisé par 400 millions d'utilisateurs), quel que soit le domaine (code, traduction, promotion, place des femmes dans le libre, graphisme...) n'hésitez pas à venir sur le stand Mozilla nous en parler (vous demandez Pascal, Delphine ou William, on redirigera vers les bonnes personnes si nécessaire). On fera sûrement aussi des démos de Firefox 4 sur le stand pour les curieux qui ne l'auraient pas encore essayé ;). Voilà nos têtes pour nous repérer:

PascalDelphineWilliam
delphinewilliam

Voilà le programme pour Mozilla sur ces deux jours : Mozilla at Fosdem 2011

J'ai un patch dans Firefox 4 beta 10, pourquoi pas vous ?

Depuis aujourd'hui, dans la version Linux de Firefox,  l'icône symbolisant un document vide ou une page qui n'a pas d'icône envoyée par le serveur ont un nouvel aspect un peu plus intégré dans Gnome puisque la vieille icône en png a été remplacée par un appel à l'icône système équivalente sous Gnome. Cela signifie que si vous changez de thème Gnome et que ce thème a une icône différente pour les documents vierges, Firefox utilisera cette icône.

Ce n'est pas un gros changement dans Firefox, mais celui-ci a une saveur particulière puisque j'en suis l'auteur et que c'est mon premier vrai patch accepté pour Firefox 4.

Il s'agit du bug 621091 et voici la photo avant/après mon patch:

Quelles leçons ai-je tiré de ce travail:

  1. Ça a été moins compliqué que je ne le pensais
  2. Il est important de bien comprendre le processus de résolution d'un bug dans Bugzilla pour faire avancer les choses
  3. Des améliorations directes au logiciel sont possible même par des non-développeurs
  4. Ce que j'ai appris à travers ce bug devrait me permettre de régler d'autres problèmes simples à l'avenir
Au cours de la réalisation de ce patch, j'ai aussi trouvé une petite erreur dans un chemin de fichier pour le thème Linux (bug 627881) qui a aussi été corrigée et un bug de crash dans un cas un peu rare (bug 621009) qui sera sûrement corrigé plus tard. Il y a donc eu aussi un aspect bêta-test autour du bug initial qui était intéressant.

Les ressources qui m'ont aidé pour mon patch sont les suivantes:

Ma bonne résolution pour 2011 est désormais d'écrire un patch par mois pour Firefox et d'en avoir un tiers accepté sur l'année (par exemple j'ai un patch en cours qui rajoute des options non documentées quand on fait firefox --help dans la console, bug 619069). Je me concentre sur des patchs dédiés à Linux parce que c'est d'une part la plateforme que je connais le mieux et que d'autre part de par son statut de plateforme très minoritaire, elle reçoit moins d'attention que les autres surtout en ce qui concerne le fignolage de l'interface.

Je ne peux qu'encourager les libristes francophones à faire de même et à participer directement au code de Firefox, tout auteur d'un patch accepté aura sa photo publiée sur Bonjour Mozilla !!