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