Preparándose para la actualización de Discourse a Ember 5

Discourse pronto actualizará nuestra versión del framework Javascript Ember de la versión 3 a la versión 5. La gran mayoría del trabajo de preparación está hecho, y muchos sitios ya están ejecutándose en Ember 5 (¡incluido Meta!). :ember:

¡Esta actualización está disponible detrás de una bandera de funcionalidad ahora mismo! Esta es la opción predeterminada para las instalaciones de Discourse autoalojadas a partir del 10 de enero. Inicialmente, el soporte de Ember 3 seguirá disponible a través de una bandera, pero se eliminará dentro del primer trimestre de 2024.

En nuestro hosting gestionado discourse.org, realizaremos un despliegue gradual de la bandera durante los próximos dos meses:

:discourse: Nivel de hosting de discourse.org Fecha de actualización
Básico 2023-12-07 :white_check_mark:
Gratis 2023-12-12 :white_check_mark:
Pro 2024-01-15 :white_check_mark:
Negocios 2024-01-22 :white_check_mark:
Empresarial (caso por caso)

:eyes: ¿Qué significa esto para mí y mi sitio?

Si estás ejecutando Discourse sin temas, plugins o componentes de tema adicionales… ¡estás listo! No necesitas hacer nada ni preocuparte por esto en absoluto.

Igualmente, si solo usas temas/plugins oficiales, ¡te tenemos cubierto! Nos aseguraremos de que todos nuestros temas, componentes de tema y plugins oficiales estén preparados y listos para la actualización.

Para aquellos que utilizan personalizaciones de terceros, sus desarrolladores deberían estar realizando los cambios necesarios para que puedas seguir utilizándolos sin problemas durante esta transición.

Sin embargo, si tienes algún tema, componente de tema o plugin personalizado que hayas creado o encargado para tus sitios, ¡esta publicación es para ti! Repasaremos cómo identificar y resolver cualquier problema antes de la actualización.

:face_with_monocle: Identificación de problemas

Todos los problemas de actualización relacionados con ember-5 se pueden identificar antes de la actualización comprobando el uso de APIs obsoletas. En versiones recientes de Discourse (a partir de Discourse 3.2.0.beta4-dev), estas deprecaciones críticas activarán una pancarta de advertencia para los administradores:

Puedes encontrar más información sobre las deprecaciones activadas en la consola de desarrollador del navegador. Generalmente, es una buena práctica resolver todas las deprecaciones que veas. Pero para esta actualización de versión de Ember, las clave a resolver son:

  • discourse.modal-controllers (ver este tema para más información)

  • todas las deprecaciones de Ember (es decir, aquellas con identificadores que no sean -discourse.)

Al imprimir las deprecaciones en la consola, Discourse intenta identificar el tema/plugin relevante.

Para desarrolladores y proveedores de hosting, hemos puesto a disposición un par de herramientas para identificar deprecaciones en masa:

  • Al ejecutar pruebas QUnit, se imprime un informe al final con una lista de todas las deprecaciones no resueltas. En GitHub actions, se agrega una versión en markdown de esto al resumen del flujo de trabajo.

  • Para los proveedores de hosting, tenemos el plugin discourse-deprecation-collector que incrementa los contadores de prometheus cada vez que se activan deprecaciones en producción.

:technologist: Resolución de deprecaciones

Generalmente, el mensaje de la consola incluirá una descripción del problema y los pasos necesarios para resolverlo. En algunos casos, enlazarán a recursos externos como el sitio de deprecaciones de Ember o Discourse Meta.

Si algo no está claro, no dudes en publicar a continuación o en un tema dedicado de Dev y haremos todo lo posible para ayudarte.

:rocket: Pruebas en Ember 5

Para probar en Ember 5 en un entorno de desarrollo local, puedes iniciar nuestro ayudante ember-cli con la variable de entorno EMBER_VERSION. Por ejemplo:

EMBER_VERSION=5 bin/ember-cli -u

Para confirmar que las cosas funcionan como se esperaba, verifica la versión de Ember que Discourse imprime en la consola del navegador.

En producción, puedes lograr lo mismo agregando EMBER_VERSION: 5 a la sección env: de tu archivo app.yml.

42 Me gusta

¡Felicidades equipo, eso debió haber sido MUCHO trabajo! :sweat_smile:

11 Me gusta

David, ¿supongo que esto es completamente reversible con una reversión de este atributo y una reconstrucción?

5 Me gusta

Sí, totalmente reversible :+1:

3 Me gusta

Buen trabajo, chicos. ¿Cómo encuentro una lista de temas/componentes oficialmente compatibles? Pude encontrar que 3 o 4 de mis componentes de plugin son oficiales. (La etiqueta “oficial” aparece en el tema)

Pero para el cuarto, solo pude encontrar esta URL: GitHub - discourse/discourse-full-width-component: Make Discourse occupy the full browser width

¿Cómo puedo saber si es oficial / no se romperá con la actualización?

Editar: parece que puedo filtrar aquí: Topics tagged official

Luego busco un tema específico en la lista. Anteriormente intenté buscar en la esquina superior derecha de los foros.

Cuando busco en la lista de temas, no aparece, pero sí veo al personal como colaboradores de GitHub:

