# Extending Open edX Platform Using Plugins

**URL:** <https://discuss.openedx.org/t/extending-open-edx-platform-using-plugins/15400>\
**Category:** Development\
**Created:** [March 31, 2025, 8:00pm UTC](https://discuss.openedx.org/t/extending-open-edx-platform-using-plugins/15400 "2025-03-31T20:00:32Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![Zachary\_Trabookis](https://sea2.discourse-cdn.com/flex020/user_avatar/discuss.openedx.org/zachary_trabookis/32/753_2.png) [@Zachary\_Trabookis](https://discuss.openedx.org/u/Zachary_Trabookis)\
**Post date:** [March 31, 2025, 8:00pm UTC](https://discuss.openedx.org/t/extending-open-edx-platform-using-plugins/15400/1 "2025-03-31T20:00:33Z")

</div>

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.

> **[The Open edX Example Plugin - Blog](https://blog.lawrencemcdaniel.com/the-open-edx-example-plugin/)**
>
> Learn the best practice for managing the 5 states of sensitive data in CI workflows using Github Actions and Kubernetes

> **[26 Code Samples To Make You A Better Open edX Plugin Programmer - Blog](https://blog.lawrencemcdaniel.com/26-code-samples-to-make-you-a-better-open-edx-plugin-programmer/)**
>
> Learn the best practice for managing the 5 states of sensitive data in CI workflows using Github Actions and Kubernetes

Does edX have documentation on this too?

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

> **[Hooks Extension Framework — Latest documentation](https://docs.openedx.org/en/latest/developers/concepts/hooks_extension_framework.html)**

**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:

> **[Use A Frontend Plugin Framework Slot — Latest documentation](https://docs.openedx.org/en/latest/site_ops/how-tos/use-frontend-plugin-slots.html)**

> **[Available Frontend Plugin Slots — Latest documentation](https://docs.openedx.org/en/latest/site_ops/references/frontend-plugin-slots.html)**

> **[Customizing Learner Dashboard Using Frontend “Slots” — Latest documentation](https://docs.openedx.org/en/latest/community/release_notes/sumac/customizing_learner_dashboard.html)**

> **[Customizing Site Header Using Frontend “Slots” — Latest documentation](https://docs.openedx.org/en/latest/community/release_notes/sumac/customizing_header.html)**

@sarina @braden

---

<div class="post-metadata">

**Author:** ![sarina](https://sea2.discourse-cdn.com/flex020/user_avatar/discuss.openedx.org/sarina/32/2308_2.png) [@sarina](https://discuss.openedx.org/u/sarina)\
**Post date:** [March 31, 2025, 11:06pm UTC](https://discuss.openedx.org/t/extending-open-edx-platform-using-plugins/15400/2 "2025-03-31T23:06:26Z")

</div>

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.

---

<div class="post-metadata">

**Author:** ![sarina](https://sea2.discourse-cdn.com/flex020/user_avatar/discuss.openedx.org/sarina/32/2308_2.png) [@sarina](https://discuss.openedx.org/u/sarina)\
**Post date:** [March 31, 2025, 11:08pm UTC](https://discuss.openedx.org/t/extending-open-edx-platform-using-plugins/15400/3 "2025-03-31T23:08:34Z")

</div>

> [@Zachary\_Trabookis](#):
>
> What about extending an existing XBlock (e.g. edx-ora2, qualtrics)? Do we use plugins for this or just make our own fork?

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](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.

---

<div class="post-metadata">

**Author:** ![mgmdi](https://sea2.discourse-cdn.com/flex020/user_avatar/discuss.openedx.org/mgmdi/32/1684_2.png) [@mgmdi](https://discuss.openedx.org/u/mgmdi)\
**Post date:** [April 1, 2025, 7:29am UTC](https://discuss.openedx.org/t/extending-open-edx-platform-using-plugins/15400/4 "2025-04-01T07:29:07Z")

</div>

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](https://github.com/openedx/edx-ora2/pull/2182)
