Discussion Redesign Architecture

Background

Initial Random Thoughts

  • Where should we implement the feature?
    • Option 1: IDA
      • This doesn't seem like an appropriate solution since discussions should be tightly integrated into the LMS
      • Note: the comment service will continue to live in its own repo (even if ported to Python: Comment Service Python Port)
    • Option 2: pip-installed feature from separate repo
      • Model on the ORA2 repo: https://github.com/edx/edx-ora2
      • It will make it very easy for the Open Source community to choose not to install the feature
      • Same challenges as ORA2 (see /wiki/spaces/TNL/pages/40862230)
        • How do we do integration testing?
        • How do we integrate static assets into the pipeline?
      • It won't be possible to share code with edx-platform
      • If the old UI remains then some portion will be duplicated into the new repo too
      • Could live in the same repo with the new Python port
    • 3: new Django app in LMS
    • Option 4: modify the existing UI in place
      • The current code is sprinkled throughout the LMS which makes it hard to manage
      • Changing the UI in place could complicate concurrently supporting the old UI
  • General approach
    • Reuse the shared components from the teams feature (cards, pagination components etc)
    • Switch to the new Discussion API (Discussion API)
      • This is probably needed to support pagination with the components built for teams
      • This is a good chance to migrate so that web and mobile are using the same API
    • Need a new component
  • Should we convert the XModule to an XBlock
    • Solutions had a PR to merge back their XBlock implementation: https://github.com/edx/edx-platform/pull/5565
    • If we move discussions UI into a separate repo then it can't be an xmodule
    • How do we migrate courses to the new XBlock? Is it a gradual rollout or an immediate switchover
    • How do we declare the dependencies for a new XBlock?
    • How do we integrate into the production pipeline?
  • Adoption of the UI Toolkit and the Pattern Library
    • See UITK and UXPL
    • We have to make the switch at some point so it would be good to start on an all new project
    • If the UI is built in a separate repo then the shared components from teams will need to be moved out of edx-platform (cards, paginated components etc)
    • How much does forums depend upon legacy edX styles?
    • How do we support theming?
    • How can we render inline discussions in the courseware if they depend upon the pattern library?
  • Testing
  • Can the discussion API be a standalone feature that could be used outside of edx-platform?
    • Is there any benefit to yet another open source discussion solution?
    • It would be great if the repo was self sufficient to support testing, independent development etc
    • What happens with capabilities that are edX-specific?
      • Do we have to build teams knowledge into the UX/APIs?
      • How do we feed last activity information back to the platform?
  • What is our rollout strategy?
    • Do we need to maintain the old UI for some period?
      • It will be more involved to rewrite the Discussion tab to use the new component
      • It probably makes sense to only switch inline discussions to the new UI
    • How do we migrate courses to use the XBlock (assuming we do this)?

Story breakdown

TBD