4 Me gusta

Como guía muy general, si la URL comienza con github.com/discourse/, nos encargaremos de ello. En el caso de discourse-full-width-component, no veo ninguna causa de preocupación; debería funcionar bien con Ember 5.

6 Me gusta

¿Hay alguna forma de saber si un sitio alojado en Discourse del que soy administrador se ejecuta en Ember 5?

Eché un vistazo a la página de administración y no vi ninguna indicación de ello. El sitio del que soy administrador es

5 Me gusta

A partir de ahora, Ember 5 se ejecuta en Meta y en nuestro nivel básico de alojamiento.

En las versiones recientes de Discourse, imprimimos la información de la versión actual en la consola. Así que puedes abrir la consola de herramientas de desarrollador y comprobar la primera línea:

10 Me gusta

¡Tienes acceso a las herramientas de desarrollo en todos los sitios de Internet! En Windows-Linux en Chrome, puedes presionar la tecla F12. Para Mac, está en . . . algún menú.

8 Me gusta

Gracias.

Pensé que se refería a la consola de Discourse a la que se accede si se instala el sitio en el símbolo del sistema del sistema operativo.


Pasos

  1. Abra el navegador de Internet (Chrome para este ejemplo)
  2. Navegue al sitio de Discourse (https://swi-prolog.discourse.group/ para este ejemplo)
  3. Presione F12
  4. Si la pestaña Console en la parte superior no está activa, seleccione la pestaña Console.
  5. La primera línea debe indicar la versión de Ember.

4 Me gusta

Y si alguien intenta hacer cosas en el iPad, entonces la consola se puede encontrar (solo en Safari) a través de una aplicación:

https://apps.apple.com/app/id1064318327

Oh, ya no está disponible. Qué lástima.

5 Me gusta

Me encanta esta adición. Gran trabajo en esto, David y el equipo de ModernJS. :rocket:

je. puedes ejecutar Chrome en MacOS y las herramientas de desarrollador son las mismas. Es iOS y las pantallas táctiles lo que hace que sea difícil/casi imposible de usar (es decir, el iPad en modo de escritorio tiene una herramienta de inspección web pero no es ideal).

5 Me gusta

¿Presionando F12? Pensé que sabía que eso no funcionaba.

5 Me gusta

opcióncomandoJ

5 Me gusta

No sé por qué eso es más difícil de recordar que F12. Ambos son prácticamente indescifrables. Y tal vez mirar en un menú, como sugerí, no ayudaría.

6 Me gusta

option command J debería ser fácil de recordar para ti :laughing:

5 Me gusta

Mi opción preferida es siempre [clic derecho] [inspeccionar elemento] - Creo que eso es consistente para todos los navegadores/sistemas operativos.

6 Me gusta

¡Correcto!

Oh. Eso es fácil y siempre funciona. Bien. Y me ahorra como una docena de clics, ya que eso es lo que a menudo quieres hacer. Por supuesto, parece que he secuestrado este Announcements. Lo siento.

7 Me gusta

Sé que esto me va a costar algo de tiempo de desarrollo :grimacing: (nueva barra lateral, eliminación de insignias de categoría… ¡es bastante frecuente que tener un tema personalizado sea costoso!).

¿Hay alguna forma de actualizar a Ember 5 en mi foro sin romper todo en producción? Estoy en el Plan Business alojado.

  • Gracias por el aviso y los mensajes de deprecación de todos modos. Pero al solucionar la deprecación, ¿tengo que codificar mi tema tanto para Ember 3 como para Ember 5?
  • ¿Tenemos la opción de actualizar o no? ¿O sois los únicos que deciden?

Supongo que sería agradable algún tipo de entorno de “preproducción” o “pruebas”.

6 Me gusta

Hola Damien :wave:.

Discourse y Ember solo deprecian cosas una vez que hay una alternativa disponible para su uso inmediato. Por lo tanto, si hay algún cambio que deba realizar, se puede hacer de inmediato y funcionará con Ember 3.

Este es el enfoque que estamos adoptando en el núcleo de Discourse y en todos nuestros temas y plugins oficiales. No estamos creando código separado para Ember 3 / Ember 5.

Me temo que no es opcional. Mantener las dependencias del núcleo de Discourse actualizadas es esencial para nosotros en términos de seguridad, rendimiento y características. Las características que proporciona Ember 5 se volverán esenciales para futuras mejoras en Discourse.

¡Esa es una buena pregunta! Estamos dedicando mucho esfuerzo en este momento a hacer que esta transición sea lo más fluida posible y estamos trabajando en varias mejoras de herramientas.

Una de esas mejoras se implementó hace unas horas y debería ayudarte aquí.

Si visitas /safe-mode en tu foro, ahora hay una casilla de verificación para “Hacer que las deprecaciones de Javascript generen un error”.

Eso te permitirá ver de forma segura cómo funciona tu sitio con todas las deprecaciones pendientes convertidas en errores.

Técnicamente, eso no es exactamente lo mismo que “Probar Ember 5 en el foro”. Pero es una buena manera de simular los próximos cambios disruptivos sin necesidad de un entorno de staging completamente separado.

8 Me gusta