Skip to content

Commit

Permalink
refactor: address PR reviews
Browse files Browse the repository at this point in the history
  • Loading branch information
mariajgrimaldi committed Nov 26, 2024
1 parent 0b1c107 commit 9942b58
Showing 1 changed file with 9 additions and 9 deletions.
18 changes: 9 additions & 9 deletions source/developers/concepts/hooks_extension_framework.rst
Original file line number Diff line number Diff line change
Expand Up @@ -133,37 +133,37 @@ You can review the :doc:`Open edX Filters <openedx-filters:index>` documentation
The Framework vs Forking the Open edX Platform
**********************************************

The Hooks Extension Framework is designed to provide a stable and maintainable way to extend the Open edX platform without modifying its core. This approach is in contrast to forking the platform, which involves creating a separate version that separates from the core codebase. Here is a comparison table of the two approaches:
The Hooks Extension Framework is designed to provide a stable and maintainable way to extend the Open edX platform without modifying its core. This approach is in contrast to forking the platform, which involves creating a separate version that diverges from the core codebase. Here is a comparison table of the two approaches:

+--------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------+
| | **Open edX Events and Filters** | **Forking** |
+====================================================================+===============================================================================================================+====================================================================================================================================+
| **Purpose** | Allow extending functionality of the Open edX platform without modifying the | Modify the code directly to meet specific needs. |
| | core codebase but by leveraging and configurations. | |
| | core codebase but by leveraging plugins and configurations. | |
+--------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------+
| **Advantages** | - More decoupled implementations. | - Full control of the platform behavior. |
| | - Decreased maintenance burden of the platform, maintenance efforts are centered on plugins. | - No restrictions from what can be changed. |
| | - Enables reusable and configurable behavior across the platform. | - Suitable for highly customized use cases. |
| | - Easier to maintain long-term due to backward compatibility and versioning policies. | |
+--------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------+
| **Disadvantages** | - Can increase complexity in debugging and maintenance because it adds more processing layers. | - Separation from the core makes long-term maintenance challenging. |
| | - Limited by existing events and filters available in the Open edX ecosystem. | - High maintenance burden for upgrades and compatibility. |
| | - Limited by existing events and filters available in the Open edX ecosystem, but new events and filters can | - High maintenance burden for upgrades and compatibility. |
| | be proposed and added to the framework. | - Requires manual integration with the Open edX platform for each new release. |
| | - Might increase complexity in plugins for highly customized features. | - Requires deep understanding of the platform to modify it correctly. |
| | - Might introduce an edx-platform dependency into plugins, mainly when using filters. | |
+--------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------+
| **Performance Impact** | Medium to high, as events and filters execute within the caller process. Although events are designed so | High, as changes directly impact the Open edX platform (edx-platform or other IDAs) and may require additional testing, monitoring,|
| | receivers can trigger asynchronous tasks for improved performance. | and performance considerations of new added code and for the integration itself. |
| **Community Compatibility** | High, as the community encourages reusable implementations and the contribution of new extension points. | Low, as changes in forks are usually highly customized not designed for others to reuse. |
+--------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------+
| **Community Compatibility** | High, as the community encourage reusable implementations and the contribution of new extension points. | Low, as changes in forks are usually highly customized not designed for others to reuse. |
+--------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------+
| **Implementation Effort** | Low to medium, depending on the complexity of the receiver logic and filter pipelines. | High, as modifications require expertise in the platform and increase technical debt. |
| **Implementation Effort** | Low to medium, depending on the complexity of the receiver logic and filter pipelines. | High, as modifications require expertise in the platform and increases technical debt. Also, changes may require additional testing|
| | | and monitoring to ensure integration compatibility with the Open edX platform. |
+--------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------+
| **Upgrade Compatibility** | High, due to backward compatibility policies. | Low, as forks must manually integrate their changes with the Open edX platform for each new release. |
+--------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------+

When implementing a new feature, consider the advantages and disadvantages of each approach to determine the best fit for your use case and long-term goals. If you think your feature can be part of the core instead of an extension, consider proposing it as a new feature in the Open edX platform.
When implementing a new feature, consider the advantages and disadvantages of each approach to determine the best fit for your use case and long-term goals. If you think your feature should be part of the core instead of an extension, consider `proposing it as a new feature in the Open edX platform`_.

.. _Open edX Django plugins: https://edx.readthedocs.io/projects/edx-django-utils/en/latest/plugins/readme.html
.. _openedx-filters: https://github.com/openedx/openedx-filters
.. _openedx-events: https://github.com/openedx/openedx-events
.. _Django signals: https://docs.djangoproject.com/en/4.2/topics/signals/
.. _proposing it as a new feature in the Open edX platform: https://openedx.atlassian.net/wiki/spaces/COMM/pages/3875962884/How+to+submit+an+open+source+contribution+for+Product+Review

0 comments on commit 9942b58

Please sign in to comment.