Rails 3.0 / Merb 2.0 : un avenir prometteur !
Par Bounga le lundi, 5 janvier 2009, 12:56 - Geek attitude - Lien permanent
L'annonce a fait du bruit pendant ces vacances de Noël, moi qui commençait à découvrir Merb et prendre goût à ces aspects qui le caractérisent, j'ai accueilli la nouvelle à bras ouverts.
Les équipes de développement de Rails et de Merb se sont rapprochés et veulent unir leurs efforts pour fusionner les deux projets et ainsi tirer le meilleur de chacun.
Personnellement, connaissant les caractères des principaux acteurs des deux projets, je n'aurai jamais crû ça possible ! Mais il faut croire que tout le monde a réussi à trouver un terrain d'entente et je peux vous assurer que cela ne laisse présager que de bonnes choses.
En quoi les choses vont changer ? Je vais vous l'expliquer.
Vous avez donc compris que les équipes de Merb et Rails vont travailler ensemble à la prochaine version du framework : Merb 2.0 / Rails 3.0, les deux projets aillants les mêmes buts.
Il est très vraisemblable qu'au final, le "nouveau" projet garde le nom de Rails pour bénéficier de la notoriété qu'il a déjà acquis à travers le monde.
Merb va donc apporter son expérience à Rails notamment dans les domaines de la modularité, l'agnosticisme (indépendance du coeur du framework avec des libs tierces), des performances (requêtes/s et consommation mémoire) accrues et une véritable API publique qui aura pour vocation de rester stable et de donc de fournir un support fiable aux auteurs de plugins.
C'est pour quand ?
Les discussions techniques viennent de commencer et on entend déjà parler d'une première version pour la RailsConf 2009. Est-ce que ce sera le cas ? Je ne sais pas si cela va être techniquement réalisable parce que même si les deux projets partagent pas mal de choses, il va y avoir un nombre considérable de choix à faire, à implémenter et à tester, ce n'est pas une mince affaire.
Quelles sont les changements pour les développeurs Rails ?
Rails va devenir bien plus modulaire, le coeur de Rails sera réellement séparé du reste (on peut imaginer un gem qui se nommera rails-core et qui sera extensible via d'autres gems).
Toutes les optimisations de performance qui ont été faite sur Merb (et elles sont considérables croyez-moi) vont être portées dans Rails. L'architecture même de Rails va subir un grand lifting pour incorporer toutes les idées qui font que Merb est si rapide.
Dans Rails 3, une API publique va être définie, de nombreux tests seront écrits pour cette API et les développeurs auront donc une base solide pour écrire leurs plugins ce qui leur assurera des transitions plus facile d'une version majeur de Rails à une autre. En clair, vos plugins ne se casseront plus lors de la sortie d'une nouvelle release de Rails.
Rails sera encore livré avec le "pile" habituelle (ActiveRecord, Prototype, …) mais il sera bien plus aisé de changer les comportements par défaut pour par exemple utiliser un autre ORM (DataMapper, Sequel, …) ou une autre librairie javascript (Mootools, JQuery, …).
J'espère que les helpers de rails gagneront un peu de ce qui est fait du côté de Merb, je pense par exemple à l'option :label des champs text_field.
Rails va également utiliser de mieux en mieux Rack ce qui aura pour effet de le rendre plus modulaire et donc de partager entre elles les logiques de différentes applications. Il paraît clair que le système de slice utilisé par Merb va être intégré à Rails. Pour ceux qui ne connaissent pas, les slices sont des "mini-app" ré-utilisables dans votre application. C'est un peu dans l'esprit des engines Rails mais en plus pratique.
On peut également penser que le routeur de Merb sera intégré à Rails. Sur ce point, il n'y a pas photo, le routeur de Merb est bien plus évolué que le routeur actuel de Rails.
Pour résumer, un tour d'horizon des bonnes pratiques de Merb va être fait et seront intégrées dans Rails.
Et pour toi, qu'est ce que ça change ? Pourquoi es-tu si excité ?
Ce que ça change pour moi ? C'est bien simple …
Plusieurs choses me rebutent dans Rails depuis quelques temps et ces problèmes sont corrigés dans Merb :
- la "lenteur" et la consommation mémoire (spécialement dans ActiveRecord)
- certains
helperssont également mal fichus à mon sens (mélange de fonctionnalités JS avec le contenu, manque de certaines options)
Mais attention, Rails apportent aussi de très nombreux helpers plus qu'agréables à utiliser et qui font souvent défaut à Merb (génération d'un date_select par exemple).
Autre chose très intéressante, Rails va devenir encore plus porteur et des compétences avancées vont devenir nécessaires sur de gros projets qui utiliseront les nouvelles fonctionnalités disponibles dans Rails (un peu moins de magie, du code encore plus structuré et respectueux des bonnes pratiques, des ORMs moins connus mais répondants mieux aux exigences du projet, …).
Il y a là un rôle d'évangéliste à jouer pour pousser Rails, Ruby et toute la communauté merveilleuse qui est autour et dans ce domaine, il y a énormément de travail à faire en France.
Rails 3.0 sera l'occasion parfaite d'essayer d'évangéliser et de prêcher la bonne parole. J'en ferai pour ma part un point d'honneur et je compte bien participer à plusieurs initiatives :
- contributions intensives via des patchs, plugins et slices
- articles techniques (voir screencasts) sur mon blog pour traiter les sujets avancés mais surtout la façon de les réaliser avec élégance.
- re-vivifiez la communauté Rails France (écriture d'un site plus adapté aux besoins, participation active, …)
Tout cela reste à définir avec les différents acteurs de la communauté francophone mais j'espère vraiment faire bouger les choses et tenir la communauté francophone en éveil.
C'est historique, cet événement va créer une vraie émulsion dans la communautés Ruby et va poussez encore en avant ce langage merveilleux et aider son adoption en entreprise. Développeurs, vous allez encore plus aimer Ruby et Rails !
P.S : Notez que mon billet a été largement inspiré du billet de Matt sur son blog.
Commentaires
Le fait de mettre un point d'honneur à faire une API fiable et destinée à pas (ou peu) changer est un excellent point. La migration de certaines applications de Rails 1.2 à Rails 2.0 m'avait donné un sacré coup au moral
Selon la core-team, il devrait être mis en place un moyen simple (ou du moins des tutos très détaillés) sur comment migrer son appli de 2.X à 3 pour éviter les mésaventures du passage de 1.2 en 2.0 justement.
Wait and see ...
Migration facile ? Stabilité de l'API ? Pourquoi pas rever a une doc aussi ? ...
Bon je repasse dans 10 ans pour voir si on peut utiliser Rails sans avoir a se bouffer toutes les lignes de code, lire dans les pensees des concepteurs (lire dans leur doc serait plus interessant), et passer 6 mois a migrer mon code.
Comment ca j'ai l'impression de m'etre planter en me tournant vers Rails ? C'est pas qu'une impression ...
@Tony
Heu ... C'est bien de Rails que tu parles ?
Visiblement tu ne connais ni Rails, ni Merb. La doc, il y en a à profusion et très bien faite en plus.
A mon avis, il faut que tu changes de métier si tu trouves que Rails est compliqué à utiliser et mal documenté ...