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.
![]()