For those techno geeks, push and pull concept will be no foreign term. While in pull model such as HTTP server and client design, contents are served by server when client requests for contents. Even when new contents are available on the server, unless client requests for them, they are not served to client. Hence pull model is also known as polling because in order to find out whether there's any update, client has to poll the server periodically to get the latest.
In contrast, push model says to client, "hey client, leave your URL at server, and we'll call you back when contents become available." Makes lot of sense just as you'd leave your callback phone number when you reach voicemail instead of calling every minute to see if the recipient picks up (although I still see this practice by some folks...).
Besides push model being more logical and economical solution overall, whole Social Network will not be as compelling without this glaringly simple concept of pushing contents to subscribers. In fact I would argue this push model is what made Facebook so successful (I wrote about this as #2 factor in Facebook's success). Why?
Before I talk about Facebook's clever use of push model, I want to rewind the clock back to 1996 when PointCast Network was making splash on press coverage with its push capability. Yes, the entire business model of PointCast was pushing newsfeed to custom built client on subscriber's desktop. When you log in to your desktop, you'll be instantly greeted with news from around the world (well of course occasional advertisements were sprinkled as well). It's like receiving daily electronic newspaper but on your CRT monitor! Press realized the power of push model immediately. Alas it was ahead of its time by just about 10 years, not to mention handicapped by poor management team. Back in mid 90's bandwidth and infrastructures were just not fat enough to sustain this great idea.
The key idea that PointCast had were twofolds: aggregating electronic news contents and magical delivery of contents to user's desktop.
Now come all the way back to the future in 2010. Now we take it for granted that we can see all our friends' status update when we log on to Facebook home page. But it's really push model working at friend-to-friend connection level. Facebook is letting me subscribe to friend's activity when I befriend someone (let's call him John). In effect I'm becoming subscriber to John's push notification. And when all my friends' news are summed up, it's like compiling all my friends' news and pressing a custom newspaper for me each time I visit Facebook home page.
Now communication is two way because I can react to John's news by commenting on it. Guess what? John is subscriber of my news as well because we are each other's friend. So when John logs back or stays logged on Facebook (remember second idea from PointCast: magical delivery of contents), he sees my comment instantly showing up on his LCD display.
If you are still unsure of power of all these pushing, consider this. Facebook just expanded 'like' external widget capability to allow publishers to push data back to likers (one who clicked 'like'). In other words, all third party websites now can push contents to anyone who clicked 'like' button using Facebook home page. I agree with Nick O'Neill on his recent article; this is huge expansion that people haven't fully appreciated. This mean non-Facebook sites can function as Facebook Pages with fans by serving updates directly to fan's home page. Now whatever pages that you showed interest with 'like' button, will be woven into your newspaper where publishers can sneak in targeted informercials.
PointCast to Facebook. We've certainly come a long way, but overall theme hasn't changed: It's all about push.
I want to mention Minwoo's technical correction to my use of push and pull. As Minwoo correctly points out, Facebook is not really using true push implementation where client is notified without making a request first. Instead Facebook currently uses long-poll, one that simulates push behavior using AJAX. To be technically correct, I should have mentioned pubsub (publish-subscription) model when talking about newsfeed.
ReplyDeleteThank you, Minwoo, for your comment.