TurboGears, petite mise en bouche

Tur­bo­Gears, Djan­go ou encore Ruby on Rails. Qui n'a jamais enten­du par­ler d'un de ces Fra­me­works Web de nos jours ? Mais vous y êtes-vous déjà inté­res­sé un peu de plus près ? Cet article sera l'occasion de s'y mettre par exemple !

 Késako ?

Com­men­çons donc par le com­men­ce­ment : qu'est ce qu'un "web meta fra­me­work" ? C'est un kit de com­po­sants logi­ciels struc­tu­rels qui sert à créer les fon­da­tions ain­si que les grandes lignes de tout ou d’une par­tie d'une appli­ca­tion web. Cette tech­no­lo­gie est de plus en plus uti­li­sée et mérite qu'on s'y attarde un petit peu. Elle est ana­logue aux CMS (Content Mana­ge­ment Sys­tem  ou Sys­tème de ges­tion de conte­nu en langue de Molière) et donne en quelque sorte les bases pour com­men­cer un pro­jet.

C'est éga­le­ment un WSGI (Web Ser­ver Gate­way Inter­face) ce qui rend l’exécution de plu­sieurs appli­ca­tions sur le même ser­veur et le même domaine pos­sible.

Avec cela, plus besoin de se sou­cier de tout les petits détails qui sont par­fois bien com­pli­qués pour don­ner au final pas grand chose. Si vous vou­lez une méta­phore, c'est un peu comme si on vous don­nait une mai­son déjà bâtie mais pas encore habillée. Les bases sont posées, il ne tient qu'à vous de les connec­ter à d'autres bases, ou bien encore des les amé­lio­rer sui­vant vos besoins.

En fait, c'est sou­vent vu comme un gain de temps consi­dé­rable et non négli­geable. Main­te­nant, ce genre de choses se retrouve à la pelle sur le mar­ché. Il faut donc encore arri­ver à choi­sir la "bonne". En effet, les guille­mets sont de rigueur car, comme pour les lan­gages de pro­gram­ma­tion on ne pour­ra pas for­cé­ment dire qu'il y en a des bons et des mau­vais : tout dépend du contexte encore une fois.

Turbogears ?

Tur­bo­gears com­bine donc comme ils le disent si bien "de petites choses pour per­mettre de réa­li­ser de gros tra­vaux". Par­mis ces "petits" outils on cite­ra, entre autres, le lan­gage Python, SQLAl­che­my et SQLOb­ject (aban­don­né depuis la ver­sion 1.1), ain­si que les tem­plates Mako, Gen­shi et Kid (éga­le­ment aban­don­né depuis la ver­sion 1.1).

Ain­si la jonc­tion entre les dif­fé­rents lan­gages (python, SQL ou encore HTML) est déjà gérée. Vous n'avez plus qu'à "jouer avec". L'architecture choi­sie ici est une sorte de Modèle Vue Contro­leur (MVC).

Logo Tur­bo­Gears Licence : MIT License, LGPL

Le Modèle repré­sente le com­por­te­ment de l'application. Il défi­ni le trai­te­ment des don­nées, les inter­ac­tions avec la base de don­nées, etc… Dans Tur­bo­gears, c'est le tool­kit SQLAl­che­my qui joue le rôle du modèle en défi­nis­sant les tables de la bases de don­nées et en les liant à la couche objet Python. La Vue est l'interface avec laquelle l'utilisateur inter­agit. Elle est gérée ici par Gen­shi (ou Mako sui­vant vos pré­fé­rences) qui n'ont d'autres rôles que de créer les tem­plates HTML ou XHTML qui seront uti­li­sés. Et enfin, , le Contrô­leur est la par­tie qui prend en charge la ges­tion des évé­ne­ments de syn­chro­ni­sa­tion pour mettre à jour la Vue ou le Modèle en fonc­tion des actions déclen­chées par l'utilisateur. Pylons inter­vient dans l'habit du Contrô­leur en fai­sant la connexion avec le ser­veur web grâce à l'outil en ligne de com­mande Pas­ter (par défaut) mais d’autres peuvent être choi­sis éga­le­ment, tels que Apache ou encore Nginx pour ne citer qu'eux. Pylons est aus­si l'outil qui amène la tech­no­lo­gie tant appré­ciée du Ruby on Rails en lan­gage Python. L'architecture actuelle de Tur­bo­gears est très dépen­dante de Pylons.

