Discussion Redesign Architecture

Discussion Redesign Architecture

Background

  • Discussion Forum Architecture Notes (from January 2015)

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 Managing multiple repo development)

        • 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 unnamed link and unnamed link

    • 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