TurboGears, Django ou encore Ruby on Rails. Qui n'a jamais entendu parler d'un de ces Frameworks Web de nos jours ? Mais vous y êtes-vous déjà intéressé un peu de plus près ? Cet article sera l'occasion de s'y mettre par exemple !
Késako ?
Commençons donc par le commencement : qu'est ce qu'un "web meta framework" ? C'est un kit de composants logiciels structurels qui sert à créer les fondations ainsi que les grandes lignes de tout ou d’une partie d'une application web. Cette technologie est de plus en plus utilisée et mérite qu'on s'y attarde un petit peu. Elle est analogue aux CMS (Content Management System ou Système de gestion de contenu en langue de Molière) et donne en quelque sorte les bases pour commencer un projet.
C'est également un WSGI (Web Server Gateway Interface) ce qui rend l’exécution de plusieurs applications sur le même serveur et le même domaine possible.
Avec cela, plus besoin de se soucier de tout les petits détails qui sont parfois bien compliqués pour donner au final pas grand chose. Si vous voulez une métaphore, c'est un peu comme si on vous donnait une maison déjà bâtie mais pas encore habillée. Les bases sont posées, il ne tient qu'à vous de les connecter à d'autres bases, ou bien encore des les améliorer suivant vos besoins.
En fait, c'est souvent vu comme un gain de temps considérable et non négligeable. Maintenant, ce genre de choses se retrouve à la pelle sur le marché. Il faut donc encore arriver à choisir la "bonne". En effet, les guillemets sont de rigueur car, comme pour les langages de programmation on ne pourra pas forcément dire qu'il y en a des bons et des mauvais : tout dépend du contexte encore une fois.
Turbogears ?
Turbogears combine donc comme ils le disent si bien "de petites choses pour permettre de réaliser de gros travaux". Parmis ces "petits" outils on citera, entre autres, le langage Python, SQLAlchemy et SQLObject (abandonné depuis la version 1.1), ainsi que les templates Mako, Genshi et Kid (également abandonné depuis la version 1.1).
Ainsi la jonction entre les différents langages (python, SQL ou encore HTML) est déjà gérée. Vous n'avez plus qu'à "jouer avec". L'architecture choisie ici est une sorte de Modèle Vue Controleur (MVC).
Le Modèle représente le comportement de l'application. Il défini le traitement des données, les interactions avec la base de données, etc… Dans Turbogears, c'est le toolkit SQLAlchemy qui joue le rôle du modèle en définissant les tables de la bases de données et en les liant à la couche objet Python. La Vue est l'interface avec laquelle l'utilisateur interagit. Elle est gérée ici par Genshi (ou Mako suivant vos préférences) qui n'ont d'autres rôles que de créer les templates HTML ou XHTML qui seront utilisés. Et enfin, , le Contrôleur est la partie qui prend en charge la gestion des événements de synchronisation pour mettre à jour la Vue ou le Modèle en fonction des actions déclenchées par l'utilisateur. Pylons intervient dans l'habit du Contrôleur en faisant la connexion avec le serveur web grâce à l'outil en ligne de commande Paster (par défaut) mais d’autres peuvent être choisis également, tels que Apache ou encore Nginx pour ne citer qu'eux. Pylons est aussi l'outil qui amène la technologie tant appréciée du Ruby on Rails en langage Python. L'architecture actuelle de Turbogears est très dépendante de Pylons.
On peut aussi parler de Repoze, qui va être utilisé pour gérer la couche de sécurité nécessaire (authentification et différentes autorisations imaginables par exemple avec repoze.who) et de ToscaWidgets qui sera utilisé pour tout ce qui est création de formulaires et d'interfaces un peu complexes. À noter que la documentation de ToscaWidget est excellente et ils disposent également d'un canal IRC sur le réseau irc.freenode.net : #toscawidgets.
La prise en main de Turbogears est assez rapide, plusieurs tutoriels sympas sont proposés sur le site officiel et ceux-ci sont constamment mis à jour dès qu'une nouvelle option est disponible.
L'une des forces de Turbogears est sans conteste la réactivité de l'équipe et leur quête de la moindre nouvelle fonctionnalité. Ils sont également à l'écoute de la large communauté d'utilisateurs et répondent à leurs questions / idées dans un délai très court sur leurs forums officiels ou encore leur canal IRC. C'est vrai qu'il est rassurant de savoir qu'en cas de pépin on a du monde derrière, autre que google (ou bioinfo-fr.net 😉 ).
Enfin lors de l'installation de votre projet sur votre serveur ou votre ordinateur, le processus complet est détaillé encore une fois sur le site officiel. Difficile de faire plus facile.
À noter également que lorsqu'une mise à jour apparaît, les anciennes versions et la documentation qui leurs sont propres restent encore accessibles.
Pourquoi ai-je été déjà amené à le choisir ce framework ? Et bien je pense que si vous avez lu tout cela et qu'on rajoute le fait que je suis plutôt un pythonien, vous avez votre réponse. Pour ma part, je l'ai utilisé pour implémenter une sorte de LIMS (système de gestion de l'information de laboratoire) pour des données issues du HTS (High Throughput Sequencing). J'éditerai l'article avec un lien vers celui-ci quand sa première version sera sortie (bien que vous ne pourrez pas faire grand chose avec puisqu'il est sécurisé par un système d'authentification propre aux laboratoires qui l'utilisent).
Django ? Ruby on Rails ? Avantages — inconvénients ?
N'ayant jusque là essayé ni l'un ni l'autre, je préfère vous prévenir que les mots qui vont suivre ne sont que le reflet de ce que j'ai pu lire ou entendre lors de différentes réunions professionnelles. D'ailleurs je vous invite à lire les deux tableaux comparatifs Python et Ruby sur cette page wikipédia. Vous comprendrez bien vite que ces trois solutions restent les trois meilleures actuellement sur le marché.
En ce qui concerne Django, on reste dans l'univers pythonien. Il semblerait que Turbogears soit plus permissif que Django mais je n'ai jamais vraiment trouvé de quoi le prouver. Je pense qu'il s'agit de deux choses bien que différentes qui se ressemblent assez et que chacun prêchera sa paroisse comme cela se fait par ailleurs. La prise en main est peut-être un petit peu plus compliquée que pour Turbogears.
Pour ce qui est de Ruby on Rails, on note un réel intérêt de la communauté envers ce framework web pour sa grande permissivité et son langage qui est en mon sens un peu un condensé de tout ce qui existait avant, sans leur gros défauts. Il faut avoir un peu de temps pour se pencher sur ce nouveau langage et ainsi pouvoir s'y plonger dedans corps et âme. Sa force réside tout comme Turbogears dans sa rapidité de prise en main et le fait qu'on arrive assez vite à déployer des applications web avec.
Le choix se fera donc essentiellement selon les préférences, envies et disponibilités de chacun. Pour ce qui est de Turbogears, sa permissivité est très appréciée. En effet, la possibilité de choisir entre tel et tel framework (Mako ou Genshi ou encore Kid, Sprox ou ToscaWidget, etc…) donne une force non négligeable en terme de modularité. La grosse différence est que Turbogears est un Web Meta Framework (regroupant plusieurs framework différents comme expliqué dans le paragraphe "késako ?") tandis que les deux autres sont "seulement" des web frameworks. Ainsi vous pourrez vous même composer votre propre "menu" selon vos préférences, ce qui n'est pas forcément possible avec les deux autres. Quoiqu'il en soit, si vous deviez en choisir un, prenez en un de ces trois.
Pour les amateurs de débats, je vous invite à lire celui-ci (en anglais).
Je terminerai cette partie par une citation des développeurs de Turbogears qui à mon sens résume bien la chose :
All of these frameworks had limitations that frustrated us, and TG2 was built as an answer to that frustration.
(Pour les non-anglophones : "Toutes ces structures avaient des limitations qui nous frustraient, et Turbogears2 a été conçu pour répondre à ces frustrations."). A vous de trancher !
Exemples d'utilisation
Nombreux sont ceux qui ont fait le pas, et on recense tout de même parmi eux des très gros tels que SourceForge ou encore la distribution GNU/Linux Fedora. La liste des sites utilisant TurboGreas est présentée sur leur site.
On pourra également citer les quelques Moshka, Noodle NG ou encore GDV ,BioScript et BioRepo (pour le coté bioinformatique tout de même).
Une liste assez fournie est disponible sur le site officiel de Turbogears.
Crédit Image : Isabelle Stévant (licence Art Libre)
Laisser un commentaire