About Mimír
Mimír is a Jabber enabled news service. It collects news from various sources and notifies its users when new news items have been found or holds them for later reading, based on their presence.
Interaction from the user's point of view
A user has two interfaces into Mimír: a web site and the Jabber news bot. The bot monitors the user's presence and sends messages to the user when appropriate according to personal preferences. The website is where the user can configure his preferences, select channels to subscribe to, and read unread or bookmarked news items.
Among the preferences is a selection of the set of presence states for which
the user can be sent notifications. The default set contains the
online and chat Jabber presences. This means that
when a user is online, the bot will directly send notifications of newly
discovered news items for the channels the user is subscribed to. However, if
the user is away, the new item will be marked as being unread by the user. The
user can at all times view his unread items at the Mimír web site on his
personal news page.
See the User Manual for more information on the user interactions with clear screenshots.
Inner workings
Basic operation
Besides monitoring end users' presence and sending off notifications, the news bot also consumes incoming news. This news is provided via publish-subscribe over Jabber. Each news channel is represented by a publish-subscribe node to which the news bot is subscribed.
As soon as a news source has a new news item available, it will publish this item to its publish-subscribe node and the news bot will receive an immediate notification from the corresponding publish-subscribe service. The item will be stored in a database and the bot will consult user subscriptions and presences and send a notification or mark the item unread.
Non-pubsub news sources
At this moment, there are not many news sources that provide their news directly via publish-subscribe over Jabber. To accomodate this, an special feed aggregator has been created. It periodically polls RSS and Atom feeds to discover new items. Those items will then be published to a publish-subscribe node on behalf of the actual news source. This way the aggregator proxies news sources as if they were publish-subscribe enabled.
Components
The actual components used in the current setup are shown in graphic below. Note that all components can be distributed across different Jabber servers.
News Bot
The news bot is written in Python using the Twisted framework.
Database
News items, user information and presence are stored in a PostgreSQL database.
Website
This site is implemented in PHP using the Apache HTTP server. It uses Smarty Templates and some parts of PHPLib.
Aggregator
The aggregator is also written using Twisted and utilizes a slightly adapted Universal Feed Parser for parsing Atom and RSS feeds. The feedparser also consumes malformed feeds and sanitizes entries while at it, stripping it from harmful content such as javascript, styles, etc. As mentioned above, the aggregator is just another news source.
Publish-subscribe service
The local publish-subscribe service that holds the nodes that are fed by the aggregator is called Idavoll and is again implemented using Twisted. Note that external news sources may host their own publish-subscribe services.
Hosting
Mimír is currently running on a FreeBSD machine called mag.ik.nu.
What is Mimír?
Mimír is one of the ancient Norse deities. He is the wisest god of the Æsir.
Contact
You can apply for this site with ralphm (JID: ralphm@ik.nu).

