Extending Open edX Platform Using Plugins

We’re targeting the sumac release and I’m trying to gather a list of resources for extending the platform without modifying the core codebase.

We have always cloned various Open edX repos (e.g. edx-platform, course-discovery, frontends) then added our own changes on top of a specific release branch.

Seeing that editing the core codebase has caused us many issues with making sure that the test cases pass and to avoid altering the core code, I noticed @lpm0073 blog articles explaining use of plugins to extend the platform for our own internal use.

Does edX have documentation on this too?

Django Plugins
I see this might be good for the backend (Django side).

XBlock Plugins
What about extending an existing XBlock (e.g. edx-ora2, qualtrics)? Do we use plugins for this or just make our own fork?

Frontend Plugins
What about plugins for the frontend-apps? How do we do this?
This looks promissing:

@sarina @braden

Hi @Zachary_Trabookis - could you take a spin through the frontend plugin docs I linked you and let me know how they are? I helped get them authored, but I’m not a frontend plugin developer. If there’s something missing from the docs, we’d love to know.

1 Like

Yes, I think you’d make your own fork and maintain that - or, consider contributing enhancements upstream so you don’t have to sync your fork. See https://openedx.atlassian.net/wiki/spaces/COMM/pages/3875962884/How+to+submit+an+open+source+contribution+for+Product+Review for instructions on how to submit a product proposal.

1 Like

We’ve also used the hooks extension framework to extend XBlocks because it helps us work with different parts of the backend, not just the service code. See this PR as an example: docs: ADR for lightweight extension points by mariajgrimaldi · Pull Request #2182 · openedx/edx-ora2 · GitHub