In light of the recent announcement that Sun Microsystems and Microsoft would stop their bickering and play nicely with each other, I thought it only appropriate to write my first entry on java.net about the need for software that knows how to be social and play well with others. Social networking systems, despite being the new Hot Technology to grab the attention of Valley venture capitalists, are lately being subjected to a healthy dose of criticism: for systems designed to help people interact, why cant any of the systems interact? And why have the systems overlooked some of the most obvious functionality a user or a developer might want?
The design of the current breed of social networking software repeats the mistakes of another social technology: instant messaging. Whether you chose to use ICQ, AIM, Yahoo! Messenger, or MSN Messenger as your messenger of choice, one thing became abundantly clear the minute you clicked "I agree" to the End User License Agreement you were part of their system now. Instant messaging companies put a wall around their users by design, and they liked it that way. For one thing, it gave them a chance to figure out how they were going to make any money at least until astute companies like Jabber and Cerulean Studios figured out that instant messaging companies had overlooked the fact that people using different chat systems still wanted to chat with each other! Imagine that!
Social networking systems have followed a similar path, coding users into the very same corner, building high and thick walls between their communities and discouraging the very activities for which they claim they were designed. Social networking systems are pathologically anti-social on three fronts: their lack of functionality, lack of a web services API, and lack of federation.
Lack of Functionality
People have different kinds of relationships: some of their colleagues are friends, some of them are business acquaintances, and some of them are random people they only seem to run into when neither of them has a pen. One would think that the ability to categorize and segment classes of relationships would be a central requirement for a social networking system. Unfortunately, not one of the social networking systems Ive used (Friendster, LinkedIn, Orkut, Zerendipity) is capable of distinguishing between types of relationship networks.
Only Orkut provides a faint acknowledgement of this user requirement, allowing a user to categorize their relationships from the neutral "havent met" category to the exuberant "best friend" category. It makes me wonder: am I the only one with enemies? I dont know about you, but personally Id like to track my enemies and their friends, if only in the interest of keeping all my organs in their designated anatomical configuration. The current systems seem to ignore the fact that people belong to many social groups, and have relationships with people which theyd prefer members of their other groups didnt know about.
Putting this shortcoming aside, one has to consider what benefit a user gains from joining a social networking system. Alright, Ive joined now what? Oh, I can find other people I, uh, guess thats kind of cool. Can I import my friends contact information into my Outlook address book and keep it up to date (like Plaxo)? No? Can I send and receive messages to and from my social network from my regular email client? No? So what, exactly, is it that Im supposed to do with this thing? The current state of social networking systems mimics the early days of the laser a technology searching for an application. What better way to enable application of social networking systems than a new-fangled web services API?
Lack of a Web Services API
One of the smartest things Amazon ever did was create the Amazon Associates program the service through which web sites can get compensated for directing surfers to Amazon products. All you have to do is add an associates ID to the end of an Amazon URL in your web page and poof you get a commission on each time one of your surfers goes to Amazon and buys something. Though technically not a web service, the program allowed developers outside of Amazon to leverage its technology, extending Amazons reach to people who werent even surfing Amazon.com.
Since then, both Amazon and Google have provided developers with access to their technology through web services APIs, spawning numerous unique applications and the odd book or two. But Amazon and Google didnt do it for charity new applications tie users and developers to their platforms, which in turn drive revenue through more books sales and advertising revenue. Its apparently called a business model.
Meanwhile, social networking systems are sitting around with gobs of personal information, relationship information, and no way to let anyone else use it. Think of the applications these systems could enable! For example: Amazon makes personalized recommendations by comparing your previous purchases to those of other Amazon shoppers but does this really make sense? Amazon makes a bold assumption that people who buy one item have the same tastes in other items - what if instead Amazon refined its personalization by knowing the identity of your friends and tying your recommendations to what you had in common with what they had bought recently? Exposing this kind of information through a web services API would allow other companies to refine their personalization, resulting better efficiency for licensees of the technology and a nice revenue stream for the social networking system. Two words: cha, and ching!
Lack of Federation
The worst part about social networking systems is the duplication of effort they require of the user. Do they honestly expect someone who is already a part of another system to upload all their information and invite all their friends to yet another social networking system - YASNS? I dont know about you, but I consider it a bad sign when your target users have to invent an acronym for the sole purpose of describing how annoying they find your service.
When you think about it, it doesnt really make sense to have a centralized system to track distributed relationships hence the invention of the FOAF (friend-of-a-friend) schema. The only hope for social networking systems, now that developers (like TypePad) are starting to adopt FOAF, is to figure out how quickly to reposition themselves to leverage their existing database of personal information, index publicly available FOAF data from the web, and start providing value-added personalization services to other companies.
Although Im normally not one to condone stereotypes, I found I couldnt disagree when I overheard someone lament: Isnt it a little ironic that social networking software is being created by a bunch of antisocial geeks? Yup. Social networking systems are currently like the geeky guy in Singles, the one with the high-tech watch full of pretty girls phone numbers that hell never actually call. If theres one shortcoming we geeks suffer, its our obsession with creating new technology or re-creating existing technology in the name of doing it better, while remaining blissfully oblivious of the fact that no one can actually use it.
On the other hand, the people behind these systems arent dumb and neither are their venture capitalists. I doubt that anything Im suggesting here hasnt already crossed the minds of those involved in the development of social networking systems. Given the involvement of Google in Orkut, coupled with Googles recent move into search personalization technology, it seems likely that these companies had these types of strategies in mind from the beginning. I can only guess that I dont know the right people to be privy to such knowledge now if only there were some kind of computer service to correct that.