Why Modulestore?
- Technically, a low-level library with little to no dependencies on the rest of the platform.
- Does not change very often - and especially not that often by the new TNL team.
- It's one of the common dependencies between LMS and CMS. So extracting the MS would pave the path toward splitting them as well.
- MS tests take about 8mns on Jenkins - that amount of test time would be shaved off of edx-platform builds.
Hackathon Experiments
As part of edX Hackathon XV, I experimented extracting out the modulestore code and its dependencies out into separate repos. I ended up creating the following 2 repos:
...
Since the work was done as part of a hackathon and within 2 hours, mostly for experimentation, accurate documentation wasn't kept.
Guidelines for Future Attempt
When this work is re-attempted, we should make sure to keep a clean git history, by doing the following:
- Initial commit should be just the base django cookie-cutter created files.
- Second commit should be just the unmodified copy of the modulestore code from the edx-platform (so all subsequent changes can be reviewed).
- Then, the following commits should be separated:
- All Python-3 compatible edits.
- All missing dependencies added to the requirements.
- All quality fixes.
- All other functional modifications should be kept as subsequent separate separated commits so they are easier to review and track.