Vorbereitung auf das Upgrade von Discourse auf Ember 5

Discourse wird bald unsere Version des Ember Javascript Frameworks von Version 3 auf Version 5 aktualisieren. Die überwiegende Mehrheit der Vorbereitungsarbeiten ist erledigt, und viele Seiten laufen bereits auf Ember 5 (einschließlich Meta!). :ember:

Dieses Upgrade ist ab sofort hinter einem Feature-Flag verfügbar! Dies ist der Standard für selbst gehostete Discourse-Installationen ab dem 10. Januar. Anfangs wird die Ember 3-Unterstützung weiterhin über ein Flag verfügbar sein, aber sie wird im ersten Quartal 2024 entfernt.

Auf unserem verwalteten discourse.org-Hosting werden wir in den nächsten Monaten ein gestaffeltes Rollout des Flags durchführen:

:discourse: discourse.org Hosting-Stufe Upgrade-Datum
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 (Einzelfallbasis)

:eyes: Was bedeutet das für mich und meine Seite?

Wenn Sie Discourse ohne zusätzliche Themes, Plugins oder Theme-Komponenten betreiben… sind Sie bestens vorbereitet! Sie müssen nichts weiter tun oder sich darum kümmern.

Ebenso, wenn Sie nur offizielle Themes/Plugins verwenden, sind wir für Sie da! Wir werden sicherstellen, dass alle unsere offiziellen Themes, Theme-Komponenten und Plugins für das Upgrade vorbereitet sind.

Für diejenigen, die Drittanbieter-Anpassungen verwenden, sollten deren Entwickler die notwendigen Änderungen vornehmen, damit Sie diese während des Übergangs nahtlos weiter nutzen können.

Wenn Sie jedoch benutzerdefinierte Themes, Theme-Komponenten oder Plugins haben, die Sie für Ihre Websites erstellt oder in Auftrag gegeben haben, dann ist dieser Beitrag für Sie! Wir werden durchgehen, wie Sie Probleme vor dem Upgrade identifizieren und beheben können.

:face_with_monocle: Probleme identifizieren

Alle Ember-5-bezogenen Upgrade-Probleme können vor dem Upgrade identifiziert werden, indem Sie nach der Verwendung veralteter APIs suchen. In neueren Versionen von Discourse (ab Discourse 3.2.0.beta4-dev) lösen diese kritischen Deprecations ein Warnbanner für Administratoren aus:

Weitere Informationen zu ausgelösten Deprecations finden Sie in der Entwicklerkonsole Ihres Browsers. Es ist generell eine gute Praxis, alle angezeigten Deprecations zu beheben. Aber für dieses Ember-Versionsupgrade sind die wichtigsten, die behoben werden müssen:

Beim Drucken von Deprecations in die Konsole versucht Discourse, das relevante Theme/Plugin zu identifizieren.

Für Entwickler und Hosting-Anbieter haben wir ein paar Tools zur Verfügung gestellt, um Deprecations in großen Mengen zu identifizieren:

  • Bei der Ausführung von QUnit-Tests wird am Ende ein Bericht mit einer Liste aller ungelösten Deprecations ausgegeben. In GitHub Actions wird eine Markdown-Version davon zur Workflow-Zusammenfassungsseite hinzugefügt.

  • Für Hosting-Anbieter haben wir das Plugin discourse-deprecation-collector, das Prometheus-Zähler inkrementiert, wann immer Deprecations in der Produktion auftreten.

:technologist: Deprecations beheben

Im Allgemeinen enthält die Konsolenmeldung eine Beschreibung des Problems und die Schritte zur Behebung. In einigen Fällen werden Links zu externen Ressourcen wie der Ember Deprecations Website oder Discourse Meta angezeigt.

Wenn etwas unklar ist, können Sie gerne unten oder in einem speziellen #dev-Thema posten, und wir werden unser Bestes tun, um Ihnen zu helfen.

:rocket: Testen auf Ember 5

