Nutmeg è l'ultima versione denominata Open edX. È uscito il 9 giugno 2022. In questo post daremo un'occhiata alle recenti modifiche all'esperienza dell'operatore e dello sviluppatore (ovvero, le persone che scrivono codice per Open edX o distribuiscono un'istanza Open edX). Ciò include alcune delle modifiche più recenti e più importanti di Tutor, un focus su eventi e filtri Open edX e alcune note critiche su deprecazioni, rimozioni e aggiornamenti di sicurezza.

Punti salienti del tutor

Le modifiche a Tutor dalla versione Maple sono dettagliate sul Registro delle modifiche del tutor – versioni da 13.0.1 a 14.0.0. Alcuni punti salienti sono:

Funzionalità e miglioramenti del tutor

  • Un nuovo e ampliato API del plug-in "Versione 1". basato sull'idea di "ganci", che sono punti di estensione che consentono ai plugin di reagire alle azioni del Tutor e di modificare il comportamento del Tutor utilizzando filtri di dati. La vecchia API del plug-in "Versione 0". è ancora supportato, sebbene gli sviluppatori di plugin siano incoraggiati a passare alla nuova API.
  • Istruzioni più complete durante l'aggiornamento
  • Più nuovi comandi:
    • `tutor k8s apply`: un'interfaccia diretta con `kubectl apply`
    • `tutor [dev|local|k8s] status`: fornisce lo stato delle informazioni di sistema
    • `tutor dev quickstart`: una variante di `tutor local quickstart` che riduce l'attrito nel processo di configurazione dello sviluppo
    • `tutor [local/dev] copyfrom`: copia i contenuti da un contenitore
    • -m/–mount`: un'opzione aggiunta a diversi comandi locali e dev per vincolare automaticamente le cartelle dall'host, sostituendo il vecchio comando `bindmount` e le opzioni `–volume`.
  • `tutor dev start SERVICE` ora consente il collegamento al servizio per il debug del punto di interruzione.
  • L'avvio di contenitori `dev` ora interrompe i contenitori `local` e viceversa.
  • Possibilità di installare pacchetti personalizzati ed eseguire comandi come root nell'immagine Docker
  • Possibilità di sovrascrivere `EDX_PLATFORM_REPOSITORY` e `NPM_REGISTRY` tramite `config.yml` invece che come argomenti di build Docker.
  • Possibilità di nascondere i corsi dalla pagina di ricerca del corso /LMS impostando la visibilità del corso su "nessuno" in Studio.
  • I voti persistenti sono ora abilitati per impostazione predefinita.

Deprecazioni del tutor e modifiche sostanziali

  • `tutor dev runserver` è deprecato a favore di `tutor dev start`.
  • `tutor k8s exec “ ”` (tra virgolette) è deprecato; invece usa `tutor k8s exec `. Questo è in linea con la sintassi di `tutor local exec `.
  • Eliminato il supporto per la variabile d'ambiente `TUTOR_EDX_PLATFORM_SETTINGS`. Ora si consiglia invece di creare un plug-in.
  • lms.env.json e cms.env.json ora sono `lms.env.yml` e cms.env.yml; gli sviluppatori di plugin devono riformattare più patch per utilizzare il formato YAML.

E più correzioni di bug e sicurezza del Tutor; vedi il Registro delle modifiche del tutor – versioni da 13.0.1 a 14.0.0 per ulteriori informazioni.

Apri eventi e filtri edX

Apri eventi e filtri edX aggiungi un nuovo modo di estendere il core senza dover pasticciare con gli interni di edx-platform (questo lavoro fa parte di OEP-50: Quadro di estensione dei ganci).

  • Open edX Events: questa versione standardizzata di Django Signals consente agli sviluppatori di estendere le funzionalità della piattaforma semplicemente ascoltando l'evento inviato al termine di un processo chiave, ad esempio dopo la registrazione, il login, la registrazione, ecc.
  • Filtri edX aperti: solo attraverso la configurazione, gli sviluppatori di estensioni possono impostare un elenco di funzioni da eseguire prima dell'avvio di un processo chiave, ad esempio prima della registrazione, login, registrazione, ecc.

Per ulteriori informazioni, leggi l'OEP, le documentazioneo guarda quello di Felipe Montoya Presentazione della conferenza aperta edX 2022 sullo sfondo, l'architettura e l'utilizzo di questo prodotto.

Importante comando di gestione da eseguire e configurazione Var da impostare

Un miglioramento delle prestazioni interne chiamato "sequenze di apprendimento" è stato attivato per alcune versioni, ma ora è sempre attivo per Nutmeg. Se hai dei corsi che non sono stati ripubblicati su Koa o versioni successive, esegui il comando simulate_publish cms django sui tuoi corsi prima dell'aggiornamento, per popolare i dati della sequenza di apprendimento.

La mancata impostazione del valore di configurazione CLOSEST_CLIENT_IP_FROM_HEADERS può comportare la limitazione della velocità del traffico legittimo o il mancato blocco degli attacchi di forza bruta, a seconda della configurazione del proxy.

Deprecazioni e traslochi

Le seguenti deprecazioni e rimozioni sono state effettuate dal rilascio di Maple:

  • Il repository edx-certificates è stato archiviato
  • Bok-choy (una piattaforma di test) è stato archiviato
  • La libreria django-ratelimit-backend è stata rimossa dalla piattaforma edx; il backend standard django-ratelimit è ora in uso. Questo ha l'effetto collaterale di rimuovere la finestra di accesso dell'amministratore di Django predefinita; gli utenti devono ora accedere prima tramite l'LMS.
  • L'accesso al corso "Old Mongo" è stato finalmente completamente rimosso. Ciò significa che i corsi che hanno chiavi come Org/Course/Run piuttosto che course-v1:Org+Course+run (visibile nell'URL di qualsiasi pagina del corso) non sono accessibili agli studenti.

Per ulteriori informazioni su questi, consultare il Deprecazioni e rimozioni sezione della pagina wiki Noce moscata.

Miglioramenti alla sicurezza

Ci sono due importanti miglioramenti della sicurezza da comprendere: un nuovo valore di configurazione (CLOSEST_CLIENT_IP_FROM_HEADERS) che deve essere impostato e le modifiche a SafeSessionMiddleware che richiedono attenzione prima dell'aggiornamento a Nutmeg.

  • CLOSEST_CLIENT_IP_FROM_HEADERS è un nuovo valore di configurazione che tutte le distribuzioni dovrebbero impostare.
    • La mancata impostazione può comportare la limitazione della velocità del traffico legittimo o il mancato blocco degli attacchi di forza bruta, a seconda della configurazione del proxy.
    • Si tratta di un'impostazione che incide sulla sicurezza che indica alla distribuzione come determinare l'indirizzo IP del client. Vedere openx.core.djangoapps.util.ip per la documentazione su come (e perché) configurarlo (così come l'impostazione NUM_PROXIES correlata per django-rest-framework).
  • SafeSessionMiddleware è un middleware esistente che fornisce diverse protezioni contro le vulnerabilità che potrebbero derivare da configurazioni errate della cache o altri bug con il risultato che un utente ottiene la sessione di un utente diverso.
    • In precedenza, se veniva rilevata una mancata corrispondenza dell'utente tra la richiesta o la sessione e la risposta, il middleware registrava gli avvisi; ora invaliderà la sessione e invierà una risposta di errore. L'interruttore ENFORCE_SAFE_SESSIONS è abilitato per impostazione predefinita, ma può essere disabilitato per tornare solo agli avvisi di registro.
    • Prima di eseguire l'aggiornamento a Nutmeg: verifica che i tuoi registri non contengano avvisi che iniziano con "Utente SafeCookieData su richiesta" o che questi avvisi siano molto rari. Se sono comuni, è probabile che vi sia un falso positivo causato da un codice di accesso, mascheramento o registrazione personalizzato che deve chiamare mark_user_change_as_expected. In caso contrario, le richieste valide potrebbero essere respinte.

Per ulteriori informazioni, consulta la pagina note di rilascio oppure Pagina wiki della noce moscata.

 419 visualizzazioni totali