...
As the first use case of discussions, we want to enable the capability of attaching the “discussions” to a “group” of users and allowing all users of the group can to participate in the discussion.
...
To achieve this, any user in Sunbird will be able to create a group and add users to the group (though with the acceptance of the user). Based on the needs of users in the group, the group creator can pick and add one or more learning tools to the group.
Design Thoughts
As mentioned above, learning tools should be built like plugins that can be added to a group for enabling a certain capability for the group users.
...
A plugin should be configurable while adding to the group and the plugin configuration for a group should be stored as part of the group data. Each plugin can use one or more sunbird micro-services or external services.
Thus, there are primarily two components to be designed and developed for enabling discussions in Sunbird:
Discussions Service: A generic micro-service that can be used to model different types of discussions. This service should expose APIs that will be used by the discussions plugin. And this service should not have an understanding of the groups or how the plugin is implemented.
Discussions Plugin: This plugin should expose a configuration that can be configured while adding to a group, have a user interface that is embeddable within groups UI and use the configuration to render the discussions for a group.