2012-02-24 23 views
43

Había seleccionado sproutcore como marco justo antes de que Ember se bifurcara desde 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?Diferencias entre Sproutcore y Ember

Las principales preguntas son:

  1. ¿Cuáles son las diferencias efectivas entre los dos esfuerzos?
  2. ¿Qué es el historial de la división?
  3. ¿Qué es el futuro de sproutcore, a dónde va ahora?
  4. ¿Se está desarrollando el Ember going para ser un reemplazo completo para el sproutcore?
+0

Tengo esas preguntas yo mismo. Todo el mundo está diciendo que, si estás construyendo una aplicación de escritorio, ve con Sproutcore 1.x, para una aplicación web ve con Ember (anteriormente Sproutcore 2). Creo que una división como esa no tiene sentido, ¿acaso no están destinados a la RIA del lado del cliente? La única diferencia real para mí es que, aunque es más fácil trabajar con Ember, todavía está en desarrollo y no tiene muchas funciones. –

Respuesta

78

Como alguien que tiene tanto una aplicación Sproutcore como una aplicación Ember cerca de un lanzamiento de producción, responderé a sus preguntas (reordenándolas 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.

¿Qué es la historia de la división?

Esto es lo que he monté:

SproutCore fue creado por Charles Jolley empresa Sproutit como la base de su producto en 2007. Sala de correo Jolley tarde 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 para 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 del 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 conquistarían la mayoría de las características y funcionalidades de Sproutcore 1.x a Sproutcore 2.

Los esfuerzos de Strobe no daban los resultados esperados, y la compañía sopesó sus opciones, finalmente decidiendo sobre 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ó seguir 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 el 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 definir la capa de vista mediante 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 darán lugar a que los marcos diverjan, aunque se ha considerado 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, dónde va ahora?

Esta discusión tiene minutos de la quedada de un colaborador reciente.

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

La hoja de ruta a corto plazo es centrarse en la solidificación del material de marketing, demostraciones y código base. El equipo lanzó recientemente el 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.

Está Ember va a desarrollar para ser un reemplazo completo para 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.

+2

En realidad, SproutCore se creó en la empresa Sproutit de Charles como la base de su producto de Mailroom en 2007, antes de que Charles se uniera a Apple. Aparte de ese pequeño detalle, +1 bien señor. Muy bien escrito. –

+0

Gracias, por esa corrección Roy. He actualizado la respuesta en consecuencia. –

+0

Gracias por la explicación detallada. Cuando se trata de una extremidad que elige un marco, a uno le gusta saber que es estable y tiene soporte comunitario a largo plazo: jQuery es un buen ejemplo. Estos eventos ciertamente son desafortunados, y ponen dudas en el futuro tanto de Sproutcore como de Ember en un campo de esfuerzos más atenuados. Por supuesto, lo que la mayoría de la gente quiere es una pequeña base de código modular y un widget de UI fácil de usar y de tematización (con la opción de personalización o extracción). –

13

1) La línea oficial es Sproutcore está destinada para RIA y Ember.js está diseñada 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 centra 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 lo 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.

Así que inténtalo como quieras.

3) Esta es una excelente pregunta. Recently there was a meetup and several things were discussed. los puntos principales que se discutieron fueron:

  • SC sigue vivo y coleando
  • mejorar la documentación (que hemos estado escuchando que por un tiempo).
  • Mantener las buenas partes del código que se introdujo después en el desarrollo de 1.4.5 SC2 y eliminar o mover a los módulos opcionales otras cosas (como plantillas)
  • nuevas herramientas de construcción basadas en JavaScript
  • completamente nueva lona capa de vista basada, llamada Blossom.
  • Una especie de fundación respaldo/corporativa para SC

Probablemente hay otros que me he perdido

4) Definitivamente no es un reemplazo, aunque se puede utilizar cualquier marco para construir cualquier aplicación (es todo Javascript , después de todo).

+0

Solo para agregar un punto rápido, hay un "sprint" de documentación/sitio web este fin de semana para que SC corrija algunas de las cosas que están rotas y ayude a los nuevos desarrolladores a comenzar a trabajar rápidamente con las herramientas adecuadas. Puedes leer un poco más sobre el sprint aquí: http://blog.sproutcore.com/sprint-towards-1-8-release/ –

+0

Así que pasé un poco de tiempo leyendo los nodos de meetup y mirando a Blossom ... Blossom parece la dirección correcta, sin embargo, me preocupa la nota de que Blossom reducirá la capacidad móvil/táctil, lo que es alarmante si alguien considera abandonar el soporte móvil en 2012. Cualquier idea sobre lo que está sucediendo aquí y si touch/mobile es realmente siendo compatible en el futuro de sproutcore? –

+0

Actualmente se están construyendo herramientas que compilarán aplicaciones en flor para ejecutarse de forma nativa en cualquier plataforma. Obviamente, cada plataforma deberá implementarse individualmente, pero creo que puede esperar el soporte para las principales plataformas con bastante rapidez. Según lo que he visto en el IRC#blossom, estas herramientas estarán disponibles el 1 de abril. La advertencia es que el soporte en tiempo de ejecución requerirá licencias. Te sugiero que te pases por #blossom en freenode y empieces a hacer preguntas. O visite el grupo de google de sproutcore – hvgotcodes