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 /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
- 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
- Option 1: IDA
- 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 /wiki/spaces/HACK/pages/38863619
- 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)?
- Do we need to maintain the old UI for some period?
Story breakdown
TBD