To make it trivial to build more integrations that trigger events, add functionality to users and maintain that functionality as an addon the ecosystem should allow to make clear API on how to set up an Addon. That would make the Slack integration, a plug-in.
The Plugin system should allow to add cutom menu entries on a variety of pages.
This would also make it easier for a studio to develop an "additional feature" for Kitsu without requiring to change the core.
For example, a Plug-in could connect to a "notification" signal and have the server run a particular script on that event, like a Slack notification. Then as part of the Plugin system it could expose some settings for it, e.g. to the user, maybe in .json or in Python.
class SlackPlugin(Plugin):
admin_options = [
StringOption(name="slack_api_url", label="Slack API Url")
]
user_options = [
StringOption(name="slack_key", label="Slack Username")
]
def install(self):
self.connect("notificationReceived", self._on_notification)
def _on_notification(self, entity, notification):
Submit notification to Slack.
pass
It could be worth it to look into how Shotgun/Ftrack expose customizability.