La raison principale, à mon avis, de la baisse de popularité de Ruby on Rails est le fait que ce framework se voulait la version idéale d'une démarche développement MVC côté serveur qui n'est plus d'actualité aujourd'hui.
Une grosse partie du développement est réalisée côté client (en javascript). Le développemnt côté serveur consiste essentiellement à développer un api qui sera exploitée par la partie client. Bien évidemment ces API peuvent être complexes et nécessiter des développements importants. Néanmoins, Ruby on Rails apportait essentiellement une valeur ajoutée dans le cadre d'un développement intégré (convention over configuration) et beaucoup moins pour le développement d'une API. D'autant plus qu'il semble que le langage Ruby ne soit pas nécessairement très performant (je dis cela avec des pincettes car je n'ai pas vérifié récemment les performances).
A partir du moment où une grosse partie des développements est réalisée côté client avec les outils associés, l'ajout de la stack RoR (avec ses contraintes spécifiques) est beaucoup moins excitant à moins d'être amoureux du langage Ruby.
Node.js comme environnement d'exécution javascript pour le développement de la partie serveur offre des atouts non négligeables:
- Le moteur d'exécution javascript sur lequel s'appuie node est très performant. Et on ne parle pas là du fait de l'approche asynchrone mais le performance pure des instruction, boucles, etc... Google fait un gros travail d'optimisation.
- Son event loop qui est beaucoup plus efficace que l'utilisation de threads pour gérer de nombreuses requêtes.
- L'utilisation de Javascript qui implique une démarche asynchrone au coeur du développement incite à une approche plus performante pour ce qui est IO.
- De nombreux outils utilisés pour le développement client s'appuient sur Node.js (gulp, etc...)
- Tout le monde semble l'adopter y compris Microsoft qui lui offre un support non négligeable (azure, vscode, visual studio, ...)
- De nombreuses applications nodejs sont maintenant en production et de nombreux outils de monitoring,etc ... sont en train d'éclore.
Enfin, un point très important, si l'on considère comme acquis le développement d'applications web sur la base d'un framework javascript côté client, c'est le développement du concept d'applications javascript isomorphiques. C'est à dire qui peuvent s'exécuter aussi bien côté client que côté serveur. Des avancées importantes sont faites sur le sujet. Cela fait partie des objectifs d'Angular 2.
Javascript - le langage
Oui, le langage dans sa version actuelle n'est pas nécessairement génial.
Effectivement, la volonté des différents acteurs d'imposer leur technologie, la volonté de ne pas se tirer une balle dans le pied a empêché l'éclosion d'une démarche qui ne relève pas du bricolage.
Néanmoins les choses sont en train de changer rapidement et ecmascript 6 fait enfin entrer le langage javascript dans l'ère de la modernité...
Ajourd'hui, l'expérience de développement avec node.js en utilisant typescript plutôt que que du "raw" javascript est tout à fait cohérente. Presque du c#. Au détail près qu'il est plus complexe de développer dans un environnement asynchrones où il faut utiliser des callback ou promesses (ma préférence) à longueur de temps (comme par exemple faire une récursion pour une fonction qui retourne une promesse ).
Partager