Articulo de referencia

TurboGears

TurboGears es un framework para aplicaciones web en Python que consta de varios componentes WSGI , como WebOb, SQLAlchemy , el lenguaje de plantillas Kajiki y Repoze. TurboGears...

TurboGears es un framework para aplicaciones web en Python que consta de varios componentes WSGI , como WebOb, SQLAlchemy , el lenguaje de plantillas Kajiki y Repoze.

TurboGears está diseñado en torno a la arquitectura modelo-vista-controlador (MVC), al igual que Struts o Ruby on Rails , con el objetivo de facilitar y mejorar el mantenimiento del desarrollo rápido de aplicaciones web en Python. Desde la versión 2.3, el framework también ofrece un "modo mínimo" que le permite funcionar como un microframework para su uso en entornos donde no se requiere ni se desea la pila completa.

Componentes TurboGears

TurboGears se basa en numerosas bibliotecas y middlewares dispares . Las herramientas predeterminadas han cambiado entre las series 1.x, 2.x y 2.3+, pero la mayoría de estos componentes se pueden usar en cualquiera de ellas, ya que admiten muchas configuraciones alternativas. A continuación, se muestran los componentes principales con los que interactuaría un desarrollador.

Componentes TurboGears 2.x

  • SQLAlchemy ( Modelo ): define las estructuras de las tablas de la base de datos del usuario y cómo vincularlas a los objetos Python con los que el controlador del usuario puede interactuar.
  • Ming ( Modelo ): proporciona la capa de acceso a datos para MongoDB, de forma similar a como SQLAlchemy define cómo vincular las colecciones de MongoDB con los objetos de Python con los que el controlador del usuario puede interactuar.
  • Kajiki (anteriormente Genshi ) ( Ver ) - define las plantillas para el HTML o XHTML que generará el usuario. Aquí es donde el usuario define la interfaz con la que interactuará el cliente.
  • Repoze - Repoze.who se utiliza para gestionar la seguridad (identificación y autenticación). Los usuarios pueden definir reglas de autorización basadas en predicados asociados a los controladores. El framework ya proporciona algunos predicados integrados, pero también se pueden escribir predicados personalizados.
  • ToscaWidgets es la principal biblioteca de widgets para crear formularios e interfaces gráficas de usuario complejas . Por defecto, Tosca genera formularios HTML sencillos, pero también puede utilizarse como middleware para conectarse a widgets y herramientas JavaScript más avanzados . A diferencia de TurboGears 1.x, ya no existe una biblioteca JavaScript preferida o integrada. [ 2 ]
  • Gearbox es el conjunto de herramientas que utiliza TurboGears para gestionar proyectos, crear otros nuevos y servir aplicaciones TurboGears, pero el usuario también puede conectarse a Apache , Nginx o cualquier otro servidor web compatible con WSGI .

Las versiones anteriores a la 2.3 también usarían:

  • Pylons ( Controlador ): este middleware gestiona toda la lógica de back-end del usuario y se conecta al servidor web del usuario para ofrecer datos a la web.
  • Paster era el conjunto de herramientas de línea de comandos y servidor web que se utilizaba en lugar de Gearbox.
  • Repoze.what: se utiliza para gestionar la autorización. Al definir los elementos del controlador del usuario que se expondrán a la web, los predicados de repoze.what definen quién puede acceder a ellos y bajo qué condiciones.

