From 866cdc7e434c6fa1be7bd3d6629783d03e5e3705 Mon Sep 17 00:00:00 2001 From: Glib Glugovskiy Date: Fri, 21 Oct 2022 00:05:59 +0300 Subject: [PATCH 1/4] docs: introduce plugin extensions adr --- docs/decisions/0006-plugin-extensions.rst | 60 +++++++++++++++++++++++ 1 file changed, 60 insertions(+) create mode 100644 docs/decisions/0006-plugin-extensions.rst diff --git a/docs/decisions/0006-plugin-extensions.rst b/docs/decisions/0006-plugin-extensions.rst new file mode 100644 index 000000000..10702cd5c --- /dev/null +++ b/docs/decisions/0006-plugin-extensions.rst @@ -0,0 +1,60 @@ +Django App Plugin extensions +============================ + +Status +------ + +Proposed + + +Context +------- + +More functionality is planned to be added to the Credentials service as a part of +https://github.com/openedx/credentials/issues/1734 and https://github.com/openedx/credentials/issues/1736. +Credentials may benefit from adoption of the `Django App Plugin`_ functionality. +It would provide additional possibilities to support many integrations with third-party +services for credentials sharing, like digital credentials platforms, digital wallets, +credentials signing services, etc. + +For more information on plugins in particular, see the `Django Apps Plugin README`_. + + +.. _Django App Plugin: https://github.com/openedx/edx-django-utils/blob/master/edx_django_utils/plugins/README.rst +.. _Django Apps Plugin README: https://github.com/openedx/edx-django-utils/blob/master/edx_django_utils/plugins/README.rst + + +Decision +-------- + +* Implement improved plugin support of Django apps in the Credentials service by adopting `edx_django_utils`_ module. Django apps plugins will support `overrides system`_ for core functionality. + +* Use plugin applications for future extension points and optional functionality for the Credentials service. + +* Create a version of `cookiecutter-django-app`_ for the Credentials, to easily create new plugin applications. + + +.. _edx_django_utils: https://github.com/openedx/edx-django-utils +.. _overrides system: https://github.com/openedx/edx-django-utils/blob/master/edx_django_utils/plugins/pluggable_override.py#L11 +.. _cookiecutter-django-app: https://github.com/openedx/edx-cookiecutters/tree/master/cookiecutter-django-app + +Consequences +------------ + +* It will be easier to extend the Credentials service and implement new business cases without building a monolithic unit. + +* It will be possible to override the core functionality of the Credentials service for specific use cases without direct code modifications. + +* It will become easier to support Credentials system "upgradability". + +* It may introduce complexity for code discovery in case of implicit overrides and a lack of documentation on particular plugin functionality. + +Rejected Alternatives +--------------------- + +* Adding Django applications directly to credentials/apps. + +References +---------- + +The Open edX platform Django apps ADR 0014: https://github.com/openedx/edx-platform/blob/master/docs/decisions/0014-no-new-apps.rst From 5fc24bc33c4680ab538a6caa3c194c8944d91a97 Mon Sep 17 00:00:00 2001 From: Glib Glugovskiy Date: Fri, 21 Oct 2022 00:17:18 +0300 Subject: [PATCH 2/4] docs: add implementation reference --- docs/decisions/0006-plugin-extensions.rst | 2 ++ 1 file changed, 2 insertions(+) diff --git a/docs/decisions/0006-plugin-extensions.rst b/docs/decisions/0006-plugin-extensions.rst index 10702cd5c..6069bf865 100644 --- a/docs/decisions/0006-plugin-extensions.rst +++ b/docs/decisions/0006-plugin-extensions.rst @@ -58,3 +58,5 @@ References ---------- The Open edX platform Django apps ADR 0014: https://github.com/openedx/edx-platform/blob/master/docs/decisions/0014-no-new-apps.rst + +How to enable plugins for an IDA: https://github.com/openedx/edx-django-utils/blob/master/edx_django_utils/plugins/docs/how_tos/how_to_enable_plugins_for_an_ida.rst From 11ce92768339f71c526cfed806eba503efa71720 Mon Sep 17 00:00:00 2001 From: Glib Glugovskiy Date: Fri, 21 Oct 2022 17:26:08 +0300 Subject: [PATCH 3/4] docs: provide links in rst format --- docs/decisions/0006-plugin-extensions.rst | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/docs/decisions/0006-plugin-extensions.rst b/docs/decisions/0006-plugin-extensions.rst index 6069bf865..9d5403fc5 100644 --- a/docs/decisions/0006-plugin-extensions.rst +++ b/docs/decisions/0006-plugin-extensions.rst @@ -11,7 +11,7 @@ Context ------- More functionality is planned to be added to the Credentials service as a part of -https://github.com/openedx/credentials/issues/1734 and https://github.com/openedx/credentials/issues/1736. +`credentials/issues/1734`_ and `credentials/issues/1736`_. Credentials may benefit from adoption of the `Django App Plugin`_ functionality. It would provide additional possibilities to support many integrations with third-party services for credentials sharing, like digital credentials platforms, digital wallets, @@ -19,7 +19,8 @@ credentials signing services, etc. For more information on plugins in particular, see the `Django Apps Plugin README`_. - +.. _`credentials/issues/1734`: https://github.com/openedx/credentials/issues/1734 +.. _`credentials/issues/1736`: https://github.com/openedx/credentials/issues/1736 .. _Django App Plugin: https://github.com/openedx/edx-django-utils/blob/master/edx_django_utils/plugins/README.rst .. _Django Apps Plugin README: https://github.com/openedx/edx-django-utils/blob/master/edx_django_utils/plugins/README.rst From 047ae497e6af99bf777da9d04b4bb1d2249a1ebd Mon Sep 17 00:00:00 2001 From: Glib Glugovskiy Date: Wed, 23 Nov 2022 21:53:36 +0200 Subject: [PATCH 4/4] docs: remove cookiecutter decision --- docs/decisions/0006-plugin-extensions.rst | 4 ---- 1 file changed, 4 deletions(-) diff --git a/docs/decisions/0006-plugin-extensions.rst b/docs/decisions/0006-plugin-extensions.rst index 9d5403fc5..73b156080 100644 --- a/docs/decisions/0006-plugin-extensions.rst +++ b/docs/decisions/0006-plugin-extensions.rst @@ -32,12 +32,8 @@ Decision * Use plugin applications for future extension points and optional functionality for the Credentials service. -* Create a version of `cookiecutter-django-app`_ for the Credentials, to easily create new plugin applications. - - .. _edx_django_utils: https://github.com/openedx/edx-django-utils .. _overrides system: https://github.com/openedx/edx-django-utils/blob/master/edx_django_utils/plugins/pluggable_override.py#L11 -.. _cookiecutter-django-app: https://github.com/openedx/edx-cookiecutters/tree/master/cookiecutter-django-app Consequences ------------