wiki:Notifications

Version 66 (modified by davea, 15 years ago) (diff)

--

TOC?

GUI notices

Goals

The goal is to create a way to notify users of events that either requiring their attention or are likely to interest them. Examples include:

  • Conditions in the core client requiring user attention (messages with mode MSG_USER_ERROR)
  • New client version available
  • High-priority messages from the scheduler (e.g., no jobs because too little disk allocated, wrong driver version, etc.)
  • Web notifications such as friend request or confirm, private message, posting to subscribed thread, etc.
  • Project news (scientific, credit milestones, etc.)
  • An RSS feed specified by the project or the user.

User interface

The Messages tab will be renamed the "Event Log". It will be available via a menu item rather than a tab.

Notices will be shown in a new Notices tab. They will be displayed in HTML. The 10 most recent notices will be displayed, with a button to show all notices in the last month. Like messages, each will have a timestamp and a project. Buttons will let users filter by project and select notices.

When there is a new notice, a balloon appears over the system tray icon for 10 seconds. It will show the type of the notice. Clicking on the balloon will open the Manager in the Notices tab.

The default BOINC screensaver will display new notices. Notices are classified as "private" and "public"; e.g., private messages and friend requests are private. The screensaver will show only public messages.

Message architecture

Notices are conveyed as time-ordered RSS feeds.

Scheduler replies include a list of URLs to poll for notices. The client polls these URLs and saves the results in files. The client saves scheduler messages and its own messages in files.

Some of the URLs may contain the user's authenticator. In response to a scheduler RPC with a weak authenticator, the scheduler supplies only URLs for public notices, and passes the weak authenticator.

GUIs (Manager and screensaver) periodically polls the client for new messages via GUI RPC.

RSS items have two timestamps:

  • source timestamp: for remote items, the source's timestamp
  • client timestamp: when the client first received this item

RSS items may contain a GUID.

The client maintains a "last source timestamp" for each feed. Each feed request can optionally containt this timestamp, and the feed returns only items with later timestamp.

GUIs poll items based on client timestamp.

Implementation

Localization

Strings of the form _(...) in message body are localizable.

Feed List

Scheduler replies can include a feed list. Example:

<notification_feeds>
    <feed>
        <url>http://www.example.com/notify_rss.php</url>
        <name>Project Notifications</name>
        <update>86400</update>
    </feed>
    <feed>
        <url>http://www.example.com/science_blog_rss.php</url>
        <name>Science Blog</name>
        <update>86400</update>
    </feed>
</notification_feeds>

Property table:

update
Number of seconds in between updates
application_only
Feed is used by the project application and should not be shown in BOINC Manager or the BOINC Screen saver. The contents of the feed should be written to the init_data.xml file in the slot directory before the application is launched.

BOINC has several built-in community defining features and feedback mechinisms. The notification system should attempt to reuse as much of it as possible.

Default project feed

This feed generates

  • Project Messages
  • Project News
  • Private Messages
  • Friend Requests
  • Friend Confirmations
  • Forums
  • Forum Threads

Other useful messages might be milestones and anniversaries. Either could contain a link to a certificate generated on demand that the volunteer could print out.

The URL is:

http://<project_url>/notify_rss.php

Categories

  • Project news
  • Private message
  • Friend request
  • Friend confirmation
  • Forum update
  • Thread update
  • Scheduler notice
  • Client notice

Scheduler Reply

Example:

<scheduler_reply>
    <notification_feeds>
        ...
    </notification_feeds>
    <channel>
        ...
    <channel>
</scheduler_reply>

BOINC Project Website

A new entry in the Preferences section of the Your Account area will be created to manage all the feeds a volunteer is currently subscribed to.

This new section should allow the volunteer to change the refresh rate for any feed they want to be notified about.

It should also allow them to disable any feed.

BOINC Core Client

Feed Storage

All data related to the notification system will be stored in a directory off of the main data directory.

Item Naming convention
Feed directory feeds
Feed list feed_list.xml
Feed "feed_" + escape_project_url(feed_url) + ".xml"

GUI RPCs

get_feed()

Enumerates all the feed items for a given feed as well as provides the properties for a given feed item.

Parameters:

Parameter Type Meaning
project_url string Specify which project should the feed metadata be returned for.

Notes:

  • If both project_url and feed_url are empty, the BOINC Action Feed stream is returned.
  • Requests for private feeds should return an error.
  • This RPC should not require authentication.

get_private_feed()

Enumerates all the feed items for a given feed as well as provides the properties for a given feed item.

Parameters:

Parameter Type Meaning
project_url string Specify which project should the feed metadata be returned for.

Notes:

  • This RPC requires authentication.

BOINC Manager

Options Dialog

Taskbar Notifications

Taskbar example

Advanced View

Simple View

TBD

BOINC Screensaver

Attachments (2)

Download all attachments as: .zip