Componentes TurboGears 1.x

  • SQLObject (Modelo): sistema de almacenamiento de datos que puede crear una base de datos o interactuar con datos existentes en varios servidores de bases de datos.
    • SQLAlchemy está previsto que se convierta en la opción predeterminada en TurboGears >= 1.1.
  • Kid (View) - Motor de plantillas XHTML para el frontend, donde todas las plantillas son archivos XHTML o XML válidos , generalmente creados de forma que permiten abrirlos como simples archivos XHTML para comprobar el diseño. Además, ofrece funciones para insertar fragmentos de código Python de forma similar a XML.
    • Genshi es el sucesor de Kid y lo reemplazará como motor de plantillas predeterminado en TurboGears >= 1.1. Su sintaxis es casi 100% compatible con Kid.
  • CherryPy (Controlador): middleware que permite programar aplicaciones web mediante la escritura de manejadores de eventos que devuelven datos a plantillas (en el caso de TurboGears). Los mismos datos también se pueden recibir mediante Ajax como un flujo de datos JSON .
  • MochiKit es la biblioteca JavaScript preferida, aunque opcional, para TurboGears 1.x. Está diseñada para que la programación en JavaScript sea más similar a la de Python. Se utiliza principalmente para implementar funciones y widgets de Ajax , ya que proporciona una interfaz para obtener flujos de datos JSON de forma asíncrona.

Complementos de plantilla

Se pueden usar lenguajes de plantillas distintos de Genshi a través del archivo de configuración de la aplicación del usuario. Los plugins compatibles actualmente en la versión 2.1 son Myghty, Jinja2 , Mako, Cheetah y Kajiki. No se prevé compatibilidad con Kid, ya que Genshi es prácticamente idéntico. Esta lista podría cambiar en futuras versiones.

Historia del proyecto

TurboGears fue creado originalmente en 2005 por Kevin Dangoor como el marco detrás del producto Zesty News, aún no lanzado. [ 3 ] Cuando lo lanzó como un marco de código abierto a finales de septiembre de 2005, recibió más de 30 000 descargas de screencasts en los primeros 3 meses.

En enero de 2007, Kevin Dangoor se retiró como líder del proyecto y Alberto Valverde lo gestionó como su sucesor, [ 4 ] pero posteriormente renunció debido a otros compromisos personales. Alberto sigue involucrado en la comunidad TurboGears a través de su proyecto ToscaWidgets. El proyecto TurboGears ahora es gestionado conjuntamente por un grupo de aproximadamente media docena de desarrolladores principales bajo el liderazgo de Mark Ramm (como líder de desarrollo de TurboGears 2) y Florent Aide (como gestor de lanzamientos de TurboGears 1.x).

En junio de 2007, la comunidad comenzó a experimentar para integrar la API de TurboGears sobre los componentes y protocolos utilizados en Pylons , y se especuló con la posibilidad de que ambos frameworks se fusionaran. [ 5 ] Sin embargo, la documentación oficial de TurboGears 2 indica que esto es improbable debido a las "prioridades diferentes, pero compatibles" [ 6 ] de ambos proyectos. Pylons buscaba centrarse en un diseño extensible de bajo nivel, mientras que TurboGears se enfocaba en ofrecer un paquete completo y fácil de usar, por lo que ambos colaboran de forma similar a como lo hacen Debian y Ubuntu actualmente. La nueva rama 2.x tuvo su primera versión estable en mayo de 2009.

En otoño de 2008, TurboGears contaba con una comunidad amplia y activa, con más de 3000 usuarios en su lista de correo, un libro publicado por Prentice Hall en noviembre de 2006 y varias aplicaciones TurboGears, tanto de código abierto como propietarias, implementadas en el mundo real. El desarrollo avanzaba a un ritmo moderado pero constante, impulsado además por la exitosa participación del proyecto como organización mentora en Google Summer of Code en 2008 y 2009. TurboGears 1.1, diseñado para ayudar a los sitios web antiguos a migrar a la versión 2.x, se lanzó en octubre de 2009. Se está trabajando en una nueva revisión del libro para actualizarlo con las novedades de TurboGears 2.

En 2010, el proyecto sufrió un revés. Los desarrolladores principales tuvieron que ausentarse por asuntos personales. Sin embargo, a finales de enero de 2011, el proyecto comenzó a reorganizarse y a retomar su rumbo. Tras varios meses de organización de la infraestructura y solución de problemas de programación, TurboGears logró lanzar nuevas versiones (2.0.4 y 2.1.2).