Um Dinge auf Ember 5 in einer lokalen Entwicklungsumgebung zu testen, können Sie unseren Ember-CLI-Helfer mit der Umgebungsvariable EMBER_VERSION starten. Zum Beispiel:

EMBER_VERSION=5 bin/ember-cli -u

Um zu bestätigen, dass alles wie erwartet funktioniert, überprüfen Sie die Ember-Version, die Discourse in der Browserkonsole ausgibt.

In der Produktion können Sie dasselbe erreichen, indem Sie EMBER_VERSION: 5 zum env:-Abschnitt Ihrer app.yml-Datei hinzufügen.

42 „Gefällt mir“

Herzlichen Glückwunsch, Team, das muss VIEL Arbeit gewesen sein! :sweat_smile:

11 „Gefällt mir“

David, ich gehe davon aus, dass dies durch eine Rückgängigmachung dieses Attributs und einen Neuaufbau vollständig rückgängig gemacht werden kann?

5 „Gefällt mir“

Ja, total umkehrbar :+1:

3 „Gefällt mir“

Gute Arbeit, Leute. Wo finde ich eine Liste der offiziell unterstützten Themes/Komponenten? Ich konnte feststellen, dass 3 oder 4 meiner Plugin-Komponenten offiziell sind. (Das Tag „official“ ist im Thema aufgeführt)

Aber für die 4. konnte ich nur diese URL finden: GitHub - discourse/discourse-full-width-component: Make Discourse occupy the full browser width

Woran kann ich erkennen, ob es offiziell ist / nicht beim Upgrade kaputt geht?

Bearbeiten: Es sieht so aus, als könnte ich hier filtern: Topics tagged official

Dann suche ich in der Liste nach einem bestimmten Theme. Ich habe zuvor versucht, oben rechts im Forum zu suchen.

Wenn ich die Themenliste durchsuche, wird sie nicht angezeigt, aber ich sehe Mitarbeiter als GitHub-Beitragende:

4 „Gefällt mir“

Als grobe Richtlinie gilt: Wenn die URL mit github.com/discourse/ beginnt, kümmern wir uns darum. Im Fall der discourse-full-width-component sehe ich keinen Grund zur Sorge – sie sollte unter Ember 5 problemlos funktionieren.

6 „Gefällt mir“

Gibt es eine Möglichkeit zu erfahren, ob eine Discourse-gehostete Seite, auf der man Administrator ist, Ember 5 verwendet?

Ich habe auf der Admin-Seite nachgesehen und keine Angabe dazu gesehen. Die Seite, auf der ich Administrator bin, ist

5 „Gefällt mir“

Derzeit läuft Ember 5 auf Meta und auf unserer Hosting-Stufe „Basic“.

Bei neueren Versionen von Discourse geben wir die aktuellen Versionsinformationen in der Konsole aus. Sie können also die Entwicklerkonsole öffnen und die erste Zeile überprüfen:

10 „Gefällt mir“

Sie haben DevTools-Zugriff auf jeder Website im Internet! Unter Windows/Linux in Chrome können Sie die F12-Taste drücken. Für Mac befindet es sich in … einem Menü.

8 „Gefällt mir“

Danke.

Ich dachte, es sei die Discourse-Konsole, auf die man zugreifen kann, wenn man die Website über die Eingabeaufforderung des Betriebssystems installiert.


