6. Django App Plugin extensions#
6.1. Status#
Accepted
6.2. Context#
More functionality is planned to be added to the Credentials service as a part of 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, credentials signing services, etc.
For more information on plugins in particular, see the Django Apps Plugin README.
6.3. 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.
6.4. 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.
6.5. Rejected Alternatives#
Adding Django applications directly to credentials/apps.
6.6. References#
The Open edX platform Django apps ADR 0014: openedx/edx-platform
How to enable plugins for an IDA: openedx/edx-django-utils