Let's write again!

This commit is contained in:
Alexis Métaireau 2014-07-29 14:19:41 +02:00
parent 61f869f2ad
commit 7cba8868df
3 changed files with 249 additions and 69 deletions

View file

@ -4,7 +4,7 @@ Hi, I'm Alexis,
:slug: about :slug: about
I'm a software developer with interests ranging from software development to I'm a software developer with interests ranging from software development to
ecology, education, agriculture and do it yourself. ecology, education, agriculture and *do it yourself*.
I'm currently working at `Mozilla <http://mozilla.org>`_ on the *Services* I'm currently working at `Mozilla <http://mozilla.org>`_ on the *Services*
team where I build services which aim to protect your privacy. We are also team where I build services which aim to protect your privacy. We are also
@ -12,7 +12,7 @@ building a bunch of tools in this process. Everything we do is released with
a free licence, meaning you can reuse it and improve it if you want. I think a free licence, meaning you can reuse it and improve it if you want. I think
collaboration is better than competition. collaboration is better than competition.
This is my web log. I like to put here my thoughts, in french or These are my web logs. I like to put here my thoughts, in french or
english. english.
You can find most of the computer related projects I am involved with You can find most of the computer related projects I am involved with
@ -40,6 +40,10 @@ vous êtes libres de les réutiliser et les améliorer.
Vous êtes en train de lire mes carnets. Il s'agit de réflexions (techniques ou Vous êtes en train de lire mes carnets. Il s'agit de réflexions (techniques ou
non) que je souhaite partager. Elles sont des fois en Anglais des fois en non) que je souhaite partager. Elles sont des fois en Anglais des fois en
Français (j'ai du mal à faire un choix !) Français (j'ai du mal à faire un choix !).
Vous pouvez également consulter `mes notes <|category|notes>`_, prises
(uniquement en français ce coup ci) au détour d'une lecture, écoute ou
visualisation.
N'hésitez pas à me contacter si vous souhaitez: `alexis@notmyidea.org`. N'hésitez pas à me contacter si vous souhaitez: `alexis@notmyidea.org`.

View file

