There are also protocol extensions: PubSubHubbub provides a scalable way of getting near-realtime updates from an Atom feed. The Atom feed includes a link to a “hub”. An aggregator can then register with hub to be notified when a feed is updated. When a publisher updates a feed, it pings the hub and the hub then updates all the aggregators that have registered with it. This is intended for server-based aggregators, since the hub uses HTTP POST to notify aggregators. Salmon makes feed aggregation two-way. Suppose user A uses only social networking site X and user B uses only social networking site Y. If user A wants to network with B, then typically either A has to join Y or B has to join X. This pushes the world in the direction of having one dominant social network (i.e. Facebook). In the long-term I don’t think this is a good thing. The above extensions solve part of the problem. X can expose a profile for A that links to an Atom feed, and Y can use this to provide B with information about A. But there’s a problem. Suppose B wants to comment on one of A’s entries. How can Y ensure that B’s comment flows back to X, where A can see it? Note that there may be another user C on another social networking site Z that may want to see B’s comment on A’s entry. The basic idea is simple: the Atom feed for A exposed by X links to a URI to which comments can be posted. The heavy lifting of Salmon is done by Magic Signatures. Signing the Atom entries is the key to allowing sites to determine whether to accept comments.