From 9942b58846a5aca6934fbd26cdb9cf009eaa2ac4 Mon Sep 17 00:00:00 2001 From: Maria Grimaldi Date: Tue, 26 Nov 2024 12:51:46 +0100 Subject: [PATCH] refactor: address PR reviews --- .../concepts/hooks_extension_framework.rst | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/source/developers/concepts/hooks_extension_framework.rst b/source/developers/concepts/hooks_extension_framework.rst index 9fed2d1a..0286d444 100644 --- a/source/developers/concepts/hooks_extension_framework.rst +++ b/source/developers/concepts/hooks_extension_framework.rst @@ -133,13 +133,13 @@ You can review the :doc:`Open edX Filters ` 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. | @@ -147,23 +147,23 @@ The Hooks Extension Framework is designed to provide a stable and maintainable w | | - 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