Fedora Notifications

Fedora Notifications is a family of systems built to manage end-user
notifications triggered by fedmsg, the fedora FEDerated
MeSsaGe bus.

The wins here are:

Diverse kinds of notification media: Some users don't want email. At present
we can do notifications over email and IRC privmsg. In the future we hope to
add Android push notifications, desktop popups, and websocket integration
across all of our apps.

A single place for end-users to manage notification preferences: As it stands
right now, you have to update notification preferences (if you can do so at
all) in many different apps in many different places. (bodhi, koji, pkgdb,
etc..). With this app (Fedora Notifications), you can choose what you do and
don't want to receive in one place -- right here.

A single place for email code to live -- instead of being duplicated in every
application that we write and deploy. This will ostensibly reduce the amount
of code that the infrastructure team has to maintain.

In a nutshell, here's the way this application works:

You login and set up some preferences here, in this webapp.

Events occur in Fedora Infrastructure and are broadcast over fedmsg.

This application receives those events and compares them against your
preferences. If there's a match, then it forwards you a notification.

We maintain a lot of applications. Over
time, there has been an initiative to get them all speaking a similar language
on the backend with fedmsg. Take a look at the list of fedmsg topics to see what all is covered.

Some Terminology

Rule

This is smallest, most atomic object in the Fedora Notifications system. It is
a simple rule that can be applied to a fedmsg message. It can evaluate to
True or False.

It has a name and a description. Some examples of rules are:

"is a bodhi message"

"is a wiki edit message"

"relates to the user lmacken"

"relates to the package nethack"

"relates to a package owned by me in pkgdb"

We have a long list of rules defined. You'll see them when you go to set up
your first filter

Filter

To craft your preferences, you will build filters out of rules. Filters have a
name (that you give them). An example could be something like:

My bodhi packager filter

"is a bodhi message"

"relates to a package that I own"

You will receive notifications for this filter if and only if a given message
both is a bodhi message and is about a package owned by you.

Note that, if you wanted to get notifications about bodhi updates created by
multiple users, you would need to create distinct filters for each one.

My bodhi lmacken filter

"is a bodhi message"

"relates to the user lmacken"

My bodhi toshio filter

"is a bodhi message"

"relates to the user toshio"

You could not combine those both into the same filter, because all rules on a
filter must evalulate to True for the filter to trigger a notification.

Messaging Context

This is the medium over which we'll send a message. You can have one set of
preferences for an email messaging context, and another set of preferences for
an irc messaging context.

When a fedmsg message arrives in the system, if any one filter on one of your
messaging contexts evaluates to True, then you will receive a notification
for that context. If some filters evaluate to True for multiple contexts,
you will receive notifications for all those contexts.

Dénouement

You can report issues and find the
source on github.
The development team hangs out in #fedora-apps. Please do stop by and say
hello.