sproutcore ember.js

Diferencias entre Sproutcore y Ember



ember.js (2)

Había seleccionado Sproutcore como marco justo antes de que Ember se bifurcara del sproutcore. No estoy seguro de qué camino tomar y estoy un poco frustrado por la aparente dilución de los esfuerzos causados ​​por la fragmentación, ya que raramente conduce a cosas mejores. Los esfuerzos de Sproutcore 2.0 (ahora Ember) parecían ir en la dirección correcta de modularización y reutilización de otros componentes javasript (jQuery), sin embargo, no está claro desde el punto de vista externo por qué los dos esfuerzos tuvieron que dividirse ... couldn '' ¿Tenemos código modular y un módulo de biblioteca de widgets también?

Las preguntas principales son:

  1. ¿Cuáles son las diferencias efectivas entre los dos esfuerzos?
  2. ¿Cuál es la historia de la división?
  3. ¿Qué es el futuro de sproutcore, a dónde va ahora?
  4. ¿El desarrollo de Ember va a ser un reemplazo completo para el sproutcore?

1) La línea oficial es Sproutcore para RIA y Ember.js está destinado para aplicaciones "estilo web". Entonces, cuando miras iCloud piensas en Sproutcore y cuando miras Twitter piensas en Ember.js.

Desde el punto de vista técnico, Ember.js se enfoca en un código más modular y las llamadas "plantillas semánticas" para las vistas. Sproutcore es más monolítico.

2) No estoy seguro de que alguien realmente sepa. Si nos fijamos en la línea de tiempo, Charles Jolley dejó Apple para formar una compañía llamada Strobe, que desarrolló una plataforma de pila completa para el desarrollo de aplicaciones. Strobe contrató a Yehuda Katz y otros, quienes comenzaron a trabajar en adelgazar SC para que funcionara mejor en dispositivos móviles. Después de aproximadamente un año, Yehuda se fue para formar la compañía Tilde, y un mes después, Facebook compró Strobe en lo que se considera una adquisición de talentos.

Entonces interpreta eso como quieras.

3) Esta es una excelente pregunta. Recientemente hubo una reunión y se discutieron varias cosas . Los puntos clave discutidos fueron:

  • SC sigue vivo y coleando
  • Mejorar la documentación (hemos estado escuchando eso por un tiempo).
  • Mantenga las partes buenas del código que se introdujo después de 1.4.5 en el desarrollo de SC2 y deshágase de o muévase a módulos opcionales de otras cosas (como Plantillas)
  • nuevas herramientas de compilación basadas en JavaScript
  • completamente nueva capa de vista basada en lienzo, llamada Blossom.
  • Algún tipo de fundación / respaldo corporativo para SC

Probablemente hay otros que me perdí

4) Definitivamente no es un reemplazo, aunque puedes usar cualquier framework para compilar cualquier aplicación (es todo javascript, después de todo).


Como alguien que tiene tanto una aplicación Sproutcore como una aplicación Ember cerca de un lanzamiento de producción, daré un vistazo a sus preguntas (reordenado para mayor claridad). Todo lo que sigue a continuación es lo que he observado sin ningún conocimiento interno. Un poco es especulación, así que habilité el modo wiki en esta respuesta, para que las personas más informadas puedan corregir los detalles.

¿Cuál es la historia de la división?

Esto es lo que he reconstruido:

SproutCore fue creado por la empresa Sproutit de Charles Jolley como la base de su producto Mailroom en 2007. Jolley luego se unió a Apple y Sproutcore se utilizó para construir las aplicaciones web originales para Mobile Me. El mandato fue recrear la experiencia de las aplicaciones de Mac como Mail e iCal, y ese esfuerzo continúa en Sproutcore hoy con iCloud.

Jolley dejó Apple y formó una compañía llamada Strobe en San Francisco con una visión en parte de aprovechar Sproutcore. El equipo de Strobe decidió que Sproutcore no encajaba bastante en muchos casos de uso de Web 2.0, y era una propuesta demasiado completa para desarrolladores, por lo que iniciaron un esfuerzo hacia Sproutcore 2. Los objetivos de Sproutcore 2 fueron la modularidad , y un enfoque más consciente de HTML que sería más accesible para los desarrolladores web de todo el mundo. La tracción inicial de Backbone fue parte de este análisis.

