title: Utiliser NodeJS
slug: utiliser-nodejs
date: 2014-03-17
chapo: Node n'est juste pas (encore) adapté à l'usage que je souhaite en avoir.

> Sadly I’m not going to get back where I was, because Javascript is not Python. If there’s a Javascript community I haven’t found it, or it’s at least not a single entity. There is no community that created Javascript like the Python community created Python. Python comes from the internet in a way Javascript does not; Javascript was built *for* the internet, but Python was built *on* the internet. And I do miss the Python community, you’re good people.
>
> […]
>
> I suppose it is the platform that I am drawn to now before language. And the browser seems like the most interesting platform, not because it’s novel (though it is, it’s a runtime like few others), but because of how concrete it is, and of course how relevant it is to… anything. And the browser is no longer just the servant of a server, I prefer now to think of the browser as an independent agent, connecting to *services* instead of *servers*. Obviously that doesn’t describe a great number of running web sites, but it’s the model I see for the future, and a better perspective for understanding future architectures.
>
> <cite>*[Saying Goodbye To Python](http://www.ianbicking.org/blog/2014/02/saying-goodbye-to-python.html)*, Ian Bicking</cite>

*Préambule : il est difficile de comparer Node à Python ou Django car on n'a pas l'équivalent d'une telle plateforme dans l'écosystème Python. Je vais essayer de ne pas comparer des choux et des carottes pour autant.*

[Thomas](https://oncletom.io/) demandait sur Twitter « les raisons pour lesquelles vous n'utiliseriez pas Node.js ? » et comme ça a l'air d'être la saison des trolls sur JS, je vais y aller de ma petite expérience. J'ai récemment participé au développement d'[une implémentation de référence](http://zippypayments.readthedocs.org/en/latest/) pour le [Marketplace de Mozilla](https://marketplace.firefox.com/). Comme son nom l'indique, elle n'était pas destinée à être mise en production donc on a eu la liberté d'utiliser la technologie que l'on souhaitait, en l'occurrence : Node.

*Confession : je me suis longtemps détourné de JavaScript pour son API DOM que je trouve affreuse, j'aurais mieux fait de [coder ces quelques lignes](https://github.com/zedshaw/jzed) pour ne plus avoir à troller et [prendre le temps d'expérimenter](/david/blog/2014/manifeste-developpeur/)…*

Je vais prendre 3 axes, je pourrais facilement arriver à une telle critique avec Python (packaging, Python 3 et GIL par exemple), il s'agit surtout ici de me rappeler pourquoi est-ce que je n'utilise pas Node *aujourd'hui*.

* *immaturité* : même s'il est plaisant de faire partie de ce bouillonnement qui sort une lib par jour, qui en remet en question une autre par semaine, à la longue c'est épuisant et ça crée un stress dont je ne veux plus. Fatigué de courir après la dernière technologie pour mieux… placer des publicités aux utilisateurs (un billet est à venir là-dessus).
* *documentation* : quand je vois [une telle page](http://nodejs.org/api/), je me rends compte à quel point [la documentation de Django](https://www.djangoproject.com/) est bien faite. C'est devenu pour moi le niveau de référence que je ne retrouve malheureusement pas ailleurs, à part quelques rares exceptions. D'une manière générale j'ai trouvé les bibliothèques que j'ai eues à utiliser mal documentées dans l'écosystème Node/JS.
* *debugging* : je ne compte plus le nombre de fois où le message d'erreur était soit absent, soit une ligne incompréhensible (même après avoir trouvé la solution), soit dépendant de la lib de test que j'utilisais. Ce point est peut-être lié à mes habitudes ou à mon incompétence mais en tout cas pour un débutant c'est très rebutant.

Ces raisons font que je ne partirais pas aujourd'hui sur un projet Node s'il est destiné à être pérenne (un billet est à venir là-dessus aussi) et j'entraînerais encore moins une équipe avec moi. D'un autre côté, je vois très bien que Python s'enlise avec la version 3 et j'ai envie de faire des *services pour le Web* comme le décrit Ian en introduction. Donc je vais forcément être amené à faire plus de JavaScript, il s'agit avant tout d'une question de *tempo*. Il y a beaucoup de bonnes choses dans Node, aussi bien au niveau des concepts que de l'universalité. **Node n'est juste pas (encore) adapté à l'usage que je souhaite en avoir.**

Peut-être que *[la paternité m'adoucit](https://twitter.com/oncletom/status/445491006688227328)* (sic), peut-être qu'elle me permet de faire la part des choses sur [ce que je trouve utile](/david/blog/2014/sens-utilite/). *La réduction de mon temps en ligne le rend plus précieux.*