On peut aus­si par­ler de Repoze, qui va être uti­li­sé pour gérer la couche de sécu­ri­té néces­saire (authen­ti­fi­ca­tion et dif­fé­rentes auto­ri­sa­tions ima­gi­nables par exemple avec repoze.who) et de Tos­ca­Wid­gets qui sera uti­li­sé pour tout ce qui est créa­tion de for­mu­laires et d'interfaces un peu com­plexes. À noter que la docu­men­ta­tion de Tos­ca­Wid­get est excel­lente et ils dis­posent éga­le­ment d'un canal IRC sur le réseau irc​.free​node​.net : #tos­ca­wid­gets.

La prise en main de Tur­bo­gears est assez rapide, plu­sieurs tuto­riels sym­pas sont pro­po­sés sur le site offi­ciel et ceux-ci sont constam­ment mis à jour dès qu'une nou­velle option est dis­po­nible.

L'une des forces de Tur­bo­gears est sans conteste la réac­ti­vi­té de l'équipe et leur quête de la moindre nou­velle fonc­tion­na­li­té. Ils sont éga­le­ment à l'écoute de la large com­mu­nau­té d'utilisateurs et répondent à leurs ques­tions /​ idées dans un délai très court sur leurs forums offi­ciels ou encore leur canal IRC. C'est vrai qu'il est ras­su­rant de savoir qu'en cas de pépin on a du monde der­rière, autre que google (ou bioin​fo​-fr​.net 😉 ).

Enfin lors de l'installation de votre pro­jet sur votre ser­veur ou votre ordi­na­teur, le pro­ces­sus com­plet est détaillé encore une fois sur le site offi­ciel. Dif­fi­cile de faire plus facile.

À noter éga­le­ment que lorsqu'une mise à jour appa­raît, les anciennes ver­sions et la docu­men­ta­tion qui leurs sont propres res­tent encore acces­sibles.

