Framewoks

¿Qué es un framework?

Se dice que a una librería tú le dices qué hacer, mientras que un framework es algo que te dice a ti cómo hacerlo.

Un framework es un conjunto de librerias y convenciones usadas para desarrollar algo.

Ya que para desarrollar algo siempre, quieras o no, usarás un conjunto de librerias y convenciones (al menos las tuyas), siempre, quieras o no, estás usando un framework.

Así que no es válido eso de "yo no uso frameworks". Pero entiendo el punto. Lo que quieren decir es que no usan los frameworks de otros, solo los suyos.

Lo cual esta bien si nadie más proseguirá tu proyecto. Quizás te encargarás de él tú solo a perpetuidad. Quizás no te olvidas de nada. Quizás no necesites ayuda de nadie más. O quizás se descartará luego de unos meses.

Sea como sea, un buen framework requiere ser util, facilitar las cosas, una buena documentación.

Los frameworks open source que tienen esas cosas logran una comunidad fuerte y saludable que lleva el desarrollo de sus librerias y convenciones más allás del alcance de cualquier desarrollador solitario.

Lista de deseos

  • Permite que cualquiera pueda ensamblar una aplicación web usando tanto la interfaz web como la consola de comandos, además de hacerlo programáticamente.
  • Facilita la programación.
  • La base es HTML/CSS/Javascript
    • La idea es ser agnóstico respecto a los cambios de versiones de frameworks (Drupal6, Drupal 7) o a los de lenguaje (PHP4, PHP5).
    • También ser agnóstico respecto al lenguaje (PHP, Ruby, Python). Si se usan será para proveer servicios web estándar o para cosas que no se puedan resolver de otro modo.
    • Esto permite usar los nuevos avances en HTML/CSS/Javascript directamente, sin necesidad de que sean adaptados como componentes de algún framework en otro lenguaje.
  • La operaciones se pueden hacer tanto usando GUI como comandos textuales.
    • Esto ayuda a automatizar operaciones extensas o repetitivas
  • El desarrollo es modular
    • La idea es que estén instalados solamente los módulos estrictamente necesarios.
    • También que los módulos puedan ser reemplazados por otros con tal que se comporten del mismo modo.
  • Los módulos se pueden instalar por GUI, comandos textuales, consola del sistema operativo, o dejando caer un paquete de archivos en cierta ubicación.
  • Un módulo puede usar otros módulos
  • Un módulo es extensible
    • Es decir, se puede hacer un módulo que tenga todo lo que otro y más
  • Un módulo es sobrescribible
    • Es decir, se puede hacer un módulo que tenga sólo ciertas partes de otro, algunas de las cuales son versiones modificadas.
  • El comportamiento de un módulo se puede alterar desde afuera
    • Es decir, que no sea necesario tocar un módulo para alterar su comportamiento.
      El sistema de hooks de Drupal son un ejemplo de esta forma de alterar el comportamiento de un módulo.
  • Los datos están en una ubicación separada del código. El código está siempre en archivos.
    • Esto facilita tanto el backup de datos como el seguimiento de versiones de código.
    • En Drupal, por ejemplo, a veces el código reside en la base de datos y es difícil hacer debug,  seguimiento de versiones y portar aplicaciones.
      También, a veces, hay archivos que son datos y es difícil hacer backup de ese contenido externo a la base de datos. Archivos como estos podrían estar en un directorio de datos.
  • Los backups se pueden hacer por GUI, comandos textuales, o consola del sistema operativo.
    • Es posible recuperar un backup sin necesidad de usar el GUI
  • Los procesos definidos por los módulos son visibles.
    • Es posible ver el flujograma de cada proceso y los módulos que intervienen
  • El framework provee medios para avisar de percances.
  • Cierta configuración se puede almacenar en un profile que puede ser replicado.

Más artículos