@ -1,86 +1,164 @@
Retours sur un an et demi de Mozilla Retours sur deux ans à Mozilla
#################################### ##############################
Il y à un an et demi, je commançais à travailler chez Mozilla, dans l'équipe ou :date: 2014-07-29
je suis encore actuellement, l'équipe "services". Depuis, énormement de choses
ont évoluées, tant en ce qui concerne les objectifs de Mozilla que le travail
que j'effectue au jour le jour. Pour autant, mes objectifs personnels
restent intacts.
J'aime bien faire des points de temps à autre, donc allons-y! .. note::
Historique Ça fait un bail que j'ai cet article en cours de rédaction, et je me dis que
========== je dois le poster maintenant, sinon je ne le ferais jamais (saloperie de
perfectionnisme ?)
Un an et demi, ça me paraît énorme, c'est le temps le plus long que j'ai passé Il y à deux ans et demi, en décembre, je commençais à travailler chez
à travailler sur un projet, avec les mêmes personnes. Si vous suivez un peu ces Mozilla, dans l'équipe "Cloud Services".
carnets, vous savez surement que je travaille énormement avec `Tarek
Depuis, énormément de choses ont évoluées, tant en ce qui concerne les
objectifs de Mozilla (avec l'arrivée de FirefoxOS) que le travail que
j'effectue au jour le jour. Pour autant, mes objectifs personnels restent
intacts.
Deux ans ça parait énorme, c'est le temps le plus long que j'ai passé
à travailler sur un projet, avec quasiment les mêmes personnes. Si vous suivez
un peu ces carnets, vous savez surement que j'ai beaucoup travaillé avec `Tarek
<ziade.org>`_ par exemple. <ziade.org>`_ par exemple.
Ça à été (et c'est toujours) un réel plaisir de bosser avec la personne dont
j'avais lu les livres pour apprendre le python, merci !
Services Services
-------- --------
Le principal de mon travail a été de construire des outils. Je suis le Le principal de mon travail a été de construire des outils. Je suis le
mainteneur de `Cornice <https://github.com/mozilla-services/cornice>`_, un mainteneur de `Cornice <https://github.com/mozilla-services/cornice>`_, un
utilitaire qui vient se greffer par dessus le framework python pyramid pour utilitaire qui vient se greffer par dessus `le framework python pyramid
vous simplifier la vie et créér des services web; J'ai travaillé un peu <http://docs.pylonsproject.org/projects/pyramid/en/latest/>`_ pour
sur un outil de gestion des process nommé `Circus vous simplifier la vie et créer des services web; J'ai travaillé un peu
<https://github.com/mozilla-services/circus>`_, et travaille actuellement sur un outil de gestion des processus nommé `Circus
sur un outil de montée en charge dénommé `Loads <https://github.com/mozilla-services/circus>`_, et également sur un outil de
<https://github.com/mozilla-servbices/loads>`_ montée en charge dénommé `Loads <https://github.com/mozilla-services/loads>`_
Au tout début de ma *mission*, j'ai travaillé sur un concept de `serveur de Au tout début, j'ai travaillé sur un concept de `serveur de
tokens <https://github.com/mozilla-services/tokenserver>`_. L'idée était de tokens <https://github.com/mozilla-services/tokenserver>`_. L'idée était de
désolidariser l'authentification des services web des services eux mêmes. désolidariser l'authentification des services web des services eux mêmes.
L'idée est (je pense) bonne mais le service n'à jamais été utilisé. La raison L'idée est (je pense) bonne mais le service n'a pas été utilisé durant plus de
étant principalement que Sync, pour lequel le serveur de token à été développé deux ans. La raison étant principalement que Sync, pour lequel le serveur de
est en train d'être réécrit et repensé (voir le projet nommé `Profile In The tokens à été écrit, a subi des changements majeurs (qui sont rentrés en
Cloud <https://wiki.mozilla.org/Identity/PiCL>`_ production il y a quelques semaines)
J'avoue que mettre un projet au rebut comme celui-ci, sans être réellement Circus est né de besoins découverts via le token server, et il m'a
prévenu est un peu dur, mais bon, il paraît que ça arrive. L'écriture de celui personnellement beaucoup appris. Le token server est finalement utilisé dans la
ci n'a pas été vaine, puisque Circus est né de besoins la bas, ainsi que beaucoup nouvelle version de Sync qui est rentrée en production il y à peu.
d'enseignements personnels.
Marketplace: chouette, on va casser du serveur. Marketplace ("chouette, on va casser du serveur")
----------------------------------------------- -------------------------------------------------
Après 6 mois à travailler à Services, nous avons commencé à rejoindre l'équipe Après 6 mois à travailler à Services, Tarek et moi avons commencé à rejoindre
du Marketplace pour faire un travail d'audit de performance. l'équipe du Marketplace pour faire un travail d'"audit de performance".
L'idée était de prêter main forte à l'équipe du marketplace, mais les détails L'idée était de prêter main forte à l'équipe du marketplace, mais les détails
étaient alors assez flous. Le code de marketplace est assez indigeste au étaient alors assez flous. Le code est assez indigeste au premier abord, ce qui
premier abord, ce qui m'avait alors pas mal refroidi. La raison principale m'avait alors pas mal refroidi. La raison principale étant que le code est
étant que le code est utilisé à la fois par addons.mozilla.org et par utilisé à la fois par `addons.mozilla.org` et par `marketplace.firefox.com`,
marketplace.firefox.com, rendant les choses souvent un peu plus compliquées rendant les choses souvent un peu plus compliquées qu'il ne faudrait.
qu'il ne faudrait.
Il y à actullement énormement d'efforts qui sont fait pour aller dans la bonne Cet "audit" à été l'occasion de travailler sur des outils de montée en charge
direction et faire en sorte que le code soit plus facile à maintenir et que le assez sympa, qui ont donné naissance à un projet qu'on utilise assez souvent
projet soit plus facile à aborder. maintenant, `Loads`_.
Une partie du plan à été de sortir certaines fonctionnalités du code du Énormement d'efforts sont fait pour aller dans la bonne direction et faire en
marketplace, pour en faire quelque chose de plus facile à maintenir et de moins sorte que le code soit plus facile à maintenir et que le projet soit plus
imbriqué. `Monolith <https://github.com/mozilla/monolith>`_ est le projet qui facile à aborder. D'ailleurs, pas mal de copains djangonautes français
fait sortir les statistiques du marketplace, sur lequel j'ai travaillé. travaillent dessus (salut `Mathieu <http://virgule.net>`_, Yohan, `David
<http://larlet.fr>`_ et `Mathieu Agopian <http://mathieu.agopian.com>`_!)
Une partie de notre plan à été de sortir certaines fonctionnalités du code
actuel, pour en faire quelque chose de plus facile à maintenir et de moins
imbriqué.
La Communauté La Communauté
------------- -------------
Circus et Cornice sont deux outils qui semblent utiles à la communauté. J'ai eu `Circus`_ et `Cornice`_ sont
des retours très positifs sur Cornice, et j'essaye de le faire évoluer dans la deux outils qui semblent utiles à la communauté. J'ai eu des retours très
direction qui me semble propice. positifs sur Cornice, et j'essaye de le faire évoluer dans la direction qui me
semble propice.
Nous utilisons actuellement Cornice pour coder `Daybed D'ailleurs, cornice est utilisé (par `Mathieu L. <http://leplatrem.github.io/>`_
<https://github.com/spiral-project/daybed>`_ un service de validation de — encore un —, `Rémy <http://ionyse.com>`_ et moi) actuellement pour coder
formulaires. `Daybed <https://github.com/spiral-project/daybed>`_ un service de validation
de formulaires, mais ça sera l'objet d'un futur billet.
Circus commence à recevoir des contributions de plus en plus intéressantes, et Circus commence à recevoir des contributions de plus en plus intéressantes, et
à être utilisé en interne chez nous et chez d'autres, donc c'est une à être utilisé en interne chez nous et chez d'autres, donc c'est une
extrêmement bonne nouvelle ! extrêmement bonne nouvelle.
Talkilla / Loop
---------------
Après quelques temps, j'avais envie d'apprendre de nouveau. Python c'est génial
mais c'était devenu ma "zone de confort". J'adore découvrir des choses, donc
c'était le moment de faire en sorte que ça continue!
C'était aussi l'occasion de travailler avec `Nicolas
<https://nicolas.perriault.net/>`_ et `Romain <http://monkeypatch.me/blog/>`_.
Je suivais le projet Talkilla de plus ou moins loin depuis quelques mois,
c'était donc l'occasion à ne pas manquer.
En rentrant dans cette équipe, je cherchais principalement à avoir un projet
visible pour les utilisateurs finaux. Refaire un peu de frontend, apprendre
à faire du JavaScript propre et découvrir de nouvelles personnes.
J'y ai aussi récupéré une équipe qui essaye de suivre les principes de
l'agilité et qui est sur mon fuseau horaire (pour la plupart). Le rêve.
L'idée derrière Talkilla est d'utiliser la technologie de communication pair
à pair dans les navigateurs (WebRTC) pour faire des appels audio / vidéo. En
d'autres termes, c'est un peu transformer votre firefox en téléphone, sauf que
personne ne peut espionner ce qui se passe entre vous et l'autre bout du fil.
A peine arrivé dans le projet (peut-être un mois et quelques après mon
débarquement) le choix à été fait de tout réécrire depuis zero, dans un projet
qui se nomme actuellement "Loop", qui veut proposer la même chose, mais inclus
directement dans Firefox.
C'est en bonne voie, on à quelque chose qui fonctionne dans nightly, et le code
du serveur fonctionne pas mal. Le code du serveur est ici:
https://github.com/mozilla-services/loop-server.
Un client est en train d'être implémenté dans Firefox et un autre en tant
qu'application pour FirefoxOS. Le boulot ne s'arrête pas de pleuvoir, mais je
pense qu'on va dans une direction interessante.
Pour être completment terminé, il faudrait qu'on soit capable de se passer
completement de notre provider, TokBox (que l'on utilise en tant que relai
média), pour que n'importe qui puisse choisir d'utiliser son propre serveur
STUN / TURN et installe son server loop chez lui.
Le travail à distance
=====================
Quand j'ai commencé à travailler à Mozilla, j'ai décidé de venir m'installer
à Paris. La plupart des personnes de mon entourage ont d'ailleur sfait des gros
yeux, parce qu'ils connaissaient mon avis sur la ville en question, mais casser
des préjugés n'est jamais une mauvaise chose.
Après deux ans passés à Paris, j'ai décidé de partir m'installer à Rennes,
puisque de toute manière, la plupart de mon travail s'effectue au jour le jour
à distance. En d'autres termes, la plupart de mon équipe n'est pas à coté de
moi quand je travaille, ce qui veut dire que je peux travailler depuis
n'importe où.
Ce qui fonctionne pour moi, c'est de ne quasiment jamais travailler depuis la
maison. J'utilise `un espace de coworking <http://www.lacantine-rennes.net/>`_
qui est un moyen de garder ma vie perso séparée de ma vie privée et de
rencontrer des gens passionés par ce qu'ils font.
Depuis que je suis arrivé à Rennes, Rémy à commencé à travailler avec moi, et
c'est un réel bonheur que de pouvoir partager des journées de travail. On
"pair-prog" énormement et j'ai l'impression d'avoir un boost dans ma
productivité quotidienne.
Enseignements Enseignements
============= =============
@ -88,13 +166,24 @@ Enseignements
Mozilla est ma première expérience professionnelle, et par conséquent, je Mozilla est ma première expérience professionnelle, et par conséquent, je
manque nécessairement de recul sur ce qui est acceptable et ce qui ne l'est manque nécessairement de recul sur ce qui est acceptable et ce qui ne l'est
pas. D'une manière générale, avoir un environnement de travail basé sur la pas. D'une manière générale, avoir un environnement de travail basé sur la
confiance est réellement appréciable. confiance est réellement appréciable (La première réaction des gens quand je
dis que je peux travailler à distance, c'est de me demander comment ils font
pour être sur que je travaille. Et la réponse est… il n'y en à pas).
J'ai encore un peu de mal à savoir quels indicateurs utiliser pour savoir si je J'ai encore un peu de mal à savoir quels indicateurs utiliser pour savoir si je
suis "productif" ou non, mais j'ai globalement l'impression que je manque de suis "productif" ou non, mais j'ai globalement l'impression que je manque de
concentration et de discipline: prioriser les tâches sur lesquelles je vais concentration et de discipline: beaucoup d'interruptions n'aident pas à se
travailler se fait quasiment au jour le jour alors qu'il serait possible de concentrer.
faire autrement.
La motivation fluctue aussi énormement: un jour on est super motivé, un autre
c'est juste impossible de la trouver. Après quelques expérimentations, le mieux
(pour moi) est d'avoir des horaires fixes, pour pouvoir séparer le travail du
reste, de ne pas hésiter à faire des pauses et d'écouter un peu ses envies et
son corps (si je suis crevé, ça ne sert à rien de se lever pour aller
travailler, il vaut mieux se reposer un peu pour être plus efficace ensuite,
par exemple).
J'ai essayé de tirer quelques enseignements de ces deux années:
Malheureusement, le code n'est pas propre Malheureusement, le code n'est pas propre
@ -103,7 +192,9 @@ Malheureusement, le code n'est pas propre
Je me rends compte que bien souvent je suis assez déçu de la qualité du code Je me rends compte que bien souvent je suis assez déçu de la qualité du code
que je regarde. Principalement parce que je ne suis pas capable de le que je regarde. Principalement parce que je ne suis pas capable de le
comprendre rapidement. Spécifiquement, ça m'est arrivé avec certaines parties comprendre rapidement. Spécifiquement, ça m'est arrivé avec certaines parties
de Zamboni, le code du Marketplace dont je parlais plus haut. de `Zamboni <https://github.com/mozilla/zamboni>`_, le code du `Marketplace
<http://marketplace.firefox.com>`_ dont je parlais plus haut, avec certaines
parties de Talkilla ou alors le code de Firefox lui même.
C'était extrêmement frustrant pour moi de découvrir que le code écrit à Mozilla C'était extrêmement frustrant pour moi de découvrir que le code écrit à Mozilla
n'était pas exemplaire. Tout le code qui est ajouté à l'heure actuelle est n'était pas exemplaire. Tout le code qui est ajouté à l'heure actuelle est
@ -112,42 +203,127 @@ historique assez lourd qui rends leur structure complexe.
Je réalise donc que mon travail n'est pas uniquement de savoir écrire du code Je réalise donc que mon travail n'est pas uniquement de savoir écrire du code
propre, mais également de réussir à comprendre du code que je considère comme propre, mais également de réussir à comprendre du code que je considère comme
"sale" (quitte à l'améliorer au passage !) "sale" (quitte à l'améliorer au passage !).
Et c'est pas du gateau; je m'attendais à réussir à comprendre des projets
complexes facilement, mais aucun miracle de ce coté là. Il faut réussir
à rester concentré pendant suffisement longtemps pour pouvoir tirer tous les
fils et commencer à déméler… Pas facile !
Apprendre est un processus actif Apprendre est un processus actif
-------------------------------- --------------------------------
Il est facile de passer à coté de l'apprentissage. Être entouré de gens Il est facile de passer à coté de l'apprentissage. Être entouré de gens
talentueux ne suffit pas toujours à continuer à apprendre. talentueux ne suffit pas pour continuer à apprendre.
Savoir reconnaitre le fait d'être en situation d'échec est nécessaire. Dire que Savoir reconnaitre un échec est nécessaire. Dire que l'on comprends pour éviter
l'on comprends pour éviter de passer pour un idiot est un biais qui se prends de passer pour un idiot est un biais qui se prends assez rapidement, et qu'il
assez rapidement, et qu'il fait éviter à tout prix. faut éviter à tout prix.
Surtout au début, c'était une erreur que je faisais énormement, une question
d'égo probablement.
Il y a une espèce de honte de ne pas savoir, alors que tout le monde autour Il y a une espèce de honte de ne pas savoir, alors que tout le monde autour
sait ou en tout cas semble savoir. Bien souvent, les gens autour ne savent pas sait ou en tout cas semble savoir. Bien souvent, les gens autour ne savent pas
non plus, ce qui mène à des discussions de comptoir, sans trop savoir pourquoi. non plus, ce qui mène à des discussions de comptoir, sans trop savoir pourquoi.
Connaître ses limites techniques est un bon début pour pouvoir les Connaître ses limites techniques est un bon début pour pouvoir les surpasser.
surpasser. Chercher à les rencontrer est un processus actif.
Le manque de temps m'empèche bien souvent de pouvoir prendre un livre technique
et de pouvoir l'apprecier. Je ne sais pas exactement pourquoi, peut être par
surdose, mais je n'ai ouvert que quelques rares livres techniques durant ces
deux années. Et j'aimerais bien que ça change !
"Assez bien" est suffisant "Assez bien" est suffisant
-------------------------- --------------------------
La culture de l'excellence La culture de l'excellence se mets parfois au milieu du chemin. On oublie
souvent que "le mieux est l'ennemi du bien".
Rien ne sert de faire des commits parfaits tout le temps. Quand j'ai besoin de
"hacker" sur un projet, je ne voulais d'abord pas tout péter, par peur de ne
plus m'y retrouver.
Mon approche actuelle est bien differente: on mets les mains dans le camboui
jusqu'à ce que ça marche, et ensuite on répare les dégats. Enfin… dans une
certaine mesure hein !
Écrire des boites à outils et non pas des frameworks Écrire des boites à outils et non pas des frameworks
---------------------------------------------------- ----------------------------------------------------
Écrire des frameworks force les utilisateurs à Écrire des frameworks force les utilisateurs à les utiliser, et à les connaitre
dans les moindres recoins. Heureusement, il existe déjà énormement de
frameworks qui pour la plupart font très bien leur travail. Ce qui nous manque
ce n'est pas plus de frameworks, mais bel et bien plus de boites à outils.
Une boite à outil prends un problème bien défini et propose une solution pour
ce problème. Une boite à outils est, en mon sens, ce qu'on apelle une
bibliothèque. Pas besoin de réécrire tout votre projet pour utiliser ma
nouvelle bibliothèque afin de profiter des fonctionalités qu'elle apporte
(alors que c'est le cas avec un framework, justement).
Être le moteur de son propre changement Être le moteur de son propre changement
--------------------------------------- ---------------------------------------
Facile à dire, héhé ! D'une manière générale, je me rends compte qu'il est
facile de se pleindre sans pour autant être moteur du changement que l'on
souhaite voir arriver.
Ça vaut le coup de se donner la peine de faire changer les choses, surtout
à Mozilla, parce que le changement n'est pas seulement vu d'un mauvais œil.
Pour que les choses évoluent, il faut être force de proposition. Se pleindre
n'a jamais servi à rien si ce n'est pas suivi d'actes ;)
Je dis de temps en temps que Mozilla est une "do-o-cratie" (celui qui fait
à raison), et je le penes de plus en plus. Quand j'ai envie que quelque chose
soit fait, et bah… il faut le faire !
Ne pas chercher à avoir raison
------------------------------
Peu importe qui à raison, l'important n'est pas de chercher à montrer que tu
sais, mais de trouver ce qui est juste. Ça parait peut être évident, mais bien
souvent on cherche à se mettre en avant, au détriment du projet… Allez, gardons
nos égos de coté ;)
Arrêter le négativisme
----------------------
Il est très facile de se laisser embarquer dans le négativisme. Il y à toujours
des choses qui ne vont pas, et probablement il y en aura toujours. Ce ne sont
pas des raisons suffisantes pour perdre le moral. Identifier les points faibles
est important est permet de savoir ce qu'il est necessaire d'améliorer, mais
regarder les choses du coté positif (et il y en à necessairement un !) est
indispensable !
À plusieurs reprises je me suis retrouvé dans des crises de négativisme, pour
un tas de raisons differentes. La meilleure manière de s'en sortir: en causer
et trouver des solutions, prendre le problème à bras le corps, et ne pas
considérer que c'est un problème sur lequel on à aucune prise possible.
La suite ? La suite ?
========== ==========
Je n'ai aucune idée d'à quoi va ressembler la suite, et c'est justement ce que
j'apprecie et qui m'effraie en même temps…
Je fais actuellement énormement de Javascript et je travaille sur des
projets qui semblent avoir plus de sens qu'auparavant (même si je vois déjà des
choses que je souhaiterais améliorer, mais chaque chose en son temps). Donc
techniquement j'apprends et dans ma quête de faire des produits qui touchent un
utilisateur.
Depuis quelques semaines, je peux travailler une journée par semaine sur un
projet qui me tiens vraiment à cœur: daybed (http://daybed.rtfd.org).
L'objectif est de faire en sorte que le projet avance et soit utilisé au sein
de mozilla.
Avant toute autre chose, il faudra faire des changements de "pitch" pour qu'il
soit pus simple d'expliquer ce que Daybed souhaite faire, mais… c'est une autre
histoire.

View file

@ -25,7 +25,7 @@
<body id="index" class="home"> <body id="index" class="home">
{% include 'github.html' %} {% include 'github.html' %}
<header id="banner" class="body"> <header id="banner" class="body">
<h1><a href="{{ SITEURL }}">{{ SITENAME }} {% if SITESUBTITLE %} <strong>{{ SITESUBTITLE }}</strong>{% endif %}</a></h1> <h1><a href="{{ SITEURL }}/pages/about.html">{{ SITENAME }} {% if SITESUBTITLE %} <strong>{{ SITESUBTITLE }}</strong>{% endif %}</a></h1>
<nav><ul> <nav><ul>
{% for title, link in MENUITEMS %} {% for title, link in MENUITEMS %}
<li><a href="{{ link }}">{{ title }}</a></li> <li><a href="{{ link }}">{{ title }}</a></li>