Gracias a la colaboración de Carlos Cesar Caballero Díaz traemos hoy a nuestra comunidad un interesante resumen acerca de las características del framework web2py donde, por supuesto, la información plasmada está basada en su experiencia personal con el uso del framework y la documentación oficial que esta disponible en: http://www.web2py.com/book

logo_bw_w2p

¿Qué es web2py?

web2py es un marco de trabajo para el desarrollo rápido y seguro de aplicaciones web utilizando el lenguaje de programación Python, fue creado con el objetivo de hacer el desarrollo web fácil, rápido y seguro, razones por las cuales ha ganado un gran número de usuarios y colaboradores además de haber obtenido en 2011 el premio Bosie al mejor software de desarrollo de código abierto y en 2012 el premio Tecnología del año de InfoWorld.

Características

Web2py esta considerado como un full-stack framework debido a que incluye todos los componentes necesarios para hacer aplicaciones web completamente funcionales y esta diseñado para guiarnos a los desarrolladores a seguir buenas prácticas de la ingeniería de software, como es el uso del patrón MVC (Modelo-Vista-Controlador).

La seguridad es uno de sus aspectos fuertes, ya que entre otras cosas se encarga de manejar automáticamente muchos de los factores que llevan a vulnerabilidades siguiendo prácticas bien establecidas, de forma tal que los desarrolladores tengamos menos oportunidades de, por error, introducir vulnerabilidades en nuestro software.

Cuenta además, con una capa de abstracción a bases de datos (DAL) que escribe SQL de forma dinámica para mas de 10 gestores de bases de datos, además de soportar bases de datos no relacionales, lo que nos permite realizar nuestras aplicaciones compatibles con distintas bases de datos y sin escribir una linea de SQL.

Otras características del proyecto son la generación automática de una interfaz de administración para las bases de datos, un IDE web completamente funcional, un sistema de tickets para el seguimiento de errores, licencia LGPL, y la promesa de la compatibilidad hacia atrás, que no se ha roto desde su primera versión en 2007 y no se piensa romper.

Ventajas

A continuación listaré, desde mi punto de vista, las principales ventajas del framework:

  • Su curva de aprendizaje es inusualmente corta, en muy poco tiempo se puede conocer el framework, haciéndolo ideal para principiantes, aunque esto no significa que no sea potente.
  • Es Multiplataforma y completamente portable, entre sus herramientas, incluye un servidor web permitiendo incluso desplegar aplicaciones casi como si de programas de escritorio se tratase, muy útil cuando encontramos entornos sin redes.
  • Esta diseñado para el desarrollo ágil de aplicaciones, se encarga de la mayor parte de las tareas haciendo que la cantidad de código a escribir sea ridículamente pequeña.
  • Cuenta con un buen sistema de plantillas para las vistas en las cuales se puede escribir código Python.
  • Las vistas pueden devolver automáticamente el contenido en XML, JSON, PDF, entre otros, cambiando solamente la extensión de la llamada.
  • Es muy sencilla la implementación de servicios web, soportando múltiples protocolos.
  • Los componentes, que son geniales, pero un poco difíciles de explicar sin un ejemplo, permiten realizar aplicaciones modulares y embeberlos en las páginas a través de AJAX sin escribir una linea en javascript, el objetivo es que se puedan realizar aplicaciones web ensamblando componentes desde las plantillas de las vistas.
  • La documentación oficial es muy clara y concisa, quizá el manual de web2py sea el mejor que halla leído.
  • Si bien esta no es una clara ventaja, ya que en el mundo del software libre y código abierto hay excelentes comunidades, la comunidad que rodea a web2py ha creado un muy buen ambiente, la lista de distribución (web2py@googlegroups.com) es muy activa (suelo recibir mas de 50 correos diarios) y siempre están dispuestos a colaborar.

Desventajas

Las principales desventajas del marco de trabajo, según mi punto de vista son:

  • La comunidad de web2py aún es relativamente pequeña, por lo tanto no hay tantos complementos disponibles como para, por ejemplo, Django, tampoco existen muchos IDE con soporte para web2py.
  • Para la generación de formularios y sobre todo los grids (rejillas) se utiliza código del lado del servidor, lo que agiliza mucho el desarrollo, pero puede complicarse un poco a la hora de hacer modificaciones (en estos momentos se trabaja para corregirlo).
  • Los modelos, controladores y funciones de ayuda (helpers) se declaran de forma global, por un lado hace el desarrollo más fácil y rápido, pero por otro lado, cuando se trabaja con proyectos de gran tamaño, puede repercutir en el rendimiento de la aplicación, debiéndose usar el “model less approach”, un hack que no es tan intuitivo.
  • Aún no se ha realizado la migración a python 3.x y los desarrolladores no tienen mucho apuro, según su opinión el código de web2py es compatible (o bastante compatible) con python 3.x, pero a la rama 2 aún le queda bastante tiempo de vida, y en la mayoría de los servidores aún se usa (y se usará por un buen tiempo) y por lo tanto, por el momento prefieren dedicar esfuerzos a otros temas, personalmente preferiría un web2py en la rama 3 desde ya, pero ellos tienen sus razones.

Conclusiones

El marco de trabajo web2py es muy bueno para el desarrollo rápido de aplicaciones, sobre todo cuando enfrentamos proyectos de mediano y pequeño tamaño en aplicaciones orientadas completamente al lado del servidor, por otro lado, si lo que deseamos es realizar aplicaciones del lado del cliente (con una api REST, por ejemplo) o híbridas, web2py se presenta como una opción excelente, por la facilidad del trabajo con la DAL, el buen soporte para servicios web y la facilidad con la que se pueden convertir los datos a formatos como XML o JSON.

El framework puede ser usado para el desarrollo de grandes aplicaciones hechas completamente del lado del servidor, pero algunas de las características que lo hacen tan fácil y divertido para desarrollar nos pueden jugar en contra, provocando problemas a mediano o largo plazo si diseñamos la aplicación sin conocimiento previo del funcionamiento del marco de trabajo o sin tener en cuenta sus especificidades.

¿Consideran ustedes que web2py puede llegar a ser un framework con una mayor comunidad que la que tiene actualmente?

¿Has tenido alguna experiencia en el desarrollo de aplicaciones con web2py o framework similares que usen Python como su lenguaje de programación?

Puedes dejarnos tu opinión al respecto en los comentarios o exponer otras ventajas/desventajas que hayas detectado en su uso cotidiano.