openedx / openedx/openedx-platform

[Draft] edx-platform Architectural Roadmap

Open
#35,144 2 comments 2 reactions 1 assignee View on GitHub

@kdmccormick is already working on this.

Since Jul 19, 2024.

initiative
Dominant language
Python
Stars
8.2k
Forks
4.4k
Avg merge
6d 18h
Merged PRs (30d)
42

Description

About

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

  • Developers of edx-platform core
  • Developers of edx-platform extensions
  • Site Operators

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)
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)
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)
  • 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/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, including switching all HTTP APIs to use DRF with standard Auth classes
  • https://github.com/openedx/edx-platform/issues/35014
  • https://github.com/openedx/edx-platform/issues/35898
MAKE MODULESTORE GO AWAY (various benefits)
MAKE IT MORE RESILIENT (needs work)

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.