Schritte

  1. Internetbrowser öffnen (Chrome als Beispiel)
  2. Zur Discourse-Website navigieren (https://swi-prolog.discourse.group/ als Beispiel)
  3. Taste F12 drücken
  4. Wenn der Tab Console oben nicht aktiv ist, wählen Sie den Tab Console aus.
  5. In der ersten Zeile sollte die Ember-Version vermerkt sein.

4 „Gefällt mir“

Und wenn jemand versucht, Dinge auf dem iPad zu tun, dann kann die Konsole (nur Safari) über eine App gefunden werden:

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

Oh, die ist nicht mehr verfügbar. Schade.

5 „Gefällt mir“

Diese Ergänzung gefällt mir sehr gut. Großartige Arbeit, David und das ModernJS-Team. :rocket:

Heh. Sie können Chrome auf MacOS ausführen und die Entwicklertools sind dieselben. Es sind iOS und Touchscreens, die die Verwendung schwierig/nahezu unmöglich machen (d. h. das iPad im Desktop-Modus hat eine Web-Inspector-Funktion, aber sie ist nicht ideal).

5 „Gefällt mir“

Indem Sie F12 drücken? Ich dachte, ich wüsste, dass das nicht funktioniert.

5 „Gefällt mir“

OptionBefehlJ

5 „Gefällt mir“

Das ist doch nicht schwerer zu merken als F12. Beide sind aber ziemlich unauffindbar. Und vielleicht hilft es ja auch nicht, auf ein Menü zu schauen, wie ich vorgeschlagen habe.

6 „Gefällt mir“

Option-Befehl J sollte für Sie leicht zu merken sein :laughing:

5 „Gefällt mir“

Mein Favorit ist immer [Rechtsklick] [Element untersuchen] - Ich denke, das ist bei jedem Browser/Betriebssystem gleich.

6 „Gefällt mir“

Stimmt!

Oh. Das ist einfach und funktioniert immer. Gut. Und es spart mir ein Dutzend Klicks, da man das oft machen möchte. Natürlich habe ich hier die Announcements gekapert. Entschuldigung.

7 „Gefällt mir“

Ich weiß, dass mich das etwas Entwicklungszeit kosten wird :grimacing: (neues Sidebar, Entfernung von Kategorie-Badges… es ist ziemlich oft - ein benutzerdefiniertes Theme ist kostspielig!).

Gibt es eine Möglichkeit, Ember 5 auf meinem Forum zu verwenden, ohne alles in der Produktion zu zerstören? Ich bin auf dem gehosteten Business Plan.

  • Danke für den Hinweis und die Deprecations-Meldungen trotzdem. Aber wenn ich die Deprecation behebe, muss ich mein Theme sowohl für Ember 3 als auch für Ember 5 codieren?
  • Haben wir die Wahl, ob wir upgraden oder nicht? Oder entscheiden Sie allein?

Eine Art “Preprod”- oder “Test”-Umgebung wäre meiner Meinung nach schön.

6 „Gefällt mir“

Hallo Damien :wave:.

Discourse und Ember kennzeichnen Dinge nur dann als veraltet, wenn bereits eine Alternative zur sofortigen Verwendung verfügbar ist. Wenn also Änderungen vorgenommen werden müssen, können diese sofort vorgenommen werden und funktionieren unter Ember 3.

Dies ist der Ansatz, den wir in Discourse Core und in all unseren offiziellen Themes und Plugins verfolgen. Wir erstellen keinen separaten Code für Ember 3 / Ember 5.

Ich fürchte, das ist keine Option. Die Abhängigkeiten von Discourse Core auf dem neuesten Stand zu halten, ist für uns in Bezug auf Sicherheit, Leistung und Funktionen unerlässlich. Die Funktionen, die Ember 5 bietet, werden für zukünftige Verbesserungen von Discourse selbst unerlässlich sein.

Das ist eine gute Frage! Wir arbeiten derzeit intensiv daran, diesen Übergang so reibungslos wie möglich zu gestalten und verbessern verschiedene Werkzeuge.

Eine dieser Verbesserungen wurde vor einigen Stunden implementiert und sollte Ihnen hier helfen.

Wenn Sie /safe-mode auf Ihrem Forum besuchen, gibt es jetzt ein Kontrollkästchen für “Javascript-Veralterungen als Fehler auslösen”.

Damit können Sie sicher sehen, wie Ihre Website mit allen ausstehenden Veralterungen, die in Fehler umgewandelt wurden, funktioniert.

Technisch gesehen ist das nicht ganz dasselbe wie “Ember 5 auf dem Forum testen”. Aber es ist eine gute Möglichkeit, die bevorstehenden Breaking Changes zu simulieren, ohne eine vollständig separate Staging-Umgebung zu benötigen.

8 „Gefällt mir“