Después de luchar para mover la base de código Sproutcore hacia esta visión, el equipo Strobe decidió comenzar de nuevo con Sproutcore 2 (nombre clave interno Amber). Charles escribió el núcleo Run Loop y el código del observador clave-valor. Yehuda Katz y Tom Dale fueron los desarrolladores principales de Strobe en el proyecto. La visión en ese momento era que Strobe y la comunidad eventualmente exportarían la mayoría de las características y funcionalidades de Sproutcore 1.x a Sproutcore 2.

Los esfuerzos comerciales de Strobe no estaban dando los resultados esperados, y la compañía sopesó sus opciones, y finalmente decidió adquirir una adquisición de talento de Strobe por parte de Facebook. Antes de que esto sucediera, varios empleados de Strobe, incluidos Katz y Dale, se separaron para formar una nueva compañía llamada Tilde.

Tilde decidió continuar desarrollando Sproutcore 2, pero cambió el nombre (a Amber.js y luego a Ember.js) y los objetivos del proyecto. Dejaron caer objetivos a largo plazo de compatibilidad con Sproutcore. Dejaron de admitir cualquier tipo de biblioteca de widgets de visualización y se centraron en el caso de uso de HTML / CSS con una estrecha integración de enlace de datos con el lenguaje de plantillas de Handlebars.

Desde la disolución de Strobe, la administración de Sproutcore 1.x ha pasado de Jolley a Tyler Keating, y la comunidad se ha centrado en la limpieza de Sproutcore 1.x, que estuvo en un lugar incómodo durante un tiempo cuando la idea de Sproutcore 2 se avecinaba.

¿Cuáles son las diferencias efectivas entre los dos esfuerzos?

Las similitudes en los proyectos son que presentan modelos de objetos muy similares. También tienen una propiedad similar, un observador y sistemas vinculantes.

Sproutcore incluye una biblioteca de widgets de visualización como barras de herramientas, vistas de lista, vistas de cuadrícula, botones y sistema de temas, y un enfoque en la definición de la capa de vista a través de Javascript y el posicionamiento absoluto administrado por la biblioteca. Es muy potente para crear aplicaciones de escritorio en la web.

Ember tiene una huella más pequeña. Presenta una estrecha integración con manubrios. Es una alternativa a Backbone para muchos proyectos. Su objetivo es proporcionar una arquitectura de aplicaciones estándar para las aplicaciones del lado del cliente y eliminar el código repetitivo.

Esas diferencias probablemente llevarán a los marcos divergentes, aunque se ha considerado la posibilidad de adoptar el mismo núcleo. En ese escenario, Sproutcore usaría la biblioteca "metálica" de Ember y quizás otras librerías principales).

¿Cuál es el futuro de Sproutcore, a dónde va ahora?

Este hilo tiene minutos de la reunión de un colaborador reciente.

https://groups.google.com/group/sproutcore/browse_thread/thread/aacf00a6047a866e#

El plan de acción a corto plazo es centrarse en solidificar los materiales de marketing, demos y código base. El equipo lanzó recientemente Sproutcore Showcase . Existe un consenso general sobre el reemplazo de abbot, las herramientas de compilación de Ruby para Sproutcore, con una solución basada en Javascript (node.js), que ahora se encuentra en desarrollo activo. También hay un deseo de fusiones "grandes" de código de compañías como Apple y lanzamientos más frecuentes. Sproutcore 1.8 fue lanzado recientemente.

¿El desarrollo de Ember va a ser un reemplazo completo para el sproutcore?

No es probable. El equipo central de Ember ha dejado en claro que no tienen la intención de desarrollar personalmente esas características faltantes. Es posible que los miembros de la comunidad puedan desarrollarlos como proyectos separados: flame.js es el intento más ambicioso hasta el momento. Las opciones de diseño de Ember hacen que sea más fácil integrarse con proyectos como jQuery UI, por lo que un reemplazo completo puede o no ser necesario.