Pour­quoi ai-je été déjà ame­né à le choi­sir ce fra­me­work ? Et bien je pense que si vous avez lu tout cela et qu'on rajoute le fait que je suis plu­tôt un pytho­nien, vous avez votre réponse. Pour ma part, je l'ai uti­li­sé pour implé­men­ter une sorte de LIMS (sys­tème de ges­tion de l'information de labo­ra­toire) pour des don­nées issues du HTS (High Through­put Sequen­cing). J'éditerai l'article avec un lien vers celui-ci quand sa pre­mière ver­sion sera sor­tie (bien que vous ne pour­rez pas faire grand chose avec puisqu'il est sécu­ri­sé par un sys­tème d'authentification propre aux labo­ra­toires 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é­ve­nir que les mots qui vont suivre ne sont que le reflet de ce que j'ai pu lire ou entendre lors de dif­fé­rentes réunions pro­fes­sion­nelles. D'ailleurs je vous invite à lire les deux tableaux com­pa­ra­tifs Python et Ruby sur cette page wiki­pé­dia. Vous com­pren­drez bien vite que ces trois solu­tions res­tent les trois meilleures actuel­le­ment sur le mar­ché.

Copy­right : http://​djan​go​po​ny​.com/

En ce qui concerne Djan­go, on reste dans l'univers pytho­nien. Il sem­ble­rait que Tur­bo­gears soit plus per­mis­sif que Djan­go mais je n'ai jamais vrai­ment trou­vé de quoi le prou­ver. Je pense qu'il s'agit de deux choses bien que dif­fé­rentes qui se res­semblent assez et que cha­cun prê­che­ra sa paroisse comme cela se fait par ailleurs. La prise en main est peut-être un petit peu plus com­pli­quée que pour Tur­bo­gears.

Regis­te­red tra­de­marks of David Hei­ne­meier Hans­son

Pour ce qui est de Ruby on Rails, on note un réel inté­rêt de la com­mu­nau­té envers ce fra­me­work web pour sa grande per­mis­si­vi­té et son lan­gage qui est en mon sens un peu un conden­sé de tout ce qui exis­tait avant, sans leur gros défauts. Il faut avoir un peu de temps pour se pen­cher sur ce nou­veau lan­gage et ain­si pou­voir s'y plon­ger dedans corps et âme. Sa force réside tout comme Tur­bo­gears dans sa rapi­di­té de prise en main et le fait qu'on arrive assez vite à déployer des appli­ca­tions web avec.

Le choix se fera donc essen­tiel­le­ment selon les pré­fé­rences, envies et dis­po­ni­bi­li­tés de cha­cun. Pour ce qui est de Tur­bo­gears, sa per­mis­si­vi­té est très appré­ciée. En effet, la pos­si­bi­li­té de choi­sir entre tel et tel fra­me­work (Mako ou Gen­shi ou encore Kid, Sprox ou Tos­ca­Wid­get, etc…) donne une force non négli­geable en terme de modu­la­ri­té. La grosse dif­fé­rence est que Tur­bo­gears est un Web Meta Fra­me­work (regrou­pant plu­sieurs fra­me­work dif­fé­rents comme expli­qué dans le para­graphe "késa­ko ?") tan­dis que les deux autres sont "seule­ment" des web fra­me­works. Ain­si vous pour­rez vous même com­po­ser votre propre "menu" selon vos pré­fé­rences, ce qui n'est pas for­cé­ment pos­sible avec les deux autres. Quoiqu'il en soit, si vous deviez en choi­sir un, pre­nez en un de ces trois.

Pour les ama­teurs de débats, je vous invite à lire celui-ci (en anglais).
Je ter­mi­ne­rai cette par­tie par une cita­tion des déve­lop­peurs de Tur­bo­gears qui à mon sens résume bien la chose :

All of these fra­me­works had limi­ta­tions that frus­tra­ted us, and TG2 was built as an ans­wer to that frus­tra­tion.

(Pour les non-anglo­phones : "Toutes ces struc­tures avaient des limi­ta­tions qui nous frus­traient, et Turbogears2 a été conçu pour répondre à ces frus­tra­tions."). A vous de tran­cher !

Exemples d'utilisation

Nom­breux sont ceux qui ont fait le pas, et on recense tout de même par­mi eux des très gros tels que Sour­ce­Forge ou encore la dis­tri­bu­tion GNU/​Linux Fedo­ra. La liste des sites uti­li­sant Tur­bo­Greas est pré­sen­tée sur leur site.

On pour­ra éga­le­ment citer les quelques Mosh­ka, Noo­dle NG ou encore GDV ,BioS­cript et Bio­Re­po (pour le coté bio­in­for­ma­tique tout de même).

Une liste assez four­nie est dis­po­nible sur le site offi­ciel de Tur­bo­gears.

 

Cré­dit Image : Isa­belle Sté­vant (licence Art Libre)



Pour continuer la lecture :


Commentaires

4 réponses à “TurboGears, petite mise en bouche”

  1. Hey fis­ton,
    Mer­ci pour cet article très inté­res­sant.
    J'avais besoin de quelque chose de simi­laire pour un pro­jet future, ca tombe très bien 😉
    Lors de mon contrat aux Pays-Bas, j'avais uti­li­sé Grails (Groo­vy on Rails) http://​grails​.org/ pour le pro­jet Phe­no­type Data­base http://​test​.dbnp​.org/
    Ayant des connais­sances en Java (mer­ci Tata) Grails m'avais paru assez simple, mais je suis aus­si plus "Pytho­nien" et je pense tes­ter Tur­bo­Gears bien­tôt pour voir ce que ca donne.

    1. Avatar de Yoann M.
      Yoann M.

      Salut Adem !
      C'est vrai que je n'ai pas par­lé de Grails et que ça aurait peut être méri­té… Enfin tu pour­ras nous faire une jolie pré­sen­ta­tion de ce magni­fique outil dans un de tes futurs articles comme ça. 🙂
      Bon cou­rage pour les tests, un conseil : appa­rem­ment la ver­sion 2 de Tos­ca­Wid­gets est qua­si­ment stable donc passe direct en ver­sion 2, il parait qu'elle est beau­coup mieux.

  2. Le lien vers le débat en anglais est inva­lide (Page not found). Per­son­nel­le­ment j'aimerais jus­te­ment bien savoir de quelles limi­ta­tions ils parlent.

    1. Avatar de Yoann M.
      Yoann M.

      Ah oui, c'est mal­heu­reux 🙁

      De toute façon l'article date de 4 ans main­te­nant… Je pense que Djan­go est pas­sé devant TG.

      A l'époque les deux étaient assez proches, mais Djan­go a fini par + per­cé que son cou­sin.

Laisser un commentaire