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
This has worked well for teams: https://github.com/edx/edx-platform/tree/master/lms/djangoapps/teams
This is probably the most efficient option to go with
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?
AMD in XBlocks project proposed for Hackathon 11: Return of the Con Hackathon
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