From 2906792b472ebcc480759218b19fa3a32bead47f Mon Sep 17 00:00:00 2001 From: Maria Grimaldi Date: Fri, 25 Oct 2024 17:59:11 +0200 Subject: [PATCH 01/39] docs: add ADR for generalized containers capability --- .../decisions/0017-generalized-containers.rst | 53 +++++++++++++++++++ 1 file changed, 53 insertions(+) create mode 100644 docs/decisions/0017-generalized-containers.rst diff --git a/docs/decisions/0017-generalized-containers.rst b/docs/decisions/0017-generalized-containers.rst new file mode 100644 index 00000000..a913219a --- /dev/null +++ b/docs/decisions/0017-generalized-containers.rst @@ -0,0 +1,53 @@ +Modeling Containers as a Generalized Capability for Holding Content +======================================================================= + +Context +------- + +WIP + +Decisions +--------- + +1. Core Structure and Purpose of Containers +=========================================== + +- A container is designed as a generalized capability to hold different types of content. +- A container is a publishable content type that holds other content types through a parent-child relationship. +- A container application will offer shared definitions for use by other container types. + +2. Container Types and Content Constraints +========================================== + +- A container marks any PublishableEntity, such as sections, subsections, units, or any other custom content type, as a type that can hold other content. +- Containers might be of different types, with each type potentially having different restrictions on the type of content it can hold but are not enforced by containers. +- Content restrictions for containers are implemented at the app layer, allowing specific container types, like Unit, to limit their children to particular content types (e.g., only Components). +- The course hierarchy Course > Section > Subsection > Unit will be implemented as relationships between containers, with each level acting as a container that holds other content. The hierarchy will be enforced by the content restrictions of each particular container. +- This hierarchy will not rely on the XBlock mechanism but will still be capable of supporting XBlock content types (e.g., by holding Components). +- Containers will follow extensibility principles in `0003-content-extensibility.rst` for creating new container types or subtypes, static or dynamic. + +3. Container Members and Relationships +====================================== + +- Members of a container can be any type of publishable content. +- A generic model will define the parent-child relationships between containers and PublishableEntities to support both static and dynamic content using the same structure. +- Each container version maintains a structured reference to different states of its members (e.g., user-defined state, initial state, last state), enabling efficient access to historical states and supporting reverts and draft states. +- Containers maintain a defined order for their members. When ordering needs to change, a new copy of the member should be created. +- Members can be fixed to a particular version or set to point to the latest version for draft and published states. + - If the published version changes from V0 to V1 and there is an EntityListRow pointing to that version, a new instance will need to be created to reference the new version. To avoid creating new instances when always referencing the latest version, pointers to the draft/published states can be set to `None`, which reduces redundant data storage. + - If the version is pinned, then each time versions are updated, a new member with the new reference must be created. + +4. Versioning Management +======================== + +- A new version of the container is created if and only if the container itself changes (e.g., title, ordering of contents, adding or removing content) and not when its content changes (e.g., a component in a Unit is updated with new text). + +5. Publishing +============= + +WIP + +6. Pruning +========== + +WIP From b1b1a88674fb941afe4c09b128d8553452727783 Mon Sep 17 00:00:00 2001 From: Maria Grimaldi Date: Mon, 28 Oct 2024 23:08:16 +0100 Subject: [PATCH 02/39] docs: add ADR for units --- .../decisions/0017-generalized-containers.rst | 42 ++++++++++--------- docs/decisions/0018-units-as-containers.rst | 34 +++++++++++++++ 2 files changed, 57 insertions(+), 19 deletions(-) create mode 100644 docs/decisions/0018-units-as-containers.rst diff --git a/docs/decisions/0017-generalized-containers.rst b/docs/decisions/0017-generalized-containers.rst index a913219a..e0f80802 100644 --- a/docs/decisions/0017-generalized-containers.rst +++ b/docs/decisions/0017-generalized-containers.rst @@ -1,5 +1,5 @@ -Modeling Containers as a Generalized Capability for Holding Content -======================================================================= +17. Modeling Containers as a Generalized Capability for Holding Content +======================================================================== Context ------- @@ -20,34 +20,38 @@ Decisions ========================================== - A container marks any PublishableEntity, such as sections, subsections, units, or any other custom content type, as a type that can hold other content. -- Containers might be of different types, with each type potentially having different restrictions on the type of content it can hold but are not enforced by containers. -- Content restrictions for containers are implemented at the app layer, allowing specific container types, like Unit, to limit their children to particular content types (e.g., only Components). +- Containers might be of different types, with each type potentially having different restrictions on the type of content it can hold but that will not be enforced by containers. +- Content restrictions for containers are implemented at the app layer, allowing specific container types, like Unit, to limit their members to particular content types (e.g., only Components). - The course hierarchy Course > Section > Subsection > Unit will be implemented as relationships between containers, with each level acting as a container that holds other content. The hierarchy will be enforced by the content restrictions of each particular container. -- This hierarchy will not rely on the XBlock mechanism but will still be capable of supporting XBlock content types (e.g., by holding Components). - Containers will follow extensibility principles in `0003-content-extensibility.rst` for creating new container types or subtypes, static or dynamic. -3. Container Members and Relationships -====================================== +1. Container Members and Relationships +======================================= -- Members of a container can be any type of publishable content. -- A generic model will define the parent-child relationships between containers and PublishableEntities to support both static and dynamic content using the same structure. -- Each container version maintains a structured reference to different states of its members (e.g., user-defined state, initial state, last state), enabling efficient access to historical states and supporting reverts and draft states. -- Containers maintain a defined order for their members. When ordering needs to change, a new copy of the member should be created. -- Members can be fixed to a particular version or set to point to the latest version for draft and published states. - - If the published version changes from V0 to V1 and there is an EntityListRow pointing to that version, a new instance will need to be created to reference the new version. To avoid creating new instances when always referencing the latest version, pointers to the draft/published states can be set to `None`, which reduces redundant data storage. - - If the version is pinned, then each time versions are updated, a new member with the new reference must be created. +- The members of a container can be any type of publishable content. +- A container holds references to generic data structures for defining parent-child relationships between a container and its members. These structures point to either static or dynamically generated content to allow associations for different types of content within the container. +- Members are stored as a list of references to the content they hold to maintain ordering. +- Each container holds different states of its members (e.g., user-defined state, initial state, last state) to support rollback operations. +- Containers maintain a defined order for their members. When ordering needs to change, a new copy of the child should be created. +- Each child can be fixed to a particular version or set to point to the latest version for draft and published states. Draft or published states can be referenced without creating new instances for each version update by using the convention of setting the reference to `None`. +- If the child's draft or published version is pinned, then each time versions are updated, a new child with the new reference must be created. -4. Versioning Management -======================== +1. Container Versioning Management +================================== -- A new version of the container is created if and only if the container itself changes (e.g., title, ordering of contents, adding or removing content) and not when its content changes (e.g., a component in a Unit is updated with new text). +- The container itself is versioned, and a new version is created if and only if the container itself changes (e.g., title, ordering of contents, adding or removing content) and not when its content changes (e.g., a component in a Unit is updated with new text). -5. Publishing +1. Publishing ============= WIP -6. Pruning +1. Pruning ========== WIP + +Consequences +------------ + +WIP diff --git a/docs/decisions/0018-units-as-containers.rst b/docs/decisions/0018-units-as-containers.rst new file mode 100644 index 00000000..1f27d0b5 --- /dev/null +++ b/docs/decisions/0018-units-as-containers.rst @@ -0,0 +1,34 @@ +18. Modeling Units as a Concrete Implementation of the Container Capability +======================================================================= + +Context +------- + +The container capability is a generalized capability to hold different types of content. This decision focuses on modeling units as a concrete implementation of the container capability. + +Decisions +--------- + +All decisions from `0017-generalized-containers.rst` are still valid. The following decisions are added: + +1. Units as Containers +======================= + +- A unit is a concrete type of container that holds components. +- A unit application will offer shared definitions for use by other unit subtypes. + +1. Unit Types and Content Constraints +====================================== + +- Units can only hold components as their members but will not enforce this restriction at the model level. +- Content restrictions for units are implemented at the app layer, allowing units to limit their members to components. + +1. Unit Members and Relationships +================================== + +- The members of a unit can only be components. + +4. Unit Versioning Management +============================== + +- A unit is versioned, and a new version is created if and only if the unit itself changes (e.g., title, ordering of contents, adding or removing content) and not when its content changes (e.g., a component in a unit is updated with new text). From 413b66c66b7fdc4d3284ad111c4dfe4f05fc4d39 Mon Sep 17 00:00:00 2001 From: Maria Grimaldi Date: Mon, 28 Oct 2024 23:14:03 +0100 Subject: [PATCH 03/39] fix: reference content flexibility ADR --- docs/decisions/0017-generalized-containers.rst | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/docs/decisions/0017-generalized-containers.rst b/docs/decisions/0017-generalized-containers.rst index e0f80802..881e6da9 100644 --- a/docs/decisions/0017-generalized-containers.rst +++ b/docs/decisions/0017-generalized-containers.rst @@ -22,7 +22,7 @@ Decisions - A container marks any PublishableEntity, such as sections, subsections, units, or any other custom content type, as a type that can hold other content. - Containers might be of different types, with each type potentially having different restrictions on the type of content it can hold but that will not be enforced by containers. - Content restrictions for containers are implemented at the app layer, allowing specific container types, like Unit, to limit their members to particular content types (e.g., only Components). -- The course hierarchy Course > Section > Subsection > Unit will be implemented as relationships between containers, with each level acting as a container that holds other content. The hierarchy will be enforced by the content restrictions of each particular container. +- The course hierarchy Course > Section > Subsection > Unit will be implemented as relationships between containers, with each level acting as a container that holds other content. The hierarchy will be enforced by the content restrictions of each particular container but allowed to be overridden to support `0002-content-extensibility.rst`. - Containers will follow extensibility principles in `0003-content-extensibility.rst` for creating new container types or subtypes, static or dynamic. 1. Container Members and Relationships @@ -55,3 +55,7 @@ Consequences ------------ WIP + + +.. _0002-content-flexibility.rst: docs/decisions/0002-content-extensibility.rst +.. _0003-content-extensibility.rst: docs/decisions/0003-content-extensibility.rst From 0deab251f487923a772026575ca1cd0abad5aaa5 Mon Sep 17 00:00:00 2001 From: Maria Grimaldi Date: Mon, 28 Oct 2024 23:16:47 +0100 Subject: [PATCH 04/39] docs: add containers DB schema --- docs/_static/containers.png | Bin 0 -> 69702 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 docs/_static/containers.png diff --git a/docs/_static/containers.png b/docs/_static/containers.png new file mode 100644 index 0000000000000000000000000000000000000000..9ea8a1bb0559cfc65126852a6511747fdeffe7df GIT binary patch literal 69702 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
9@$FSU7Gf?-<*~OF8}C;hTT(UsI9R}~SI%uP ztwbZY+*X;jV-*AbSs>%BD6o*1{B_%&%S`isSzHB;G;`1T>q{4Gy5VaQumIm=Sx#NF zlw-jr{Pl&@-#@o)&st^jJ%(e~JXezcE?>D=jr>GGQGp<(v{I2~`2=-(wsm`nRM38-b>u475