En 2013, manteniendo la compatibilidad con versiones anteriores , el proyecto dejó de usar el código base de Pylons para dar soporte a Python 3, ofrecer mejoras de velocidad y un proceso de instalación más sencillo. Esto dio lugar al lanzamiento de la versión 2.3.0 en agosto de 2013. También se anunció un ciclo de lanzamiento más rápido, que debería traducirse en una actualización de mantenimiento cada tres meses aproximadamente.

El futuro de los TurboGears

El desarrollo de TurboGears se centra ahora principalmente en la nueva rama 2.x, siendo la versión 2.3 la principal en desarrollo, con soporte para Python 3.

Las versiones 1.1 y 1.5 ofrecen una ruta de transición de la rama 1.x a la 2.x, al actualizar el ORM predeterminado y los lenguajes de plantillas para que coincidan con los de la serie 2.x. El equipo de TurboGears dejó claro a los nuevos usuarios que la versión 2.x es la futura, y que la 1.x se mantiene únicamente para la comodidad de los usuarios actuales.

Durante 2011, los desarrolladores principales de TurboGears mantuvieron conversaciones con el proyecto Pylons para unir fuerzas con ellos y los desarrolladores de Repoze.BFG en un nuevo proyecto unificado llamado Pyramid . Debido a los problemas de retrocompatibilidad que esto implicaría, y para garantizar que TurboGears siga siendo una plataforma fiable a largo plazo, el equipo actual decidió colaborar con el proyecto Pylons en todo lo posible, pero no basar el núcleo de TurboGears en Pyramid. [ 7 ]

El desarrollo futuro, la compatibilidad con Python 3 y las mejoras de velocidad se han producido en la rama 2.3, que ha visto una reescritura completa del núcleo de TurboGears manteniendo la compatibilidad con versiones anteriores de las aplicaciones existentes, ya que desde ese lanzamiento TurboGears tenía su propio núcleo en lugar de estar basado en el marco Pylons. [ 8 ]

Durante la serie 2.3, el framework ha estado experimentando con un llamado "modo mínimo" que le permite actuar como un microframework de facto, reduciendo las dependencias de decenas a solo 3 y posicionando a TurboGears entre Flask y Django en la cima de los frameworks de Python para sus objetivos, ya que aspira a poder escalar desde un microframework a un framework full-stack dependiendo únicamente del hecho de que se utilice TurboGears2 o el paquete tg.devtools.

Desde la versión 2.4, el framework cuenta con una arquitectura modular basada en componentes, lo que permite a los usuarios habilitar y reemplazar los componentes a su antojo, haciendo que TurboGears cumpla con su misión de ser un framework web que se adapta a las necesidades de los usuarios.

Véase también

Referencias

  • Ramm, M; Dangoor, K; Sayfan, G (7 de noviembre de 2006). Aplicaciones web rápidas con TurboGears , Prentice Hall. ISBN 0-13-243388-5

Notas

  1. "Versión 2.5.0" . 18 de febrero de 2025. Consultado el 1 de marzo de 2025 .
  2. Manual de TurboGears2: Creación y validación de formularios
  3. Kevin Dangoor. "Una breve historia de TurboGears" . blueskyonmars . Consultado el 6 de septiembre de 2021 .
  4. "TurboGears tiene un nuevo líder" . Kevin Dangoor. 3 de enero de 2007. Consultado el 12 de abril de 2007 .
  5. "Fusión de torres eléctricas" . Archivado del original el 5 de julio de 2012. Consultado el 27 de junio de 2007 .
  6. "Novedades de TurboGears 2" . Consultado el 16 de septiembre de 2008 .
  7. "Estado de los engranajes" . Michael Pedersen. 1 de marzo de 2012. Consultado el 18 de marzo de 2013 .
  8. "Versión inestable de TurboGears 2.3" . Alessandro Molina. 23 de enero de 2013. Consultado el 18 de marzo de 2013 .
  • Sitio web oficialEdita esto en Wikidata