openedx / edx-platform

The Open edX LMS & Studio, powering education sites around the world!
https://openedx.org
GNU Affero General Public License v3.0
7.17k stars 3.83k forks source link

[Draft] edx-platform Architectural Roadmap #35144

Open kdmccormick opened 1 month ago

kdmccormick commented 1 month ago

About

This is a place to coordinate long-term technical work within the edx-platform repository for the benefit of:

This work will be completed by a variety of means. It will include both volunteer contributions as well as funded contributions. Some items will be accomplished as part of other feature work, others by their own focused projects. The purpose of this roadmap is not to make the work happen, but rather align all edx-platform developers around a shared vision which can collectively accomplish over time.

Out-of-scope: We will not track tasks that are entirely outside of edx-platform. We will not track improvements for Authors or Learners here. The Platform Roadmap is the right place for those.

Where does this come from? Originally, this Google Doc. Going forward, the roadmap will be managed by edx-platform Maintainers with input from edx-platform Core Contributors.

What's the status? We are still building this out. Stay tuned.

Roadmap Epics

### MAKE IT SMALLER (maintenance burden, build size)
- [ ] https://github.com/openedx/edx-platform/issues/31620
- [ ] Extract non-Core apps into Hooks-based platform plugins
- [ ] Whittle down requirements list (continuing [Braden's work on kernel.in](https://discuss.openedx.org/t/a-minimal-open-edx-distribution/9478))
- [ ] Enforce restrictions on new apps and new dependencies (prior work: [no-new-apps ADR](https://github.com/openedx/edx-platform/blob/master/docs/decisions/0014-justifying-new-apps.rst))
- [ ] https://github.com/openedx/platform-roadmap/issues/3
### MAKE IT FASTER (for learners, educators)
- [ ] Once we’ve switched over to Learning Core data models for courseware content access, investigate our memory/CPU usage and optimize to reduce the costs of running the platform.
- [ ] (There have got to be more items we can add here -- will page Dave when he's back from PTO :)
### MAKE IT EASIER TO CONFIGURE (for devs, ops, admins)
- [ ] https://github.com/openedx/edx-platform/issues/34467
- [ ] https://github.com/openedx/public-engineering/issues/247
- [ ] https://github.com/openedx/public-engineering/issues/263
- [ ] https://github.com/openedx/open-edx-proposals/issues/587
- [ ] Refactor existing settings files without changing their behavior?
- [ ] https://github.com/openedx/edx-platform/issues/35146
- [ ] Invert or remove Waffle flags that Tutor already enables
- [ ] Switch to Redis by default for caching.
- [ ] Support bare-metal edx-platform
### MAKE IT EASIER TO INTEGRATE (for "external" devs)
- [ ] Document HTTP API support levels, map them to audiences (Operator vs Instructor vs Learner), and map them to product features
- [ ] Define which Python APIs are supported
- [ ] Define best practices for how to build HTTP APIs ([starting point](https://openedx.atlassian.net/wiki/spaces/AC/pages/18350757/Open+edX+REST+API+Conventions))
- [ ] Clear documentation for how to integrate with external auth providers vs internal.
- [ ] Improve/document AuthZ including documenting the roles that exist in our platform.
- [ ] Either model the catalog in edx-platform *or* make edx-platform oblivious to it ([starting point ADR](https://github.com/openedx/edx-platform/pull/34156))
- [ ] https://github.com/openedx/edx-platform/issues/32609
### MAKE IT MAKE SENSE (for "internal" devs)
- [ ] Consolidate to a single edx-platform docs structure.
- [ ] **Repo Structure**: Define the structure of edx-platform as it stands today, define the structure of the repository that we want (incl. LMS vs CMS concerns), make a plan to get there for existing code, document where new code should go, and use importlinter to help enforce all of this
- [ ] Type hint edx-platform's major packges, add more type hints to edx-platform, and then make type checking opt-out instead of opt-in
- [ ] Turn in-repo apps that are edx-django-plugins into normal Django apps.
- [ ] Resolve various [Auth Challenges](https://openedx.atlassian.net/wiki/spaces/AC/pages/3737092113/Authentication+Challenges), including switching all HTTP APIs to use DRF with standard Auth classes
- [ ] https://github.com/openedx/edx-platform/issues/35014
### MAKE MODULESTORE GO AWAY (various benefits)
- [ ] https://github.com/openedx/platform-roadmap/issues/327
- [ ] https://github.com/openedx/edx-platform/issues/34827
- [ ] [XBlock 2.0](https://docs.google.com/document/d/1xelb7iGvWRtT71F2c_dBkQEB47Cj0etT5VGgbVdAPKY/edit)
- [ ] Limit ModuleStore usage to just CMS and Courseware ([implementing Dave's ADR](https://github.com/openedx/edx-platform/blob/master/docs/decisions/0011-limit-modulestore-use-in-lms.rst))
- [ ] Limit Modulestore usage to just CMS
- [ ] Finish purging remnants of XModule system, including renaming to make the system more comprehensible
- [ ] Try to reimplement Course Blocks API on top of Learner Core (allowing removal of block transformers)
- [ ] Deprecate XBlock children above the Unit
- [ ] Deprecate XBlock children (period) -- requires replacing dynamic blocks with Learning Core systems
- [ ] Migrate courses from ModuleStore to Learning Core
### MAKE IT MORE RESILIENT (needs work)
- [ ] https://github.com/openedx/edx-platform/issues/35216
feanil commented 1 month ago

Notes from discussion at Axim:

kdmccormick commented 1 month ago

Notes from edx-platform maintenance meeting: