7 open source frameworks for ChatOps compared

by Bill Doerrfeld

You’ve heard all the praise for ChatOps; now you’re interested in an actual implementation. But where should you start? Though ChatOps is a business philosophy, an efficient technical architecture is what makes it truly worthwhile.

Think of a ChatOps workflow as being composed in three-part harmony:

  1. A chatbot, such as Hubot.
  2. A chat server, or client, such as Slack.
  3. Integrations with DevOps tooling.

When these elements work together, ChatOps becomes a powerful approach to incident resolution, software deployment, the need to support and improve company culture, and more.

Luckily, you can use open source software in the form of bot frameworks, scripts, and other integrations to get started quickly with ChatOps. Here are the most active open source bot frameworks that you should consider for use in your ChatOps environment.

The chatbots

In ChatOps, chatbots are commonly placed in a company chat room to automatically initiate commands and provide interactive capabilities. These bots don't usually come pre-configured with much that is useful, but they are extensible with custom scripting and community libraries. These are the most common open-source bots available today. I've also added the scripting language each uses in parentheses.

Hubot (CoffeeScript)

Github's Hubot has been described as a “a customizable life embetterment robot.” You initiate it with commands written in CoffeeScript. You can also leverage an expansive library of scripts generated by the community.

Lita (Ruby)

Described as a companion for your company’s chat room, Lita was built with Ruby and similarly boasts a wide list of community plugins. View the Lita API reference for types and methods, helpful for plugin design.

Errbot (Python)

Errbot is another bot to bring tools into a chat conversation. With Python usability, users extend Errbot by creating a plugin using a class in BotPlugin. Errbot comes with multiple server backends, and access control features. You can download the open source code for Errbot here.

Nestor (JavaScript)

Nestor is a programmable bot for Slack. You can use its library of “powers” to connect tooling, or you can use the Nestor Javascript API to code custom bot powers, which can also be imported from Hubot scripts. It's available on Github.

Jarvis (JVM)

Designed by CA Technologies, Jarvis is a Hubot alternative designed to reap the full power of the chat client Flowdock, with an intelligent AI to infer information. Since Jarvis functions on the JVM, users can script plugins in Groovy, Java, Clojure, and other JVM languages.

Lazlo (Go)

You initiate Lazlo with text commands inspired by an IRC chat scenario. Lazlo behaves like an event broker between plugins and a chat room, making it easy to write modules for ChatOps. It can be extended with Hubot-like plugins written in Lua.

Chato.ps

Developed by Wiredcraft to simplify the Hubot experience, Chato.ps offers creation and customization of Hubots as a service. While Chato.ps isn’t open-source, it’s free to start and could be a fit for novice developers.

“The underlying technology of ChatOps relies heavily on the use of Application Programming Interfaces (APIs)"

- Jason Hand, ChatOps Managing Operations with Group Chat

Uniting the chat platform and DevOps tooling

When choosing a bot, you must at the same time settle on a chat client (or call it a server). That might be Slack, Hipchat (now Stride), Flowdock, Basecamp, or IRC. Any of these will work with the right pairing of tools.

By using existing plugins or custom scripts for the bot framework, teams can connect and automate behaviors with the Ops tools they already use. This could be infrastructure monitoring via DataDog, deployments with TravisCI, updating a database with Graphite, or many other operational tools.

Great compatibility, plus community support

You can leverage a lot of useful third-party tooling in with ChatOps. And using an open source bot is not only great for cross-chat-platform compatibility, but comes with helpful community support as well.

You can adopt webhooks for sending read-only data, but there are limitations with simple read-only integrations. To go beyond a single call and response, chatbots are the answer.

Further reading

For an example of a specific ChatOps technology stack, see how Bigpanda.io is using Hipchat, Hubot, and Ansible in its ChatOps environment.