Deprecation/Removal: Start/Due dates outside of Sections and Subsections

Copied from the DEPR ticket:

Proposal Date


Ticket Acceptance Date


Technology Removal Date


First Open edX Named Release Without This Functionality



Studio allows you to set some dates at the section and subsection levels, but it is technically possible to set these dates at any level of the hierarchy if you’re editing the OLX directly. You can set a global due date at the root Course block and have it inherit down to every problem in the course. You can also make it so that individual Units or problems within those Units have different start and due dates. I don’t believe this is documented anywhere.

Historically, I believe there were a few reasons for this:

  1. The initial XModule design was a prototype that used inheritance to push data where it needed to go because it was faster than thinking through a firmer boundary between Assignments and Problems.
  2. The “turtles, turtles, all the way down” philosophy of XModule also made those boundaries especially fuzzy to think about–you could make Sequences inside of Units for instance.
  3. In those early prototype days, content was being built just-in-time, and we would actually be releasing individual Units of content for the same assignment over the course of the week, as we got those particular simulations working correctly.

I don’t believe these reasons are relevant today, and the costs are:

  • Up to a 100X increase in the size of our scheduling data.
  • Performance penalties for many repeated and redundant date checking.
  • Complexity from invoking date checking at all levels in sometimes inconsistent ways (and potential bugs here).


To be less disruptive, we will still allow start and due dates to inherit from parent to child XBlock, but we would ignore values set at any level other than Section and Subsection when doing imports. We would add validation for this during the import process.

Eventually, new systems may assume that scheduling data like this will only live at the Section and Subsection levels.


The short term replacement already exists today, in specifying these dates only at the section or subsection level. In the longer term, we can bake this assumption into the data model, and not write 100X the number of dates on every publish “just in case” someone is using this functionality.


Course import process will report inappropriately set start and due dates as an error. It has never been possible to create dates outside of Sections and Subsections in Studio.


No data migration. Non-conforming data will be ignored.

Additional Info

It would be great to get CourseGraph data to see if this actually happens anywhere for a site like


I’m moving this to “Accepted”.