Prepararsi all'aggiornamento di Discourse a Ember 5

Discourse aggiornerà presto la nostra versione del framework Javascript Ember dalla versione 3 alla versione 5. La stragrande maggioranza del lavoro di preparazione è completata e molti siti stanno già funzionando su Ember 5 (inclusa Meta!). :ember:

Questo aggiornamento è disponibile dietro un feature flag in questo momento! Questo è il valore predefinito per le installazioni Discourse self-hosted a partire dal 10 gennaio. Inizialmente, il supporto per Ember 3 rimarrà disponibile tramite un flag, ma verrà rimosso entro il primo trimestre del 2024.

Sul nostro hosting gestito discourse.org, effettueremo un rollout graduale del flag nei prossimi due mesi:

:discourse: discourse.org hosting tier Data di aggiornamento
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 (su base individuale)

:eyes: Cosa significa questo per me e per il mio sito?

Se stai eseguendo Discourse senza temi, plugin o componenti tema aggiuntivi… sei a posto! Non c’è bisogno di fare nulla o preoccuparsi di questo.

Allo stesso modo, se utilizzi solo temi/plugin ufficiali, ti abbiamo coperto! Ci assicureremo che tutti i nostri temi, componenti tema e plugin ufficiali siano preparati e pronti per l’aggiornamento.

Per coloro che utilizzano personalizzazioni di terze parti, i loro sviluppatori dovrebbero apportare le modifiche necessarie in modo che tu possa continuare a utilizzarli senza problemi durante questa transizione.

Tuttavia, se hai temi, componenti tema o plugin personalizzati che hai creato o commissionato per i tuoi siti, allora questo post è per te! Analizzeremo come identificare e risolvere eventuali problemi prima dell’aggiornamento.

:face_with_monocle: Identificazione dei problemi

Tutti i problemi di aggiornamento relativi a ember-5 possono essere identificati prima dell’aggiornamento controllando l’uso di API deprecate. Nelle versioni recenti di Discourse (a partire da Discourse 3.2.0.beta4-dev), queste deprecazioni critiche attiveranno un banner di avviso per gli amministratori:

Puoi trovare maggiori informazioni sulle deprecazioni attivate nella console per sviluppatori del browser. È generalmente buona norma risolvere tutte le deprecazioni che vedi. Ma per questo aggiornamento della versione Ember, quelle chiave da risolvere sono:

Quando stampa le deprecazioni nella console, Discourse tenta di identificare il tema/plugin pertinente.

Per sviluppatori e fornitori di hosting, abbiamo reso disponibili un paio di strumenti per identificare le deprecazioni in blocco:

  • Eseguendo i test QUnit, alla fine viene stampato un report con un elenco di tutte le deprecazioni irrisolte. Nelle azioni di GitHub, una versione markdown di questo viene aggiunta alla pagina di riepilogo del workflow.

  • Per i fornitori di hosting, abbiamo il plugin discourse-deprecation-collector che incrementa i contatori prometheus ogni volta che le deprecazioni vengono raggiunte in produzione.

:technologist: Risoluzione delle deprecazioni

In generale, il messaggio della console includerà una descrizione del problema e i passaggi necessari per risolverlo. In alcuni casi, rimanderanno a risorse esterne come il sito Ember deprecations o Discourse Meta.

Se qualcosa non è chiaro, non esitare a pubblicare qui sotto o in un topic Dev dedicato e faremo del nostro meglio per aiutarti.

:rocket: Test su Ember 5

Per testare su Ember 5 in un ambiente di sviluppo locale, puoi avviare il nostro helper ember-cli con la variabile d’ambiente EMBER_VERSION. Ad esempio:

EMBER_VERSION=5 bin/ember-cli -u

Per confermare che le cose funzionino come previsto, controlla la versione di Ember che Discourse stampa nella console del browser.

In produzione, puoi ottenere lo stesso risultato aggiungendo EMBER_VERSION: 5 alla sezione env: del tuo file app.yml.

42 Mi Piace

Congratulazioni team, dev’essere stato un sacco di lavoro! :sweat_smile:

11 Mi Piace

David, presumo che questo sia completamente reversibile con una reversione di questo attributo e una ricostruzione?

5 Mi Piace

Sì, totalmente reversibile :+1:

3 Mi Piace

Bel lavoro ragazzi. Come trovo un elenco di temi/componenti ufficialmente supportati. Sono riuscito a scoprire che 3 o 4 dei miei componenti plug-in sono ufficiali. (Il tag “ufficiale” è elencato nell’argomento)

Ma per il quarto ho potuto trovare solo questo URL: GitHub - discourse/discourse-full-width-component: Make Discourse occupy the full browser width

Come posso dire se è ufficiale / non si romperà con l’aggiornamento?

Modifica: sembra che possa filtrare qui: Topics tagged official

Quindi cerca un tema specifico nell’elenco. In precedenza ho provato a cercare in alto a destra nei forum.

Quando cerco nell’elenco degli argomenti, non è elencato, ma vedo lo staff come contributori di GitHub:

4 Mi Piace

Come guida molto approssimativa, se l’URL inizia con github.com/discourse/, ce ne occuperemo noi. Nel caso del discourse-full-width-component, non vedo alcun motivo di preoccupazione: dovrebbe funzionare bene con Ember 5.

