EmberCLI: ¡Llegando a un Discourse cerca de ti!

Nos gustaría migrar el pipeline de activos de Discourse para que utilice EmberCLI. EmberCLI es la forma estándar de desarrollar aplicaciones Ember y el enfoque de Discourse ha sido durante mucho tiempo una fuente de confusión para quienes se acercan a nuestro proyecto con experiencia en Ember.js.

Antecedentes

Discourse lleva tanto tiempo en el mercado que existía antes de que apareciera EmberCLI; de hecho, en aquel momento se consideraba una buena práctica utilizar algo como el pipeline de activos de Rails. A lo largo de los años hemos ido añadiendo más y más a nuestra aplicación Ember, incluyendo módulos de JavaScript, Babel.js y mapas de origen, pero sentimos que hemos llevado el pipeline de activos de Rails hasta donde nos ha sido posible. Algunas nuevas características, como async/await, son muy difíciles de integrar en nuestro sistema actual.

En la próxima versión mayor de Discourse (2.5) planeamos migrar a EmberCLI. Esto llevará bastante tiempo, por lo que haremos todo lo posible para mantener funcionando dos versiones de nuestra aplicación frontend. Los usuarios más aventureros podrán optar por activar EmberCLI, mientras que los demás podrán seguir utilizando la aplicación “tal cual” hasta que lleguemos a un punto en el que consideremos que todo está estable.

Hoja de ruta

  1. Migrar los patrones existentes a los patrones de EmberCLI: Ya hemos hecho un poco de esto en la versión 2.4. Básicamente, el objetivo es migrar gradualmente nuestro código JavaScript a un formato que se ajuste estrechamente a lo que espera Ember-CLI. Esto implica:

    • importar todo desde las mismas rutas
    • utilizar extensiones diferentes para handlebars raw / handlebars de Ember
    • eliminar las advertencias de propiedades calculadas
    • cambiar al módulo Location de Ember desde nuestro módulo personalizado
  2. Iniciar Discourse mediante EmberCLI: Esto probablemente implicará encontrar nuevos problemas a medida que se solucionen los puntos de (1) y repetir el mismo enfoque.

  3. Integrar componentes de temas y complementos: Necesitaremos investigar aquí para integrar las extensiones existentes de Discourse de la manera más transparente posible.

  4. Identificar cualquier cuello de botella de rendimiento (u otros): debería ser tan rápido como nuestro sistema actual, o incluso más rápido.

  5. Establecer un cronograma para el cambio: deberá ser generoso para que las personas tengan mucho tiempo para probar la función en fase beta y proporcionar comentarios.

Ventajas

Cuando hayamos completado la migración, muchas cosas que actualmente están rotas o son difíciles de realizar, como los mapas de origen y async/await, deberían funcionar sin problemas.

Además, para algunos desarrolladores que solo quieren trabajar en las partes frontend de Discourse, podríamos configurar las cosas de modo que puedan ejecutar EmberCLI apuntando a un servidor como try.discourse.org para modificar la aplicación frontend sin necesidad de ejecutar un servidor completo de Ruby/Rails con Redis/Postgres.

Este será un proyecto grande, pero al final nuestra aplicación estará mucho mejor gracias a ello.

38 Me gusta

¡Gracias, Robin! Este enfoque es muy importante para nosotros, por supuesto.

Por favor, avísanos si deseas que probemos alguna rama.

PD: Solo puedo imaginar la cantidad de trabajo que implicará esta migración, así que lo agradecemos mucho.

13 Me gusta

¿También planean hacer que los complementos de Discourse sean eventualmente complementos de Rails? ¡Eso sería genial! :smiley: Hay tantos generadores que Rails proporciona de forma predeterminada para complementos. Además, Discourse es la aplicación Rails de código abierto más grande, así que quizás sería bueno unir esfuerzos.

Ese es un pedido diferente y mucho más complicado que no debería asociarse con este trabajo.

7 Me gusta

Vamos a comenzar a fusionar algunos cambios importantes de validación de plantillas. Por lo general, deberían funcionar sin problemas, pero se esperan algunas regresiones. Haremos todo lo posible para solucionarlas rápidamente, así que por favor reporta cualquier cosa inusual, como elementos de la interfaz de usuario que no se actualicen cuando deberían.

7 Me gusta

Hoy fusioné un commit grande que cambia el nombre de todos los archivos .js.es6 en la carpeta app/assets/javascripts/discourse a .js. Este es un paso hacia la adopción del estándar de nomenclatura de archivos de Ember CLI.

Lo siguiente es el soporte para plugins en la transpilación de .js y la deprecación de .es6.

13 Me gusta

Hola @eviltrout

Acabo de encontrar esto. ¿Cómo va el trabajo en esto? :slight_smile:

2 Me gusta

Muy bien. @eviltrout acaba de fusionar este commit hace unos días:

Este es un hito enorme en este sentido.

10 Me gusta

Encantador. Estoy bastante emocionado por esto. A @angus y @merefield también les encantaría. :heart:

7 Me gusta

¡Sí, puedes ejecutar Ember CLI en modo de desarrollo ahora mismo! Probablemente publicaré más sobre ello en breve, una vez que sea un poco menos tosco de usar.

11 Me gusta

¡Estoy emocionado por eso :slight_smile:

4 Me gusta