Repoze.BFG sort en version 1.0, et vole la vedette à Grok

Les technologies Zope évoluent d'une manière extrêmement positive. Alors que le vieux Zope 2 survit encore après plus de dix ans de service, sa réécriture modulaire et pythonique, connue sous le nom « Zope 3 », a abouti principalement à trois choses :

  • l'Architecture de Composants (la Zope Component Architecture)
  • une multitude de composants basés sur cette architecture (la Zope Library)
  • des frameworks web utilisant cette architecture

Parmi ces frameworks, on retrouve d'abord « Zope 3 » lui-même, qui peut s'utiliser tout seul. Puis Grok, un projet parallèle, basé sur Zope 3, qui simplifie la configuration des composants en évitant l'écriture de XML. Grok n'est pas encore sorti en version 1.0 qu'il vient de se faire griller la priorité par Repoze.BFG. BFG est un framework ultra-léger, beaucoup moins orienté Zope, plus proche de Pylons ou Django, mais quand-même basé sur l'Architecture de Composants.

La légèreté de Pylons ? La modularité de l'Architecture de Composants de Zope 3 ? La possibilité d'utiliser tous les middlewares WSGI ? Le choix entre modèle MVC ou modèle à la Zope ? Le menu est alléchant. Voici la traduction de l'annonce :

(Annonce originale : http://lists.repoze.org/pipermail/repoze-dev/2009-July/001936.html )


Résumé

La première version majeure 1.0 du framework web BFG (ou « repoze.bfg »), est disponible. Les infos générales sont sur : http://bfg.repoze.org.

Détails en gros

BFG est un framework web en Python, basé sur WSGI. Il s'inspire de Zope, Pylons et Django. Il utilise en arrière plan de nombreuses technologies de Zope.

BFG est une partie du projet plus général Repoze (http://repoze.org). Il est distributé sous une licence de type BSD (http://repoze.org/license.html).

BFG 1.0 représente l'équivalent d'une année de développement. La première version 0.1 date de juillet 2008 et près de 80 versions pre-1.0 se sont succédé depuis cette date. Aucune d'entre elles n'a jusqu'à présent promis de rétrocompatibilité de manière explicite. Cependant la version 1.0, constitue le point de départ d'un gel de l'API. Les prochaines versions de la branche 1.x garantiront cette rétrocompatibilité avec 1.0. Tout manquement à cette règle sera considéré comme un bug.

Gros détails

BFG contient des améliorations modérées et incrémentales des principes rencontrés dans les frameworks de génération précédente. Il s'efforce de rendre le développement d'applications web plus amusant, plus prédictible, et plus productif, en particulier pour les vrais projets de la vraie vie.

À cette fin, BFG offre les fonctionnalités suivantes :

  • Déploiement basé sur WSGI : compatible PasteDeploy et mod_wsgi.
  • Fonctionne avec Python 2.4, 2.5 et 2.6.
  • Fonctionne sur UNIX, Windows et Google App Engine.
  • Documentation complète : 100% des fonctionnalités et de l'API est documenté
  • Ensemble impressionnant de tests unitaires. Le paquet repoze.bfg contient 11000 lignes de code Python : 8000 lignes sont des tests unitaires servant à couvrir les 3000 lignes restantes.
  • Très économe : BFG possède une faible empreinte mémoire et ne gaspille aucun cycle processeur.
  • Ne contient pas de dépendances exagérées : installer repoze.bfg grâce à "easy_install" prend moins d'une minute.
  • Lancement rapide : une application BFG typique démarre en 1 seconde.
  • Templating XML/HTML/texte ultra-rapide grâce à Chameleon (http://chameleon.repoze.org/).
  • Utilise n'importe quelle couche de persistance : SQLAlchemy, SQL brut, ZODB, CouchDB, fichiers, ou n'importe quoi d'autre correspondant aux besoins de l'application.
  • Fournit de nombreux templates de démarrage de projet. Chacun d'entre eux permet de démarrer une application BFG correspondant à une utilisation particulière.
  • Permet, au choix, de faire correspondre une URL à du code comme avec le routage d'URL de Django ou Pylons, ou bien d'utiliser une traversée de graphe d'objets comme avec Zope. Ceci permet aux développeurs Zope ou Pylons de retrouver leurs habitudes.
  • Offre des modes de débogage pour les erreurs courantes (vue introuvable, autorisation accordée ou refusée à tort)
  • Permet aux développeurs d'organiser leur code comme bon leur semble : le framework n'impose pas de structure d'organisation du code.
  • Permet d'écrire du code qui peut être facilement testé. BFG évite d'utiliser des structures de données propres à chaque thread, qui nuisent à l'écriture de tests. Il fournit des outils pour simuler des composants du framework comme les templates et les vues.
  • Fournit un système d'autorisation déclaratif dépendant du contexte. Ceci empêche ou autorise l'exécution de code par comparaison des données d'identification avec les informations d'ACL stockées par une application BFG.
  • Le comportement d'une application BFG peut être augmenté ou modifié de manière arbitraire par un développeur tiers sans aucune modification du code source original de l'application. Ceci fait de BFG un bon choix pour construire des frameworks ou des applications extensibles.
  • Les développeurs Zope et Plone se sentiront à l'aise avec la terminologie et les concepts utilisés par BFG. Ils sont en grande majorité dérivés de Zope.

Détails insoutenables

Installation rapide :

easy_install -i http://dist.repoze.org/bfg/current repoze.bfg

Support et information :

http://bfg.repoze.org

Tutoriels

http://docs.repoze.org/bfg/current/#tutorials

Exemples d'applications

http://docs.repoze.org/bfg/current/#sample-applications

Documentation détaillée (explications et API) :

http://docs.repoze.org/bfg/current

Bug tracker :

http://bfg.repoze.org/trac

Liste de diffusion :

http://lists.repoze.org/listinfo/repoze-dev

canal IRC :

irc://irc.freenode.net#repoze

Repoze.bfg est principalement développé par Agendaless Consulting et une équipe de contributeurs.

Un grand merci aux personnes suivantes, sans qui cette version n'aurait pas vu le jour :

Malthe Borch, Carlos de la Guardia, Chris Rossi, Shane Hathaway, Tom Moroz, Yalan Teng, Jason Lantz, Todd Koym, Jessica Geist, Hanno Schlichting, Reed O'Brien, Sebastien Douche, Ian Bicking, Jim Fulton, Martijn Faassen, Ben Bangert, Fernando Correa Neto, YoungKing, Rob Miller, Wichert Akkermann, David Pratt, Mark Ramm, and Chris Perkins.