Préparation à la mise à niveau de Discourse vers Ember 5

Discourse va bientôt mettre à jour sa version du framework Javascript Ember de la version 3 à la version 5. La grande majorité du travail de préparation est terminée, et de nombreux sites fonctionnent déjà sous Ember 5 (y compris Meta !). :ember:

Cette mise à niveau est disponible dès maintenant derrière un indicateur de fonctionnalité ! C’est le réglage par défaut pour les installations Discourse auto-hébergées à partir du 10 janvier. Initialement, le support d’Ember 3 restera disponible via un indicateur, mais sera supprimé au cours du premier trimestre 2024.

Sur notre hébergement géré discourse.org, nous procéderons à un déploiement progressif de l’indicateur au cours des deux prochains mois :

:discourse: Niveau d’hébergement discourse.org Date de mise à niveau
Basic 2023-12-07 :white_check_mark:
Free 2023-12-12 :white_check_mark:
Pro 2024-01-15 :white_check_mark:
Business 2024-01-22 :white_check_mark:
Enterprise (au cas par cas)

:eyes: Qu’est-ce que cela signifie pour moi et mon site ?

Si vous utilisez Discourse sans thèmes, plugins ou composants de thème supplémentaires… vous êtes prêt ! Pas besoin de lever le petit doigt, ni de vous en soucier.

De même, si vous utilisez uniquement des thèmes/plugins officiels, nous avons ce qu’il vous faut ! Nous nous assurerons que tous nos thèmes, composants de thème et plugins officiels sont préparés et prêts pour la mise à niveau.

Pour ceux qui utilisent des personnalisations tierces, leurs développeurs devraient apporter les modifications nécessaires pour que vous puissiez continuer à les utiliser de manière transparente tout au long de cette transition.

Cependant, si vous avez des thèmes, des composants de thème ou des plugins personnalisés que vous avez créés ou commandés pour vos sites, alors ce message est pour vous ! Nous vous expliquerons comment identifier et résoudre les problèmes avant la mise à niveau.

:face_with_monocle: Identification des problèmes

Tous les problèmes de mise à niveau liés à Ember 5 peuvent être identifiés avant la mise à niveau en vérifiant l’utilisation des API obsolètes. Dans les versions récentes de Discourse (à partir de Discourse 3.2.0.beta4-dev), ces dépréciations critiques déclencheront une bannière d’avertissement pour les administrateurs :

Vous pouvez trouver plus d’informations sur les dépréciations déclenchées dans la console du développeur du navigateur. Il est généralement conseillé de résoudre toutes les dépréciations que vous voyez. Mais pour cette mise à niveau de version Ember, les points clés à résoudre sont :

  • discourse.modal-controllers (voir ce sujet pour plus d’informations)

  • toutes les dépréciations Ember (c’est-à-dire celles dont les identifiants ne sont pas -discourse.)

Lors de l’impression des dépréciations dans la console, Discourse tente d’identifier le thème/plugin pertinent.

Pour les développeurs et les fournisseurs d’hébergement, nous avons mis à disposition quelques outils pour identifier les dépréciations en masse :

  • Lors de l’exécution des tests QUnit, un rapport est imprimé à la fin avec une liste de toutes les dépréciations non résolues. Dans GitHub actions, une version markdown de ceci est ajoutée au résumé du workflow.

  • Pour les fournisseurs d’hébergement, nous avons le plugin discourse-deprecation-collector qui incrémente les compteurs prometheus chaque fois que des dépréciations sont rencontrées en production.

:technologist: Résolution des dépréciations

En général, le message de la console inclura une description du problème et les étapes nécessaires pour le résoudre. Dans certains cas, ils renverront vers des ressources externes comme le site dépréciations Ember ou Discourse Meta.

Si quelque chose n’est pas clair, n’hésitez pas à poster ci-dessous ou dans un sujet Dev dédié et nous ferons de notre mieux pour vous aider.

:rocket: Tests sur Ember 5

Pour tester sur Ember 5 dans un environnement de développement local, vous pouvez démarrer notre helper ember-cli avec la variable d’environnement EMBER_VERSION. Par exemple :

EMBER_VERSION=5 bin/ember-cli -u

Pour confirmer que tout fonctionne comme prévu, vérifiez la version Ember que Discourse affiche dans la console du navigateur.

En production, vous pouvez obtenir le même résultat en ajoutant EMBER_VERSION: 5 à la section env: de votre fichier app.yml.

42 « J'aime »

Félicitations l’équipe, cela a dû représenter ÉNORMÉMENT de travail ! :sweat_smile:

11 « J'aime »

David, je suppose que c’est entièrement réversible avec une réversion de cet attribut et une reconstruction ?

5 « J'aime »

Oui, totalement réversible :+1:

3 « J'aime »

Excellent travail, les gars. Comment trouver une liste de thèmes/composants officiellement pris en charge. J’ai pu constater que 3 ou 4 de mes composants de plugin sont officiels. (La balise « officiel » est indiquée dans le sujet)

Mais pour le 4ème, je n’ai trouvé que cette URL : GitHub - discourse/discourse-full-width-component: Make Discourse occupy the full browser width

Comment savoir s’il est officiel / ne causera pas de problème lors de la mise à niveau ?

Edit : il semble que je puisse filtrer ici : Topics tagged official

Ensuite, je peux rechercher un thème spécifique dans la liste. J’avais précédemment essayé de rechercher dans le coin supérieur droit des forums.

Lorsque je recherche dans la liste des sujets, il n’est pas répertorié, mais je vois du personnel comme contributeurs GitHub :

4 « J'aime »

