FrackIM -- Prospective Search on Google AppEngine Demo

FrackIM implements something like an IM "party-line" where everyone shares a common conversation but can only see those parts of the discussion that they have asked to see. To specify what you'd like to see, you can "Follow" a particular publisher or you can "Track" any message whose content matches a query you provide. Anything you type into a chat session with FrackIM (unless it is a special command -- prefaced by "/") will be sent to all other FrackIM users who have expressed an interest in what you typed. Similarly, you'll see anything that anyone else types -- if you've asked for it.

Not all messages which can be 'fracked' are from people. Some messages come from updates that are received from a variety of feeds monitored via PubSubHubbub hubs. To see a list of these feeds, look at the list of monitored feeds. If you are the administrator for this service, you can add or delete feeds by using the Custom "Manage PSHB Feeds" page on the application's Dashboard page.

If you'd like to try FrackIM, first add the following JID to your buddy list in whatever XMPP client you use:

frackim@appspot.com

Source Code

Source code for this app is available at: http://code.google.com/p/frackim/

The Basics

You can express an interest by either "Follow"ing anything that is written by some known contributor to the stream of messages or by "Track"ing anything that contains particular words or phrases.

If you are primarily interested in who said something, you can Follow them by creating a subscription that constrains the "follow" attribute of messages. For instance:

/subscribe follow:bob@example.com
would ensure that you received any message published by bob@example.com and
/subscribe follow:huffingtonpost.com
would ensure that you received any message published by any feed hosted on "huffingtonpost.com" that FrackIM might be monitoring via PubSubHubbub.

If you don't care about who said something, but are more interested in what was said, you would Track by creating a subscription that constrains the "track" attribute of messages. For instance:

/subscribe track:"Prospective Search"
would ensure that you received any message that contained the phrase "Prospective Search".

Of course, you can follow and track at the same time! To see only messages sent by Bob which contain the word "rose" issue the following command:

/subscribe follow:bob@example.com track:rose
If, for some reason, you are only interested in "short" messages from someone, you can limit the "size" of messages you'll receive in the following manner:
/subscribe follow:bob@example.com size < 140

In order to get a list of your current subscriptions, just use the "/list" command:

/list
if you have any current subscriptions, this should list them out as well as show their temporary subscription ids -- like so:
  [1] track:rose
  [2] follow:bob track:foobar size > 10
When you're no longer interested in a particular subscription, first list your subscriptions to discover the current index number for the subscription from which you would like to unsubscribe and then use the /unsubscribe command. For instance, to unsubscribe the first subscription listed above, you would type:
/unsubscribe 1 
Note: Commands may be abbreviated to their first letters. Thus, the following are all supported commands:
/h, /s, /u, /l

Subscription query language details

Fields

Three fields are supported. They are:

Text operators

Track fields can be matched for the occurrence of a word or phrase anywhere in the message's text. To match on a multi-word phrase, use quotes. For example:
/subscribe track:horse
/subscribe track:"horse riding"

Note: Each term or phrase that you specify may be prefaced by the attribute that that it is in. For example, if you want anything that mentions both "Google Earth" and "Buzz," then you would subscribe to:

/subscribe track:"Google Earth" track:"Buzz"
If you don't explicitly specify the attribute to which you are subscribing, then FrackIM will look in all fields. For example:
/subscribe huffington
would match any message that contains the word "huffington" in either the track or follow attribute./

Logical operators

Track and Follow predicates can be combined with the NOT, OR and AND operators. "AND" is assumed to be the intended operator if none is specified.
Terms and groups of terms with operators can also be grouped using parenthesis. For example:
track:flower AND track:"rose petal"
(track:bar AND track:foo) OR track:foo@example.com
follow:bob NOT track:rose
follow:bob@example.com (NOT track:rose)
NOTE: NOT, OR, and AND must be all-caps.

Numeric Operators

Supported numeric operators are:
 <, >, <=, >=, = 
For example:
size < 100
NOT (size = 100)
follow:bob@example.com size > 10