Saltar al contenido
Framework Ecosystems LabsUn contrato, muchos ecosistemas, la misma prueba.

🐹 Ember.js — 2011#

⬅️ Atlas · 🟨 Ecosistema JavaScript · 🗂️ Índice

Ember lleva más de una década en producción y casi nunca aparece en las conversaciones sobre frameworks. Está en el Atlas por una razón que no tiene que ver con su API: es el proyecto con el mejor proceso de gobierno y de migración del ecosistema JavaScript, y eso es precisamente lo que el módulo 11 enseña a valorar.

🎯 Por qué está en este programa Porque responde con hechos a la pregunta que el caso AngularJS deja abierta: ¿se puede cambiar profundamente un framework sin romper a quien lo usa? Ember lleva quince años demostrando que sí, y documentando cómo.

Aparición 2011, sucesor de SproutCore
Clasificación web-framework — completo
Ecosistema JavaScript
Licencia MIT
Estado 🟢 Activo
Documentación https://guides.emberjs.com/release/

💡 Convención sobre configuración, en el navegador#

Ember hizo con el frontend lo que Rails hizo con el backend: imponer una estructura y unas convenciones de nombres, de modo que dos proyectos distintos se parezcan.

Trae en la caja enrutado, capa de datos, plantillas, pruebas, generadores y herramientas de línea de comandos. Es la misma propuesta de Angular —framework completo con opinión fuerte— con cinco años de antelación.

🏛️ Lo que de verdad merece estudiarse: el proceso#

Propuestas públicas antes de cambiar#

Todo cambio significativo pasa por una propuesta escrita, pública y discutida antes de implementarse [ember-rfcs]. Cualquiera puede leer por qué se tomó una decisión, qué alternativas se consideraron y quién objetó.

Para el módulo 11 eso es oro: la pregunta «¿cómo se decidieron los cambios grandes anteriores?» tiene aquí una respuesta consultable en lugar de una impresión.

Ediciones: cambiar mucho sin romper#

Ember introdujo el concepto de edición: un conjunto coherente de cambios que se adopta gradualmente, con el código antiguo funcionando al lado [ember-octane]. La edición Octane cambió el modelo de componentes, el sistema de reactividad y la sintaxis de las plantillas — y no rompió las aplicaciones existentes.

La comparación es directa y vale la pena tenerla presente:

AngularJS → Angular Ember → Octane
Alcance del cambio Modelo, lenguaje, sintaxis Modelo, reactividad, sintaxis
¿Compatible? No , con convivencia
Camino Puente entre dos frameworks Actualización gradual, archivo a archivo
Nombre Producto nuevo Mismo producto
Coste para los equipos Reescritura o migración larga Adopción a su ritmo

El problema técnico era de dificultad comparable. La diferencia estuvo en el proceso, no en la dificultad.

Herramientas de actualización automática#

Ember distribuye herramientas que reescriben el código antiguo al estilo nuevo. No cubren todo, y quitan de en medio la parte mecánica — que es la que hace que las migraciones se pospongan indefinidamente.

⚖️ Por qué su cuota es pequeña#

Sería deshonesto contar solo lo bueno. Ember perdió terreno por razones concretas:

1. Llegó antes de que el lenguaje madurara. Tuvo que inventar su propio sistema de módulos, sus clases y sus herramientas. Cuando JavaScript estandarizó los suyos, Ember cargaba con los propios.

2. La opinión fuerte espanta a quien quiere empezar rápido. React ofrecía «añade esta biblioteca a lo que ya tienes»; Ember pedía adoptar un mundo entero.

3. Sin patrocinio corporativo grande. Sin el impulso de Meta o Google, la visibilidad depende de la comunidad, y eso se nota en adopción aunque no en calidad.

🎓 Las tres lecciones#

1. El proceso de gobierno es una dimensión de la decisión, no un detalle. Propuestas públicas, ediciones y herramientas de actualización son evidencia consultable sobre cómo te tratarán en la próxima versión mayor.

2. Se puede cambiar profundamente sin romper — cuesta más y se puede. Ember es el contraejemplo vivo de la excusa «no había otra forma».

3. Calidad de proceso y cuota de mercado son cosas distintas. Confundirlas lleva a elegir por popularidad, que es justo lo que el módulo 11 prohíbe como criterio.

🔗 Enlaces#

Fuentes#