-
-
Notifications
You must be signed in to change notification settings - Fork 3
Description
What
Identify a path for st2chatops that:
- modernizes the approach to chatops
- promotes st2chapops to a 1st class service in ST2
- minimizes any existing user disruption while providing a migration path
- is extensible
- supports HA
- considers current and future community feature wishes and use cases for chatops with ST2
Why
The existing approach is:
- JavaScript (we are a python project) - hard to collaborate
- Not native to ST2 (lots of work arounds to get popular features to work)
- We don't have any maintainers who are JS devs
- It's showing its age
How
The Purpose of this Issue
Discussion
Initial Post by @blag
Our ChatOps microservice is just...weird compared to all of our other microservices. It's written in asynchronous Javascript, so it can't share any code with the other normal Python-based microservices, and it must duplicate a lot of the code found in our Python st2client. This leads to more complicated development and release processes, since we have to keep st2client.js, hubot-stackstorm, and st2chatops all up-to-date and in-sync with the rest of the ST2 repositories.
I propose that we look into Python-based ChatOps bots as a base to use for future st2chatops. Two that people have told me about at ErrBot and OpsDroid, both are Python projects.
- ErrBot is awesome, and @nzlosh in the community has done a literally exceptional job at authoring and maintaining the err-stackstorm plugin for ErrBot. Blessing this project as official and possibly pulling it into the StackStorm organization would drastically decrease the amount of work we would have to do to convert over to using that. The two major missing features compared to hubot-stackstorm are: MS Teams support and support for ST2 inquiries. One drawback of using Errbot is that it is licensed under the GPL, although its license explicitly allows non-GPL plugins to be distributed alongside it.
- OpsDroid is another, up and coming Python project. It isn't as full featured or as polished as ErrBot, but it does support the latest and greatest - it is Python 3 only, and it uses the
asyncio
framework in the Python standard library, and it supports more our normal regex-based parsers, but it also support more complex NLP/NLU systems to match messages. Getting this to work with StackStorm would be more involved than ErrBot, but would enable a next-generation ChatOps architecture with StackStorm. Upstream is also very responsive, and PRs get feedback quickly. It also does not yet support Microsoft Teams. It is licensed under the Apache 2, so we won't have any questions about distributing it, or including it in our distribution.
I'd like to give a huuuuuge shoutout to @nzlosh, as almost all of this is based on conversations I've had with him, and he has done a lot of investigating into this subject on my behalf. Thank you for your work!
Metadata
Metadata
Assignees
Type
Projects
Status