Retour d’expérience #1: extension Firefox

posted on décembre 21st, 2008 ·

Vous le savez peut-être, je suis ingénieur R&D et co-fondateur chez pearltrees. J’ai eu pour mission de prototyper et développer un grand nombre de couches applicatives. Entreprendre est une expérience particulièrement enrichissante et j’ai remarqué que les entrepreneurs partageaient souvent l’expérience humaine qu’ils avaient vécue. Et bien moi, j’ai décidé de partager mon expérience technique. Alors ça fait moins rêver les ménagères, mais ca intéressera les ingénieurs devant faire des choix de techno.

Voici le premier volet d’une série d’articles technos qui couvriront les différents langages que j’ai manipulé ces derniers mois. En évitant de plonger trop profondément dans la technique, je vous livrerais mes impressions, mes surprises et mes déceptions. Au programme: extension firefox, Zend Framework 1.5, Flex 3, Agilité, et peut être d’autres sous-topics.

Commençons par Firefox. Une expérience incroyable, la puissance de l’open source, la joie d’un développement multi-plateforme, XUL c’est la vie, mouai, un peu déçu quand même. Firefox, le navigateur connu et reconnu pour sa plateforme d’addons, ne facilite pas vraiment la vie des développeurs.

Pas d’IDE.

Même si Spket a comblé ce manque. J’aurais bien voulu avoir des outils un peu plus évolués pour debugging, le packaging et le déploiement. Créer un système de mise en production est vraiment digne du parcours du combatant. La génération des clés publiques / clés privées, le management des mises à jour, tout est compliqué et peu documenté. Mozilla pousse donc à utiliser sa plateforme de diffusion d’extension, impossible dans mon cas, notre application est encore privée.

99% javascript.

Ne vous trompez pas, développer une extension Firefox c’est développer un programme en javascript. Avec toutes les problématiques de débuggage que cela comprend. Si vous envisagez de développer ou faire développer une extension firefox, prenez un développeur senior en javascript.

Firefox 2.0 c’est bien, Firefox 3.0 c’est mieux, créer un plugin compatible entre les deux, c’est galère.

Dans mon cas j’ai du développer en double le gestionnaire de mot de passes ainsi qu’un programme de synchronisation multifenêtres. Et oui il faut synchroniser vous-même l’état de votre extension entre les différentes fenêtres 🙁 Dans les deux cas une solution « clean » existe dans Firefox 3 mais vous devrez utiliser différents « hacks » pour supporter Firefox 2.

Interopérabilité limitée.

Il suffit de jeter un œil dans la documentation de firefox pour se rendre compte que certaines fonctionnalités ne sont pas disponibles sous mac, sous linux ou pire, que les résultats obtenus sont parfois « différents ». Le composant permettant de créer un panneau d’option est particulièrement buggé. Vous en viendrez forcément à supporter un nombre limité d’environnements. En me battant j’ai réussi à faire tourner mon extension sur Firefox 2 (Windows, Mac, Linux).

Des extensions qui peuvent rentrer en concurrence

Pendant quelques temps mon extension n’était pas utilisable avec certaines autres extensions activées. Les autres extensions installées influençaient mon application (problème résolu, mais qui soulève bel et bien un problème de concurrence). Il est même impressionnant de voir le pouvoir que peut prendre une extension sur le navigateur. Désactivation d’autres plugins, récupération de mots de passes, tout est possible.

Reste un gros point positif.
C’est plus facile que créer un plugin IE en C++.

→ 1 CommentCatégories: firefox · pearltrees

WCAG 2.0, attention cet article n’est pas AAA.

posted on décembre 15th, 2008 ·

Jolie titre barbare non? Et pourtant les fanas du W3C l’auront bien compris, je parle ici d’accessibilité. Pour ceux qui sont à la masse, l’accessibilité sur internet c’est comme l’accessibilité dans le métro, en chaise roulante tu montes difficilement les escaliers. Et quand tu es mal voyant tu valides difficilement les CAPTCHA (une vraie saloperie ces captcha).

Le W3C met donc à jour ses fameuses guidelines, qui fut un temps je connaissais par cœur (OMG). Allez hop, intéro surprise, c’est quoi la 2.2.1.?

Comment ça on s’en fout ? Comment ça, 20% de la population aurait un problème d’accessibilité ? Comment ça, 99,9% des sites internet ne sont pas accessibles ? Hey, il faut se réveiller, un escalier c’est moins cher à construire et à entretenir qu’un ascenseur. Donc quand on construit un bâtiment ou un site internet, on a bizarrement tendance à « oublier » les contraintes d’accessibilité. Par exemple, nous construisons actuellement une application riche en Flex et nous avons souvent abordé les problématiques d’accessibilité, bilan ? Les solutions existent mais elles sont chères (en coup de développement). Donc pour l’instant on développe de nouvelles features et ce chantier est remis « à plus tard ».

Quelques solutions qui pourraient changer les choses:

  1. Légiférer
  2. Récompenser les entreprises qui valident les recommandations AA et AAA. Allégements fiscaux & co.
  3. Communiquer et sensibiliser. Une campagne de spots sur dailymotion?

Des idées ?

En attendant je vous souhaite une bien bonne journée. Et pour ceux qui ont du temps à perdre, allez valider la guideline 1.1.1. en mettant à jour votre programme de CAPTCHA.

→ 5 CommentsCatégories: Accessibilité · W3C

Flex: Workaround for wmode bug

posted on décembre 9th, 2008 ·

You just turned wmode to « opaque » or « transparent » ?
Your keyboard does weird things in TextInputs and TextAreas ?
You are running Firefox ?
Then you just discovered a pretty flash bug called « THE WMODE BUG« .

Because everyone is complaining to Adobe and Adobe claims it is browsers fault, this issue might not be fixed tomorrow. Thus I’ve decided to create a workaround for non-standard keyboards. It currently supports 5 keyboards: French, Belgian, German, Swiss & Arabic, but the code has been designed to support other keyboards.

Here is an example. If you are using an Azerty keyboard try to type « ? » or « @ » char in both following text inputs.

view source

Two components have been created, extending TextArea and TextInput Flex components. It currently uses javascript functions getClientLang() and getBrowserName() for default settings. You can also force a keyboard configuration using the forceLang parameter.

You are free to use this code, adding new text components or new keyboards support. If you want your implementation to be published, send me an email: nicolas.cynober-at-pearltrees-dot-com.

Thanks to Hans Van de Velde (Beligan Keyboard), Christian Gambardella (German Keyboard), Ahmad Adel Eldardiry (Arabic Keyboard), Julien Wallen (Swiss-FR keyboard), Meir Rotstein (Hebrew keyboard), Ryszard Chrystyniak (Polish Keyboard & Spark version).

If your keyboard is not fixed yet, and you don’t want to code anything. You can use the following form to submit a list of wrong keys:

updates:

  • 06/2010: Add Hebrew and Polish keyboards.
  • 12/2009: Fix bug for english locale.
  • 05/2009: Stop supporting this code: pearltrees.com now use the default wmode. So this workaround has been used and tested during 5 monthes.
  • 05/2009: Fixing various bugs
  • 05/2009: Add a static const to disable easily the workaround
  • 05/2009: Add Arabic, German & Swiss keyboards.
  • 12/2008: Create a form helping people to submit wrong characters.

Note aux lecteurs: Ça vous est déjà arrivé de ne pas pouvoir faire de « @ » dans un site en flash ? Bah c’est ce problème là que j’essaye de résoudre. Problème qui survient uniquement sur certains types de claviers. Aucun problème sur les qwerty US…

→ 25 CommentsCatégories: Flex