Llevo años programando aplicaciones web con interfaces bastante complejos de tipo gestión empresarial y para gestión de sistemas, siempre en las intranet de las empresas que me han contratado. He desarrollado en PHP y frameworks como Ruby on Rails, Web2Py y Django, pero esta es la primera web que hago con Web2py y que coloco en abierto en internet. Por supuesto sí que he entregado muchas webs basados en Joomla, Drupal (casi me pego un tiro), WordPress, TikiWiki, OpenCart, Magento (casi me pego otro tiro) y también con Web2py pero privada (protegida con login/pass sólo para la empresa) pero hasta el momento nunca había escrito mi propio código Web2py para una aplicación en Internet pública. Está desarrollada además con jQuery y TwitterBootstrap; le podéis echar un vistazo en www.tuvozlegal.es. En realidad ya está publicada y en producción, pero sólo es la primera iteración del proyecto. Falta una segunda que se publicará aproximadamente en un mes y medio.
¿Y por qué he usado web2py os estaréis preguntando y no otros frameworks de desarrollo infinitamente más populares, como Django y Ruby on Rails? Principalmente por el DAL y los HELPERS de Web2py. El DAL es una capa de abstracción para la programación de bases de datos relacionales, no relacionales, basadas en documento y de diccionario y hasta el protocolo IMAP. La lista completa es esta:
- database drivers (source)
- SQLite sqlite3 or pysqlite2 or zxJDBC [zxjdbc] (on Jython)
- PostgreSQL psycopg2 [psycopg2] or pg8000 [pg8000] or zxJDBC [zxjdbc] (on Jython)
- MySQL pymysql [pymysql] or MySQLdb [mysqldb]
- Oracle cx_Oracle [cxoracle]
- MSSQL pyodbc [pyodbc]
- FireBird kinterbasdb [kinterbasdb] or fdb or pyodbc
- DB2 pyodbc [pyodbc]
- Informix informixdb [informixdb]
- Ingres ingresdbi [ingresdbi]
- Cubrid cubriddb [cubridb] [cubridb]
- Sybase Sybase [Sybase]
- Teradata pyodbc [Teradata]
- SAPDB sapdb [SAPDB]
- MongoDB pymongo [pymongo]
- IMAP imaplib [IMAP]
DJango y Ruby on Rails utilizan algo parecido denominado ORM. El ORM es un poco diferente, te abstrae del lenguaje de la base de datos pero no a nivel de mapeo de las sentencias del lenguaje, sino que trata como objetos los datos de la base de datos. Esta idea es muy buena, porque te permite generar un código muy orientado a objetos y por lo tanto muy limpio y elegante, pero tiene la desventaja que cuando hay que hacer operaciones sobre grandes volúmenes de datos, se vuelve muy ineficiente, teniendo que bajar al nivel del lenguaje de la base de datos concreta. DAL en cambio es muy eficiente porque mapea/traduce su lenguaje al propio de la base de datos en cuestión. Se podría decir que ORM es una capa que da acceso a su propio DAL y este traduce a la base de datos, como si ORM fuese otra capa encima de DAL; no es exacto pero «gráficamente» lo ilustra bastante bien.
El otro motivo son los HELPERS. No es ya por velocidad de desarrollo, la potencia, la limpieza que te permite trabajar con formularios, tags html y todo tipo de inputs, sino la integración que tienen los HELPERS con el framework en cualquier parte del código de la aplicación, desde el modelo, al controlador o la vista y por supuesto el nivel de seguridad que te aporta para la interfaz de usuario que da al saber que cumple con los problemas de seguridad listados en OWASP. En Django y Ruby on Rails he probado muchos tipos de herramientas para la vista, erb, haml, etc, pero no he encontrado la agilidad y potencia que con los HELPERS de web2py
Y por último hay algo que hace a Web2py imbatible: la retrocompatibilidad hacia atrás
la primera aplicación que escribí con web2py (nada serio) fue en 2008. Ese mismo código lo puedes coger y calzar en la última versión de web2py y funciona 100%. En Rails por ejemplo esto es ciencia ficción. En definitiva, este framework es muy ligero, de rápido desarrollo, muy potente y altamente escalable. Evidentemente los otros frameworks también aportan ventajas superiores a web2py, por lo pronto sus comunidades son infinitamente más amplias. En cualquier caso es imposible saber cual es le mejor framework y como en todas las disputas informáticas de cual es la mejor tecnologia, nunca hay una respuesta clara, así que podríamos decir que en ocasiones es subjetivo y en ocasiones es según el tipo de proyecto y con el equipo de gente y tecnologías que tengas que integrar el proyecto. En este momento y en este contexto el que más me encaja y con el que más cómo me siento es con web2py :-)
Y ahora en secreto, todo este rollo me lo he marcado para que google indexe un poco mejor a www.tuvozlegal.es ;-P