À titre indicatif, si l’URL commence par github.com/discourse/, nous nous en chargerons. Dans le cas du discourse-full-width-component, je ne vois aucune raison de s’inquiéter - il devrait fonctionner correctement sous Ember 5.

6 « J'aime »

Existe-t-il un moyen de savoir si un site hébergé par Discourse dont je suis administrateur fonctionne sous Ember 5 ?

J’ai jeté un coup d’œil sur la page d’administration et je n’ai vu aucune indication de ce genre. Le site dont je suis administrateur est

5 « J'aime »

À l’heure actuelle, Ember 5 fonctionne sur Meta et sur notre niveau d’hébergement « basique ».

Sur les versions récentes de Discourse, nous affichons les informations de version actuelles dans la console. Vous pouvez donc ouvrir la console des outils de développement et vérifier la première ligne :

10 « J'aime »

Vous avez accès aux outils de développement sur tous les sites Internet ! Sous Windows/Linux dans Chrome, vous pouvez appuyer sur la touche F12. Pour Mac, c’est dans… un menu.

8 « J'aime »

Merci.

Je pensais que cela signifiait la console Discourse à laquelle on accède si l’on installe le site à l’invite de commande du système d’exploitation.


Étapes

  1. Ouvrir le navigateur Internet (Chrome pour cet exemple)
  2. Naviguer vers le site Discourse (https://swi-prolog.discourse.group/ pour cet exemple)
  3. Appuyer sur F12
  4. Si l’onglet Console en haut n’est pas actif, alors sélectionner l’onglet Console.
  5. La première ligne doit indiquer la version d’Ember.

4 « J'aime »

Et si quelqu’un essaie de faire des choses sur iPad, alors la console peut être trouvée (Safari uniquement) via une application :

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

Oh, elle n’est plus disponible. Dommage.

5 « J'aime »

J’adore cet ajout. Excellent travail, David et l’équipe ModernJS. :rocket:

heh. vous pouvez exécuter Chrome sur MacOS et les outils de développement sont les mêmes. Ce sont iOS et les écrans tactiles qui rendent son utilisation difficile/presque impossible (par exemple : l’iPad en mode bureau a un outil d’inspecteur web mais ce n’est pas idéal).

5 « J'aime »

[citation=“Lilly, message:14, sujet:287211, nom d’utilisateur:Lilly”]
vous pouvez exécuter Chrome sur MacOS et les outils de développement sont les mêmes
[/citation]

En appuyant sur F12 ? Je pensais savoir que cela ne fonctionnait pas.

5 « J'aime »

optioncommandeJ

5 « J'aime »

Je ne vois pas en quoi c’est plus difficile à retenir que F12. Les deux sont pratiquement impossibles à découvrir. Et peut-être que regarder dans un menu comme je l’ai suggéré n’aiderait pas.

6 « J'aime »

option command J devrait être facile à retenir pour vous :rire:

5 « J'aime »

Mon choix est toujours [clic droit] [inspecter l’élément] - Je pense que c’est cohérent pour tous les navigateurs/systèmes d’exploitation.

6 « J'aime »

Exactement !

Oh. C’est facile et ça marche toujours. Bien. Et ça m’épargne une douzaine de clics puisque c’est si souvent ce que l’on veut faire. Bien sûr, il semble que j’aie détourné ce fil Announcements. Désolé.

7 « J'aime »

Je sais que cela va me coûter du temps de développement :grimacing: (nouvelle barre latérale, suppression des badges de catégorie… c’est assez fréquent - avoir un thème personnalisé coûte cher !).

Existe-t-il un moyen de passer à Ember 5 sur mon forum sans tout casser en production ? Je suis sur le Plan Business hébergé.

  • Merci pour les avertissements et les messages de dépréciation de toute façon. Mais en corrigeant la dépréciation, dois-je coder mon thème pour Ember 3 et Ember 5 ?
  • Avons-nous le choix de mettre à niveau ou non ? Ou êtes-vous le seul à décider ?

Une sorte d’environnement “préprod” ou “test” serait apprécié, je suppose.

6 « J'aime »

Salut Damien :wave:.

Discourse et Ember ne déprécient les choses qu’une fois qu’une alternative est disponible pour une utilisation immédiate. Donc, s’il y a des changements à faire, ils peuvent être effectués immédiatement et fonctionneront sous Ember 3.

C’est l’approche que nous adoptons dans le cœur de Discourse et dans tous nos thèmes et plugins officiels. Nous ne créons pas de code séparé pour Ember 3 / Ember 5.

Je crains que ce ne soit pas facultatif. Maintenir les dépendances du cœur de Discourse à jour est essentiel pour nous en termes de sécurité, de performances et de fonctionnalités. Les fonctionnalités qu’Ember 5 fournira deviendront essentielles pour les futures améliorations de Discourse lui-même.

C’est une bonne question ! Nous travaillons actuellement beaucoup pour rendre cette transition aussi fluide que possible et nous travaillons sur diverses améliorations des outils.

L’une de ces améliorations a été mise en œuvre il y a quelques heures et devrait vous aider ici.

Si vous visitez /safe-mode sur votre forum, il y a maintenant une case à cocher pour « Faire des dépréciations Javascript une erreur ».

Cela vous permettra de voir en toute sécurité comment votre site fonctionne avec toutes les dépréciations en attente converties en erreurs.

Techniquement, ce n’est pas tout à fait la même chose que « Tester Ember 5 sur le forum ». Mais c’est un bon moyen de simuler les prochains changements majeurs sans avoir besoin d’un environnement de staging entièrement séparé.

8 « J'aime »