
Creía que había escrito ya algo al respecto de este tema, el de los frameworks de desarrollo. Pero buscando y leyendo, veo que no ha sido expresamente así, por lo que estoy cubriendo el hueco
Framework es una palabra que en el terreno del desarrollo del software se puso de moda hace ya mucho tiempo. Creo que poco después de cuando las suites de aplicaciones empezaron a aparecer. La gente del área (me refiero a la informática y computación) le gusta hacer uso de estos términos técnicos, especialmente a los líderes de proyecto y gerentes de desarrollo (es curioso, diría yo que entre más administrativa es la función, más se empeñan en hacer uso de términos técnicos). El problema es que los términos se usan de forma intercambiable (por ejemplo framework por «librería») o de forma equivocada (framework por protocolo), lo que lleva a muchas equivocaciones y confusiones.
Etimológicamente hablando, el término framework se refiere a algo que soporta o encierra a algo más; ese «algo más» sostenido o contenido dentro de este «marco de referencia» o «entorno de trabajo», como lo traducen en la Wikipedia en español (aunque personalmente usar «entorno» no me agrada mucho, me agrada más la definición de la Wikipedia en inglés donde la descripción es más independiente de un «entorno» que para mi es algo distinto, como el «entorno de programación Unix», que puede incluir varios frameworks, bibliotecas, paquetes, shells e interfaces de usuarios gráficas).

Por su parte, una biblioteca (que en inglés es library y por ello que suele referírseles a éstas como «librerías» en español pero como puede verse es conceptualmente equivocado) es un conjunto de rutinas y procedimientos que son utilizados, invocándoseles desde un programa en tiempo de ejecución. Como puede entenderse entonces, la diferencia entre un framework y una biblioteca es la capacidad de la primera para permitir la creación de nuevos elementos de código bajo una visión específica y uniforme (incluso mucho «más grande» que el framework del que se parte). Las bibliotecas simplemente se usan para efectuar acciones y obtener resultados, no permiten ser usadas en la definición o creación de algo nuevo.