Skip to content

Proposal: ChatOps User Survey #19

@blag

Description

@blag

This is a follow up to #8.

I'm opening this proposal to gather questions we would like to ask users about ChatOps.

Motivation

We would like to gather feedback from users about exactly how they use ChatOps to determine if a more integrated, Python-based implementation would better serve their use cases, or if we should continue to develop the current separate, Javascript-based hubot-stackstorm implementation.

Potential Survey Questions

Here is the initial list of questions that I have come up with:

  • How long have you been using StackStorm and/or EWC?
    • 0-6-months
    • 6-12 months
    • 1-2 years
    • 2+ years
  • How large is your organization?
    • 1-10
    • 10-100
    • 100-1000
    • 1000-10000
    • 10000+
  • How many ChatOps users within your organization do you have?
    • 1-10
    • 10-100
    • 100-1000
    • 1000-10000
    • 10000+
  • Do you use StackStorm-flavored ChatOps?
    • Yes
    • No
  • If you don't use ChatOps, what are the blockers in your adoption? (select all that apply)
    • Missing chat adapter
    • No RBAC
    • No HA
    • Buggy, not stable enough
    • Haven't tried it yet
    • Didn't work
    • Other (please specify)
  • Do you currently use any chat bots outside of StackStorm?
    • Yes
    • No
  • Have you written any chat bots outside of StackStorm?
    • Yes
    • No
  • Which domain/s are you using ChatOps in? (select all that apply)
    • Network
    • Security
    • Infrastructure
    • Cloud/SaaS
    • Other (please specify)
  • How do you use StackStorm's ChatOps? (select all that apply)
    • Action aliases
    • Integrating hubot-stackstorm into a custom hubot bot
    • Using err-stackstorm with Errbot
    • Something else (please explain what you do)
  • What types of tasks do you commonly execute/use via ChatOps? (select all that apply)
    • One-way notifications
    • Querying systems/statistics
    • Perform arbitrary StackStorm actions
    • Teach/collaborate with other team members
    • Start deployments
  • How important is user-defined ChatOps in your organization?
    • Mission critical
    • Makes things easier/faster/more efficient
    • Just another way to run commands
    • We have a few aliases, but nobody uses them
    • ChatOps is configured, but nobody has made any aliases
    • ChatOps isn't even configured or installed
    • Hinders actual work
  • What chat provider/s do you currently use with StackStorm ChatOps? (select all that you currently use)
    • Slack
    • Mattermost v4
    • Mattermost v5
    • Rocket.chat
    • Cisco Spark or Webex Teams
    • Microsoft Teams (via BotFramework)
    • HipChat
    • Something else (please explain)
  • If you are considering changing your chat provider/s which one/s are you currently considering? (select all that apply)
    • Slack
    • Mattermost v4
    • Mattermost v5
    • Rocket.chat
    • Cisco Spark or Webex Teams
    • Microsoft Teams (via BotFramework)
    • HipChat - not including this one, since it's reaching EOL on June 30th, 2020 and we're ripping out the adapter then as well
    • Something else (please explain)
