Rules in FMN consist of several components: One Tracking Rule, and potentially many Filters and Destinations (grouped into Generation Rules). The Message Consumer looks at all messages transported over the bus and if any match a Rule, Notifications will be sent to the respective Notification Sender, one instance of each is responsible for actually sending out emails and chat messages over IRC or Matrix, respectively.

Tracking Rules

Each Rule has exactly one Tracking Rule which specifies what messages should be tracked, e.g. messages that concern:

  • Artifacts owned by the user or a group the user is member of,

  • specific named artifacts,

  • the user themselves, or

  • followed users.

If a Tracking Rule matches, its Generation Rules will be consulted for further processing.

Generation Rules

Each Rule contains one or more Generation Rules which group together zero or more Filters and one or more Destinations. If no Filters exist, or all of them match, Notifications will be created for each Destination which are processed by the respective Sender.

This lets users e.g. specify that messages of a lower severity should be sent via email, while higher severities should let FMN ping the user via IRC or Matrix.


Filters further restrict if a message should be matched by a Rule and notifications should be sent. Users can configure filters for these criteria:

  • The name of the application sending a message.

  • The severity(*) of the message.

  • If a message was caused by an action of the user.

  • If the message topic matches a certain glob pattern.

(*): At this point, we don’t know that any app in Fedora infrastructure tags its messages with a severity, which makes them default to INFO.


A Destination contains information about how a user should be notified if a Rule matches, e.g. via email, IRC or Matrix. The destinations available to a user are retrieved from their account and can be configured in Noggin.