Hacktoberfest 2026: los issues que los mantenedores marcaron para octubre, abiertos y aptos para principiantes. Explorar issues de Hacktoberfest

Refactor or deprecate parent-child relationships between XBlocks

Abierto
#729 2 comentarios 0 reacciones 1 asignado Ver en GitHub

@kdmccormick ya está trabajando en esto.

Desde el 10/11/2025.

Evaluación

Este issue todavía no se ha evaluado.

Descripción

This would be a long-term initiative. It probably belongs on the platform-roadmap.

Context

We have decided that parent-child relationships should only exist at/below the VerticalBlock: https://github.com/openedx/edx-platform/blob/master/docs/decisions/0006-role-of-xblock.rst

We have further discussed that parent-child relationships in their entirety should be removed; I'm not sure if we came to a consensus on that.

TODO -- Add more context ( @ormsbee , @kdmccormick , and @bradenmacdonald ).

Tasks

Off the top of my head...

  • File a DEPR encompassing our plan to:
    • Remove parent-child relationships on the base XBlock class. Delete the _HasChildrenMetaclass. Move all parent-child logic to a new subclass, XBlockWithChildren. Make it XBlock.has_children a read-only class property. Some details.
    • Raise an exception if get_parent is called at or above the VerticalBlock level.
    • For all XBlockWithChildren subclasses above the VerticalBlock (so, CourseBlock, SectionBlock, and SequenceBlock): Move their implementations to either Learning Core or edx-platform djangoapps.
  • Decide: Should parent-child relationships still exist at/below the Vertical block?
    • Either way -> ADR it.
    • Yes -> We're done.
    • No -> File another DEPR encompassing our plan to:
      • Raise deprecation warnings on the XBlockWithChildren class.
      • For all remaining XBlockWithChildren subclasses in edx-platform (eg, LibraryContentBlock, SplitTestBlock):
        Move their implementations to either Learning Core or edx-platform djangoapps.
      • Write guidance on how custom XBlockWithChildren subclasses can be similarly migrated. Ensure that, for example, OpenCraft's ProblemBuilder block can be migrated using this guide.
      • Delete the XBlockWithChildren class, and delete all parent-child logic from the XBlock repository.
      • Delete all parent-child logic from modulestore and edx-platform's XBlock runtimes.
Lenguaje dominante
Python
Estrellas
470
Forks
231
Merge medio
2 d 14 h
PR fusionados (30 d)
7

Preparar el entorno

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de openedx/XBlock

Todos los issues de openedx/XBlock

Issues similares

Más issues de Python

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.