Excessive for Survey. Click to expand.
  • What ChatOps alias features have you used/are currently using? (select all that apply)
    • Using the !help command in a ChatOps channel
    • Alias formats
      # Simple usage
      formats:
        - run {{ cmd }} on {{ hosts }}
      # Complex usage
      formats:
        - "execute order 51"
        - display: "run {{ cmd }} on {{ hosts }}"
          representation:
            - "(run|execute) {{ cmd }}( on {{ hosts=localhost }})?[!.]?"  # timeout parameter not explicitly listed
            - "run remote command {{ cmd }} on {{ hosts }}"
      immutable_parameters:
        timeout: 30  # seconds
        sudo_password: "{{ st2kv('system.dev_server_sudo_password', decrypt=true) }}"
    • Using additional ChatOps parameters in workflows
      tasks:
        task1:
          action: core.echo
          input:
            message: "[<% ctx().source_channel %>] <% ctx().action_context.api_user %> (<% ctx().action_context.user %>)"
    • Automatic acknowledgements
      # Simple usage
      ack:
        format: "acknowledged!"
      # Complex usage
        ack:
          format: "Executing `{{ actionalias.ref }}`, the execution ID is `{{ execution.id }}`"
          enabled: false
    • Result formats
      # Simple usage
      result:
        format: |
          Ran command `{{ execution.parameters.cmd }}` and {{ execution.result | length }} hosts.
      
          Details are as follows:
          {% for host in execution.result -%}
              Host: `{{ host }}`
              ---> stdout: {{ execution.result[host].stdout }}
              ---> stderr: {{ execution.result[host].stderr }}
          {%+ endfor %}
      # Complex usage
      result:
        format: |
          Action completed!
          {~}
          Ran command `{{ execution.parameters.cmd }}` and {{ execution.result | length }} hosts.
      
          Details are as follows:
          {% for host in execution.result -%}
              Host: `{{ host }}`
              ----> stdout: {{ execution.result[host].stdout }}
              ----> stderr: {{ execution.result[host].stderr }}
          {%+ endfor %}
        enabled: true
    • Attachments with extra (Slack, Mattermost, and Rocket.chat)
      # Simple usage
      result:
        # ...
        extra:
          slack:
            image_url: "https://i.imgur.com/Gb9kAYK.jpg"
            fields:
              - title: Kitten headcount
                value: Eight.
                short: true
              - title: Number of boxes
                value: A bunch.
                short: true
            color: "#FF0000"
      # Complex usage
      result:
        # ...
        extra:
          slack:
            image_url: "https://i.imgur.com/Gb9kAYK.jpg"
            fields:
              - title: Kitten headcount
                value: Eight.
                short: true
              - title: Number of boxes
                value: A bunch.
                short: true
            color: "{{ execution.parameters.color }}"
          mattermost:
            color: "{{ execution.parameters.mm_color }}"
          rocketchat:
            color: "{{ execution.parameters.rc_color }}"
          audit: true  # additional property, passed directly to chat provider adapter
    • Inquiries with ChatOps
    • Looked through ChatOps logs
    • Using ChatOps behind a proxy
    • Using an external chat adapter like hubot-yammer
    • BYO Hubot (eg: Bring Your Own Hubot) by using hubot-stackstorm in your own hubot instance
  • For any current ChatOps features that you have not used yet, do you expect to use any features in the future? (select all that apply)
    • Using the !help command in a ChatOps channel
    • Alias formats
      # Simple usage
      formats:
        - run {{ cmd }} on {{ hosts }}
      # Complex usage
      formats:
        - "execute order 51"
        - display: "run {{ cmd }} on {{ hosts }}"
          representation:
            - "(run|execute) {{ cmd }}( on {{ hosts=localhost }})?[!.]?"  # timeout parameter not explicitly listed
            - "run remote command {{ cmd }} on {{ hosts }}"
      immutable_parameters:
        timeout: 30  # seconds
        sudo_password: "{{ st2kv('system.dev_server_sudo_password', decrypt=true) }}"
    • Using additional ChatOps parameters in workflows
      tasks:
        task1:
          action: core.echo
          input:
            message: "[<% ctx().source_channel %>] <% ctx().action_context.api_user %> (<% ctx().action_context.user %>)"
    • Automatic acknowledgements
      # Simple usage
      ack:
        format: "acknowledged!"
      # Complex usage
        ack:
          format: "Executing `{{ actionalias.ref }}`, the execution ID is `{{ execution.id }}`"
          enabled: false
    • Result formats
      # Simple usage
      result:
        format: |
          Ran command `{{ execution.parameters.cmd }}` and {{ execution.result | length }} hosts.
      
          Details are as follows:
          {% for host in execution.result -%}
              Host: `{{ host }}`
              ---> stdout: {{ execution.result[host].stdout }}
              ---> stderr: {{ execution.result[host].stderr }}
          {%+ endfor %}
      # Complex usage
      result:
        format: |
          Action completed!
          {~}
          Ran command `{{ execution.parameters.cmd }}` and {{ execution.result | length }} hosts.
      
          Details are as follows:
          {% for host in execution.result -%}
              Host: `{{ host }}`
              ----> stdout: {{ execution.result[host].stdout }}
              ----> stderr: {{ execution.result[host].stderr }}
          {%+ endfor %}
        enabled: true
    • Attachments with extra (Slack, Mattermost, and Rocket.chat)
      # Simple usage
      result:
        # ...
        extra:
          slack:
            image_url: "https://i.imgur.com/Gb9kAYK.jpg"
            fields:
              - title: Kitten headcount
                value: Eight.
                short: true
              - title: Number of boxes
                value: A bunch.
                short: true
            color: "#FF0000"
      # Complex usage
      result:
        # ...
        extra:
          slack:
            image_url: "https://i.imgur.com/Gb9kAYK.jpg"
            fields:
              - title: Kitten headcount
                value: Eight.
                short: true
              - title: Number of boxes
                value: A bunch.
                short: true
            color: "{{ execution.parameters.color }}"
          mattermost:
            color: "{{ execution.parameters.mm_color }}"
          rocketchat:
            color: "{{ execution.parameters.rc_color }}"
          audit: true  # additional property, passed directly to chat provider adapter
    • Inquiries with ChatOps
    • Looked through ChatOps logs
    • Using ChatOps behind a proxy
    • Using an external chat adapter like hubot-yammer
    • BYO Hubot (eg: Bring Your Own Hubot) by using hubot-stackstorm in your own hubot instance
  • What new feature/s would you like to see in ChatOps?
    • Better integration with the rest of StackStorm
    • Easier configuration/troubleshooting
    • HA
    • Threaded conversations/responses
    • Uploading files via ChatOps
    • Ability to query and post graphs and diagrams
    • RBAC for ChatOps
    • Better inquiries support
    • NLP (natural language processing) or NLU (natural language understanding)
    • More interactivity options in action aliases (Slack blocks, MS Teams cards, etc.)
    • Other (please specify)
  • Rank these new features, with the most important feature at the top (if you don't care, you can leave the ranking blank)
    • Better integration with the rest of StackStorm
    • Easier configuration/troubleshooting
    • HA
    • Threaded conversations/responses
    • Uploading files via ChatOps
    • RBAC for ChatOps
    • Better inquiries support
    • NLP (natural language processing) or NLU (natural language understanding)
    • More interactivity options in action aliases (Slack blocks, MS Teams cards, etc.)
    • Other (please specify)
  • What does StackStorm get right with its ChatOps implementation?
  • What does StackStorm get wrong with its ChatOps implementation?
  • Is there anything we should do to make it easier to use ChatOps with StackStorm?
  • Is there anything we absolutely should NOT do regarding ChatOps in StackStorm?
  • Would you be willing to have a deeper discussion with us about your ChatOps use case/s?
  • Would you be willing to help us refactor, redesign, develop, or test new ChatOps features?

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions