Wubot::Guide::Overview - wtf is wubot?


'wubot' is the code name for a distributed personal reactive automation tool I've been working on for the last several years. It is built in modern Perl 5 using Moose, AnyEvent, LWP::UserAgent, YAML, DBI, DBD::SQLite, Mojolicious, and many others.

The simplest way to think of this project is to compare it to email filters. Most email clients allow you to set rules to perform actions when a new email arrives.

This project allows you to have a set of monitors that collect data from a variety of sources, including:

  - email boxes
  - RSS/Atom feeds
  - IM
  - log files
  - system monitors
  - OS X idle time
  - local sunrise/sunset times
  - monitors running on remote hosts
  - your own custom monitor plugin written in perl

For more info, see: Wubot::Guide::MonitorPlugins

Data collected from each monitor is sent through a set of rules that can perform actions such as:

  - pop up an alert, e.g. using Growl
  - send a colorized message to stdout
  - store the message in a mailbox
  - add the message to a SQLite database
  - store data from the message in RRD and graph the data over time
  - add the message to outgoing RSS feeds
  - send a private or public message to IRC
  - forward the message to another host for further processing
  - your own custom action written in perl
  - ignore the message, the equivalent of routing it to /dev/null

For more info, see: Wubot::Guide::ReactorPlugins

Beyond just doing something with the message or portions of the message, you also have the option to modify the message, e.g.:

  - set a color to be used for notifications
  - transform some field in the message with a regexp
  - capture data from a field and store it in another field
  - strip images or HTML
  - fetch related content, e.g. fetch a complete article if the feed only provides a summary

Unlike previous generations of this project, the rules are entirely controlled by configuration. So it is not necessary to write any perl code to use the rules. In the future there will be a user interface for configuring the rules. See Wubot::Guide::Rules.

Rules can be nested, so that when a rule matches, it can cause additional sub-rules to run. Nesting rules makes the rules processing much more efficient so that not every rule needs to be run on every message. Rules processing is recursive so rules can be nested arbitrarily deep. For more information on rule conditions, see Wubot::Guide::Conditions.

Distributed operation currently relies on XMPP. Using XMPP, messages can be sent between wubot instances on multiple hosts. Monitors generate messages that may be reacted upon locally, and/or may be forwarded to other hosts for further reaction. See Wubot::Guide::MultipleBots.

This project is still under construction.

To get started, see Wubot::Guide::GettingStarted.

Lots more to come...

1 POD Error

The following errors were encountered while parsing the POD:

Around line 47:

=back without =over