Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

There are a number of changes that are were needed to support the ability for a new feature to be implemented purely within its own Django app:

  • Stevedore extension points should be provided for each of the common UX changes that need to be made
  • The first such extension point has been implemented: 
  • Some important first extension points are as follows:
    • "Feature flag"
      • Note: this will be a ConfigurationModel derivative (which includes a built-in enabled column)
      • We recommend this over using a Django settings feature flag
      • It would be useful to allow all associated extensions to obey the feature flag automatically
    • URLs for new UI and REST APIs
    • Instructor Dashboard components/tabs
  • XBlocks should be extended to provide more capabilitiesCourse-scoped fields for configuration settings Jira LegacyserverJIRA (openedx.atlassian.net)serverId13fd1930-5608-platform needs to be extended to support pluggable user interfaces
    Status
    colourGreen
    titleDONE
  • XBlocks should be extended to provide more capabilities
    • Course-scoped fields for configuration settings
      • Jira Legacy
        serverJIRA (openedx.atlassian.net)
        serverId13fd1930-5608-3aac-a5dd-21b934d3a4b4
        keyTNL-1804
    • Ability to add an xblock as a course tab
      • Jira Legacy
        serverJIRA (openedx.atlassian.net)
        serverId13fd1930-5608-3aac-a5dd-21b934d3a4b4
        keyTNL-2319
    • Studio editing tabs for xblocks
      • Jira Legacy
        serverJIRA (openedx.atlassian.net)
        serverId13fd1930-5608-3aac-a5dd-21b934d3a4b4
        keyTNL-850
      • Jira Legacy
        serverJIRA (openedx.atlassian.net)
        serverId13fd1930-5608-3aac-a5dd-21b934d3a4b4
        keyTNL-851
    • Admin views for both Studio and LMS
    • Need built-in support for RequireJS or AMD compliant dependency management
      • Jira Legacy
        serverJIRA (openedx.atlassian.net)
        serverId13fd1930-5608-3aac-a5dd-21b934d3a4b4
        keyPLAT-481
  • The Django asset pipeline needs to be improvedHave the improved 
    Status
    colourGreen
    titleDONE
    • Have the pipeline pick up assets from all installed Django apps (to support CDNs, minification etc)
      • A spike was done to prove the approach: PR 7610: Django extension spike
      • The work was completed as part of the Teams epic:
        • Jira Legacy
          serverJIRA (openedx.atlassian.net)
          serverId13fd1930-5608-3aac-a5dd-21b934d3a4b4
          keyTNL-2242
    • RequireJS Optimizer support should be added to the LMS
      • An order must be established for visual aspects such as tabs. Today the order is implicit in the hard-coded list.
        • If in doubt, sort the items alphabetically by name
      • How can page-level plug-ins render the correct page
        • For example, how does a new tab render the correct header and footer for the page that it renders?
        • The simplest solution is to document the boilerplate that each plug-in type is required to include
        • Miki suggests that maybe we should use inheritance to our benefit here, where the superclass renders the boilerplate
        • Eventually we might want to use a mechanism more like XBlock so that a plug-in only owns a block and not the entire page
          • Of course, supporting XBlocks themselves should also be supported
          • A possible challenge with this is that it is subverting the Django framework
      • It needs to be decided how mobile can benefit from these plug-ins
        • If they provide new UI as URLs then they won't just drop in to mobile
        • XBlocks will just appear, but only by using a web view to render the HTML
        • React, a JavaScript library from Facebook, might help with native rendering of HTML
          Jira Legacy
          serverJIRA (openedx.atlassian.net)
          serverId13fd1930-5608-3aac-a5dd-21b934d3a4b4
          keyTNL-1322
        • See also RequireJS in the LMS
      There are some interesting aspects of supporting arbitrary plug-ins

    There are further complications if we want to move the Django app out to its own repo:

    • How do we write integration tests?How do assets get into the Django pipeline?
    • How can SASS build upon the base SASS from edx-platform?

    ...