lunes, 25 de enero de 2010

Rails, Django, Web2py

No voy a hacer una comparación objetiva. Lo aclaro desde el principio.

Lo que quiero escribir en este post es simplemente un breve resumen de mi opinión sobre los tres frameworks basado en mi propia experiencia. Es super subjetiva, y estoy abierto a que me cuenten los demás qué opinan.


No quiero con esto convencer a nadie de usar uno u otro framework. Creo que lo mejor es que cada uno experimente y decida por sí mismo.


Por razones de longitud, no voy a incluir las cosas buenas o malas que son comunes a los tres frameworks. Ya todos sabemos que plantean metodologías avanzadas, agilizan el desarrollo, etc. Voy a destacar solo lo que en mi experiencia, diferenció (para bien o para mal) a cada uno.


Rails



  • Fue mi puerta de entrada al mundo del desarrollo web, tengo que reconocerle eso. Si no fuese por Rails nunca me hubiese agradado ese mundo.

  • Tiene algunas utilidades que para un novato pueden ayudar mucho, aunque después no se usen tanto. Ej: scaffolds.

  • Posee una comunidad muy activa y abierta, que lo hace conocer y avanzar mucho. Y además es una comunidad muy distendida, agradable.

  • Su documentación es muy buena, detallada y con ejemplos útiles. Realmente ayuda a aprenderlo.

  • Me obligaba a hacer las cosas de una determinada manera, cuando a veces prefería hacerlas de otra. No me dejaba demasiada libertad para elegir cómo hacer las cosas.

  • En algunos aspectos suele ser complicado innecesariamente (IMHO). En especial, las migrations y la estructura de archivos, que opino pueden simplificarse enormemente sin perder funcionalidad.


Django



  • Muy flexible. Propone una manera de hacer las cosas pero deja casi total libertad para hacerlas como uno considere mejor, y sin tener que "romper" nada o meterse en código extraño.

  • Enfoque más simplista, pero sin dejar de ser explícito y potente. (me gusta que sea explícito porque me ayuda a entender lo que sucede, y no tener que confiar en la "magia")

  • Aprovecha mucho el dinamismo de Python. Los CRUD de la aplicación de administración son un excelente ejemplo: detectan la estructura de los modelos y arman los forms y listados de forma dinámica.

  • Comunidad activa, abierta y agradable como la de Rails, y a veces bastante delirante.

  • Exelente documentación e información. El Django Book y la documentación oficiales son muy buenos.

  • No me termina de cerrar el sistema de templates. Entiendo el argumento de los diseñadores y la separación de lógica de presentación, pero creo que se le podría dar más potencia. Aunque me gusta muchísimo el sistema de bloques, da mucha flexibilidad.



Web2py



  • Muy, muy sencillo de instalar y poner en marcha por primera vez. En eso es ideal para novatos. Django y Rails están lejos en este aspecto.

  • También es muy sencillo de aprender y utilizar, a veces bastante más que Django o Rails.

  • Me gustó mucho la idea de poder editar los archivos del sitio, desde el sitio mismo. En tiempo de desarrollo resulta muy útil.

  • Pero su simplicidad se logra ocultando al desarrollador muchas de las cosas que suceden. Cuando surge un problema, no siempre se llega a comprender lo que está pasando.

  • Similar a lo que sucedía con Rails, suele obligar a hacer las cosas de una determinada manera y dificulta hacerlas de otra forma.

  • Prefiero mucho más un ORM como ActiveRecord o el ORM de Django, antes que la DAL que provee web2py.

  • Su desarrollo es cerrado. Todos pueden aportar ideas o parches, pero hay una única persona que es dueña del proyecto y que decide su destino, y el destino del aporte de cada uno.

  • Poca documentación. El libro oficial solo puede verse gratuitamente en scribd (muy molesto), y si se quiere el PDF hay que pagarlo.

4 comentarios:

  1. Hola...
    Sobre web2py

    Pero su simplicidad se logra ocultando al desarrollador muchas de las cosas que suceden. Cuando surge un problema, no siempre se llega a comprender lo que está pasando.

    No entiendo que quieres decir con esto

    ResponderEliminar
  2. con respecto a web2py:
    a mi tampoco me gustaba aveces la magia (ciertamente este framework tiene mucha), pero el asunto se resuelve fácilmente.

    en el apartado
    http://www.web2py.com/examples/default/documentation

    específicamente en:
    Epydoc

    puedes ver el código en linea (yo acostumbro a leerlo regularmente)

    entonces, la magia te facilita el trabajo enormemente y si no te gusta... puedes leer y aprender como en realidad se hacen las cosas.

    vengo de programar en el paradigma de procedimiento... y leer el código me enseña bastante la POO

    ResponderEliminar
  3. Entonces si quiero utilizar la 'magia' como le dicen no me quedaria mas remedio que confiar en lo esta hecho, pero si la magia te facilita el trabajo enormemente esto es una ventaja o una desventaja

    ResponderEliminar
  4. en mi humilde opinión la magia solo te ahorra tiempo.

    si el que programa es ignorante y flojo, se perjudica pq le facilita mucho las cosas... esa magia permite que mediocres hagan cosas de nivel medio que de otra forma solo serian básicas... y si la plataforma no es abierta te encasilla...

    yo cuando no confió o no me gusta el resultado.. veo el código y lo adapto (según me lo permitan mis conocimientos).

    y me considero un usuario básico - medio.. me falta mucho para llegar a mi criterio de avanzado.

    ResponderEliminar