6 Mi Piace

C’è un modo per sapere se un sito ospitato su Discourse di cui si è amministratori sta eseguendo Ember 5?

Ho dato un’occhiata alla pagina di amministrazione e non ho visto alcuna indicazione in tal senso. Il sito di cui sono amministratore è

5 Mi Piace

Al momento, Ember 5 è in esecuzione su Meta e sul nostro livello di hosting “basic”.

Nelle versioni recenti di Discourse, stampiamo le informazioni sulla versione corrente sulla console. Quindi puoi aprire la console degli strumenti per sviluppatori e controllare la prima riga:

10 Mi Piace

Hai accesso agli strumenti per sviluppatori su ogni sito web di Internet! Su Windows-Linux in Chrome, puoi premere il tasto F12. Per Mac, si trova in… qualche menu.

8 Mi Piace

Grazie.

Pensavo si riferisse alla console di Discourse a cui si accede installando il sito dal prompt dei comandi del sistema operativo.


Passaggi

  1. Apri il browser Internet (Chrome per questo esempio)
  2. Naviga al sito di Discourse (https://swi-prolog.discourse.group/ per questo esempio)
  3. Premi F12
  4. Se la scheda Console in alto non è attiva, seleziona la scheda Console.
  5. La prima riga dovrebbe indicare la versione di Ember.

4 Mi Piace

E se qualcuno sta cercando di fare cose su iPad, allora la console può essere trovata (solo Safari) tramite un’app:

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

oh, non è più disponibile. Peccato.

5 Mi Piace

Adoro questa aggiunta. Ottimo lavoro, David e ModernJS Team. :rocket:

heh. puoi eseguire Chrome su MacOS e gli strumenti per sviluppatori sono gli stessi. Sono iOS e touchscreen che rendono difficile/quasi impossibile usarlo (ad esempio: iPad in modalità desktop ha una cosa per l’ispettore web ma non è ideale).

5 Mi Piace

[citazione=“Lilly, post:14, topic:287211, username:Lilly”]
puedes ejecutar Chrome en MacOS y las herramientas de desarrollo son las mismas
[/citazione]

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

5 Mi Piace

opzionecomandoJ

5 Mi Piace

Non so perché sia più difficile da ricordare di F12. Entrambi sono praticamente introvabili, però. E forse guardare in un menu, come ho suggerito, non aiuterebbe.

6 Mi Piace

option command J dovrebbe essere facile da ricordare per te :laughing:

5 Mi Piace

Il mio punto di riferimento è sempre [tasto destro] [ispeziona elemento] - penso che sia coerente per ogni browser/sistema operativo

6 Mi Piace

Giusto!

Oh. È facile e funziona sempre. Bene. E mi fa risparmiare una dozzina di clic dato che è quello che si vuole fare così spesso. Certo, sembra che abbia dirottato questo Announcements. Scusa.

7 Mi Piace

So che questo mi costerà un po’ di tempo di sviluppo :grimacing: (nuova barra laterale, rimozione dei badge di categoria… è abbastanza frequente: avere un tema personalizzato è costoso!).

C’è un modo per aggiornare il mio forum a Ember 5 senza compromettere tutto in produzione? Sono sul Piano Business ospitato.

  • Grazie per l’avviso e i messaggi di deprecazione comunque. Ma quando correggo la deprecazione devo codificare il mio tema sia per Ember 3 che per Ember 5?
  • Abbiamo una scelta di aggiornare o meno? O siete voi gli unici a decidere?

Una sorta di ambiente “pre-produzione” o “di test” sarebbe gradito, immagino.

6 Mi Piace

Ciao Damien :wave:.

Discourse ed Ember deprecano le cose solo quando è disponibile un’alternativa per l’uso immediato. Quindi, se ci sono modifiche da apportare, queste possono essere fatte subito e funzioneranno con Ember 3.

Questo è l’approccio che stiamo adottando nel core di Discourse e in tutti i nostri temi e plugin ufficiali. Non stiamo creando codice separato per Ember 3 / Ember 5.

Temo che non sia facoltativo. Mantenere aggiornate le dipendenze del core di Discourse è essenziale per noi in termini di sicurezza, prestazioni e funzionalità. Le funzionalità che Ember 5 fornirà diventeranno essenziali per i futuri miglioramenti di Discourse stesso.

Questa è una buona domanda! Stiamo lavorando molto al momento per rendere questa transizione il più agevole possibile e stiamo lavorando a vari miglioramenti degli strumenti.

Uno di questi miglioramenti è stato implementato poche ore fa e dovrebbe aiutarti in questo.

Se visiti /safe-mode sul tuo forum, ora c’è una casella di controllo per “Fai in modo che le deprecazioni Javascript generino un errore”.

Ciò ti consentirà di vedere in modo sicuro come funziona il tuo sito con tutte le deprecazioni in sospeso convertite in errori.

Tecnicamente non è esattamente la stessa cosa di “Testare Ember 5 sul forum”. Ma è un buon modo per simulare le imminenti modifiche che rompono la compatibilità senza la necessità di un ambiente di staging completamente separato.

8 Mi Piace