Nutmeg: aprimoramentos para operadores e desenvolvedores

1 de julho de 2022 | Por

Nutmeg é a versão mais recente do Open edX. Ele foi lançado em 9 de junho de 2022. Neste post, veremos as mudanças recentes na experiência do operador e do desenvolvedor (ou seja, pessoas que escrevem código para o Open edX ou implantam uma instância do Open edX). Isso inclui algumas das maiores e mais recentes alterações do Tutor, destaque para eventos e filtros do Open edX e algumas notas críticas sobre descontinuações, remoções e atualizações de segurança.

Destaques do Tutor

Mudanças no Tutor desde o lançamento do Maple são detalhadas no Registro de alterações do tutor – versões 13.0.1 a 14.0.0. Alguns destaques são:

Recursos e melhorias do tutor

  • Um novo e ampliado API do plug-in “Versão 1” baseado na ideia de “ganchos”, que são pontos de extensão que permitem que os plugins reajam às ações do Tutor e modifiquem o comportamento do Tutor usando filtros de dados. O velho API do plug-in “Versão 0” ainda é suportado, embora os desenvolvedores de plugins sejam incentivados a migrar para a nova API.
  • Instruções mais abrangentes durante a atualização
  • Vários novos comandos:
    • `tutor k8s apply`: uma interface direta com `kubectl apply`
    • `tutor [dev|local|k8s] status`: fornece o status das informações do sistema
    • `tutor dev quickstart`: uma variante do `tutor local quickstart` que reduz o atrito no processo de configuração de desenvolvimento
    • `tutor [local/dev] copyfrom`: copia o conteúdo de um container
    • -m/–mount`: uma opção adicionada a vários comandos locais e dev para pastas de montagem automática e magicamente a partir do host, substituindo o antigo comando `bindmount` e as opções `–volume`.
  • `tutor dev start SERVICE` agora permite o anexo ao serviço para depuração de ponto de interrupção.
  • Iniciar contêineres `dev` agora interrompe contêineres `local` e vice-versa.
  • Capacidade de instalar pacotes personalizados e executar comandos como root na imagem do Docker
  • Capacidade de substituir `EDX_PLATFORM_REPOSITORY` e `NPM_REGISTRY` via `config.yml` em vez de como argumentos de compilação do Docker.
  • Capacidade de ocultar cursos da página de pesquisa /curso do LMS definindo a visibilidade do curso como "nenhuma" no Studio.
  • As notas persistentes agora estão habilitadas por padrão.

Suspensões do Tutor e Mudanças Importantes

  • `tutor dev runserver` está obsoleto em favor do `tutor dev start`.
  • `tutor k8s exec “ ”` (com aspas) está obsoleto; em vez disso, use `tutor k8s exec `. Isso se alinha com a sintaxe de `tutor local exec `.
  • Suporte descartado para a variável de ambiente `TUTOR_EDX_PLATFORM_SETTINGS`. Agora é recomendado criar um plugin em vez disso.
  • lms.env.json & cms.env.json agora são `lms.env.yml` & cms.env.yml; os desenvolvedores de plugins devem reformatar vários patches para usar o formato YAML.

E várias correções de segurança e bugs do Tutor; Veja o Registro de alterações do tutor – versões 13.0.1 a 14.0.0 para mais.

Abrir eventos e filtros do edX

Abrir eventos e filtros do edX adicionar uma nova maneira de estender o núcleo sem ter que mexer nos internos da plataforma edx (este trabalho faz parte do OEP-50: Estrutura de extensão de ganchos).

  • Eventos Open edX: esta versão padronizada do Django Signals permite que os desenvolvedores estendam a funcionalidade da plataforma apenas ouvindo o evento que é enviado após a conclusão de um processo chave, por exemplo, após a inscrição, login, registro, etc.
  • Filtros Open edX: apenas através da configuração, os desenvolvedores de extensão podem definir uma lista de funções a serem executadas antes do início de um processo chave, por exemplo, antes do registro, login, registro, etc.

Para mais informações, leia o OEP, documentação, ou assista Felipe Montoya Apresentação da Conferência Open edX 2022 no plano de fundo, arquitetura e uso deste produto.

Comando de gerenciamento importante para executar e configurar Var para definir

Uma melhoria de desempenho interna chamada “sequências de aprendizado” foi aceita em alguns lançamentos, mas agora está sempre ativa para o Nutmeg. Se você tiver algum curso que não tenha sido republicado no Koa ou posterior, execute o comando simule_publish cms django em seus cursos antes de atualizar, para preencher os dados da sequência de aprendizado.

A falha em definir o valor de configuração CLOSEST_CLIENT_IP_FROM_HEADERS pode resultar em tráfego legítimo de limitação de taxa ou falha no bloqueio de ataques de força bruta, dependendo da configuração do seu proxy.

Suspensões e remoções

As seguintes reprovações e remoções foram feitas desde o lançamento do Maple:

  • O repositório de certificados edx foi arquivado
  • Bok-choy (uma plataforma de testes) foi arquivado
  • A biblioteca django-ratelimit-backend foi removida da edx-platform; o backend padrão django-ratelimit está agora em uso. Isso tem o efeito colateral de remover a janela padrão de login do administrador do Django; os usuários agora devem fazer login primeiro por meio do LMS.
  • O acesso ao curso “Old Mongo” foi finalmente removido. Isso significa que as execuções do curso que possuem chaves como Org/Course/Run em vez de course-v1:Org+Course+run (visível na URL de qualquer página do curso) não podem ser acessadas pelos alunos.

Para obter mais informações sobre estes, consulte o Suspensões e remoções seção da página wiki do Nutmeg.

Aprimoramentos de segurança

Há dois aprimoramentos de segurança importantes para entender: um novo valor de configuração (CLOSEST_CLIENT_IP_FROM_HEADERS) que deve ser definido e alterações no SafeSessionMiddleware que exigem atenção antes da atualização para o Nutmeg.

  • CLOSEST_CLIENT_IP_FROM_HEADERS é um novo valor de configuração que todas as implantações devem definir.
    • Deixar de definir isso pode resultar em tráfego legítimo de limitação de taxa ou falha no bloqueio de ataques de força bruta, dependendo da configuração do seu proxy.
    • Essa é uma configuração de impacto na segurança que informa à sua implantação como determinar o endereço IP do cliente. Veja openx.core.djangoapps.util.ip para documentação sobre como (e por que) configurar isso (assim como a configuração NUM_PROXIES relacionada para django-rest-framework).
  • SafeSessionMiddleware é um middleware existente que fornece várias proteções contra vulnerabilidades que podem resultar de configurações incorretas de cache ou outros bugs, resultando em um usuário obtendo a sessão de um usuário diferente.
    • Anteriormente, se uma incompatibilidade de usuário fosse detectada entre solicitação ou sessão e resposta, o middleware registraria avisos; agora, ele invalidará a sessão e enviará uma resposta de erro. A alternância ENFORCE_SAFE_SESSIONS é habilitada por padrão, mas pode ser desabilitada para retornar apenas aos avisos de log.
    • Antes de atualizar para o Nutmeg: Verifique se seus logs não contêm avisos começando com “Usuário SafeCookieData a pedido” ou se esses avisos são muito raros. Se forem comuns, provavelmente há um falso positivo causado por algum código de login personalizado, mascaramento ou registro que precisa chamar mark_user_change_as_expected. Caso contrário, solicitações válidas podem ser rejeitadas.

Para mais informações, consulte o notas de lançamento ou de página wiki de noz-moscada.

Carregando

Comece a discussão em discutir.openedx.org

Tempo para mais? Confira os artigos abaixo.

Solucionando problemas em conjunto: Desenvolvimento de plataformas impulsionado pela comunidade
Capacite e Expanda o Futuro na Conferência Open edX
Workshops para desenvolvedores da Open edX Conference
Reivindicando nosso futuro digital: por que me juntei ao grupo Open Renaissance.
Participe da Conferência Open edX 2026!

A Conferência Open edX 2026 apresentará casos de uso inovadores para um dos melhores sistemas de gerenciamento de aprendizagem on-line de código aberto do mundo, a plataforma Open edX, e descobrirá os mais recentes avanços em design instrucional, constelação de cursos e métodos para operar e estender a plataforma Open edX , incluindo tecnologias inovadoras, como a IA generativa.