I have now had CEOs of three different social networks send me emails asking me to compare Orkut to their service. I've not had a chance to dig deeply into good answers for each specific one, but I did have some general advice that I wanted to offer given my recent experiences with Orkut.com, and my evaluation and followup on various social networking services in December.
PrivacyFirst, be extremely careful about privacy issues. For some of you outside the US, you may not know about what has been going on in the area of identity theft, but it has become a significant problem. I am not a privacy fanatic, but I am concerned that social networking services encourage people to reveal too much information too broadly, and that this will be someday be taken advantage of by identity thieves. For instance, many services ask for birthday and reveal it to everyone. You can ask for the birthday, but don't display it -- give the person's age, or birth month, but don't give the full info. I personally am particularly wary of billing address, billing zip code, birthday, and potential common security questions like name of pet, mother's maiden name, etc. These are in addition to the obvious targets of identity theft like SSN, full name, and account numbers.
Orkut's interface for selectively allowing some fields to be visible "only to myself", "to friends", or to "friends of friends" is nice, but I wish it was for all fields. I also think every field by default should be set to "only to myself". In fact, all security parameters should default to reveal the least information, and have the tightest limits -- allow the user to open selectively.
If you are going to support all different kinds of social networks (dating, friendships, activities, business) consider finding ways to make sure that those people who are not using the service for dating are not asked for that info, and don't see it for others who are dating. People who are only using it for dating shouldn't see business info. If someone is using a service for all types of relationships, allow people to selectively set what they reveal to each group, say two columns of "only to connections who are dating" or "only to business connections".
Never reveal someone's email address or other critical information without them knowing about it. In particular there are issues with emails sent among members. The only safe way is to do redirection through your site (although that will cost you bandwidth.) But if you can't do that, then just tell people "your email will be revealed if you do this" -- that is enough.
Work hard on your TOS and Privacy terms. Don't let your lawyers rule you here too much -- find some way to get your principles out there and still cover yourself against problems. Make all the personal information that people give you be their information -- they are only leasing it to you temporarily.
Make it easy for someone to quit the system. Maybe offer to them to export their information in case they want to rejoin later, and give them an opportunity to send a last message to any connections they may have. Be friendly at all times, and as the market shakes out they may come back.
Connections & InvitesIf possible, find some other way to call the connections between people "friends" -- maybe even use a unique trademarkable term. There is some power in the emotions behind the word friends that helps with the virus-like nature of social networking software, but I think in the long term it is a bad idea. LinkedIn and Spoke use the word connections which sounds too mechanical, but I think it is better then "friends".
Don't encourage the "how many friends do my friends have" game. It sets up bad behaviors, and as you grow you don't want to have barriers of entry to new people who feel that they can't compete in that game. This means don't sort friends or groups etc. by the number of friends they have by default -- it can be an option, but just not be default.
Don't encourage people to by default upload their address book. Have that feature be off of some optional utility page. Have the default option for it to just scan for people that are already members of your system and to forget the rest -- that is effectively what I do with systems that ask for address book information, and they make it hard for me to do so. Don't store people's address information for them unless you can sync them with people's personal contact books -- save that for version 2.0, not 1.0 beta.
Don't focus on people contacting new people that are not already their connections. It is not the number of connections, but the quality. Instead, focus on helping people with their weak connections. It is 'reconnection' that is the most powerful feature of these social network services, not new connections. You can also help with "triage" -- how do I maximize the value of my existing weak connections with the least effort?
Allow people to opt-out with a custom message. What this means is that if someone sends an email to someone who has opted out, they will get something like. "Thanks for inviting me to Orkut -- I've decided for now not to join, but you can find me on Tribe." However, keep a list of people who have tried to connect to that opted-out user, and if that user does change their mind later, it will make it easier for them to have an initial list of friends that may already be on the service. Yes, I know that this risks sending people to other services, but there are so many now that you can get good buzz by doing the right thing, and recovering those people later when they have confidence in you.
You need to have better methods of handling invites from unknowns without saying no. For instance "I'm not sure I know you, have I forgotten?"
Related, don't fill out default text for invitations and other request forms -- force people to put something personal into the request, don't allow it to be blank. Never do what Orkut does and not give the opportunity to offer text when you invite someone who is already on the system.
Avoid anything beyond friends of friends as a primary part of your service. It bugs me that I see by default 3 degrees away in many services -- 2 degrees should be max by default, as that is the level that real referral can work. 3 degrees is too far for users to trust (though it can be optional for some purposes, or useful internally.)
Friendship Circle may also be a good idea, though perhaps how you classify people should be private. You may mark someone as being "family" "intimate" or "acquaintance" or "business", or whatever, however, no one else should see that; they should just see "connection" unless they have named you, and you in turn should not say that.
ProfilesFind some better way then simple lists to do profiles. Someone's profile needs to express the richness of who they are -- it also needs to change and grow and flow over time, so make it easy for people to annotate and grow over time. Consider asking for only a few things at first, not make the process of filling out the profile feel daunting, then after each login prompt them to add one small thing that is useful based on how they used the service recently. For instance "You have joined the AnyoneButBush2004 group -- do you want to enter information to share with others about your political interests?".
Right now lots of people are experimenting on their blog sidebars how best to profile themselves -- learn from them. Look at hundreds of examples, look for patterns beyond the obvious.
Allow people to have multiple affiliations, whether they be work or play. I'm a bad edge case personally, with too many hats to name, but almost everyone I know has at least two professional hats "Sysadmin by day, Writer by night", "Laywer on weekdays, Carpenter on weekends" , as well as several affiliation hats "Bay Area Costumer Guild president, member of League of Women Voters", etc.
Right now LinkedIn has the best looking professional profile, but it is still hard for some people to use. I like LinkedIn's use of multiple professional affiliations, however, I wish I could mark some as major or minor; for instance, there is a big difference between being an Advisor to MG Taylor and being CEO of Consensus. It also doesn't handle professional associations and lesser affiliations, much less non-professional affiliations and interests. Also, being able to arbitrarily order them would be nice, LinkedIn does it by date which can make for some confusing emphasis.
Reputation & EndorsementsBe very careful of the design of rating systems and reputation systems. They are extremely difficult to design well, as they too often can be gamed, or fall into reciprocity such that they are meaningless. My personal advice is just don't do it at first -- save it for a 2.0 version of the product, not 1.0 beta. If you are going to do it now, really study it -- there is a lot of good academic research on issues of reputation. It can be hard to slog through but it is worth it. Offer a grant to Danah's school for them to do research for you on the topic.
Endorsements are a best way of doing reputation for now. They is also is imperfect and vulnerable to reciprocity games, however, as least you can see if two people are playing that game just by looking at the endorser and endorsee. If you find too much reciprocity you can basically ignore both players.
Allow endorsements at a more granular level. For instance, if you are offering dating and professional information, segregate the endorsements. Even more ideally, do like LinkedIn and allow endorsements of relatively small things in a profile, for instance "I really enjoy Chris' blog" against the blog profile item, and "I like what Chris says about the environment" against my affiliation with a group. Consider allowing endorsements of groups: "Of the three groups here on Wiki, I find this one fits me the best".
If you can afford it, consider hiring a game designer from the online game industry who understands behavior incentives in online games. If you can't, study it. Part of the reason why EverQuest is the largest MMPORG is because it incentivizes certain kinds of social behaviors. In fact, it could be considered to be a type of social network service.
Launch & SupportBe careful with your beta launch -- a culture for a community forms in the first few weeks, and our experience from online games is that the nature of this culture can make or break a project. Find ways to encourage the kinds of behaviors you want, and discourage those that you don't.
Be very careful of labeling people who are gaming your product in ways you don't like. Being in Orkut's 'jail' is almost becoming a badge of honor. There is no reason why people who invite too many friends to join, submit too many posts to forums, or sends too many messages to friends of friends, should be put under the same label as those people who put child pornography up on your system and thus you've banned them. Instead, slow down the overly active people, just say in advance "If you invite this number of people, you may not invite more people for 24 hours, do you want to continue?", or "If you invite this person, you must wait an hour before inviting another.", etc. Also, if you do lock people out of a feature, don't lock them out of all features, just the one that they are over-using. If someone gets locked out of lots of features at the same time, then they should be looked at for possibly banning, but not if they are doing just one thing -- you want to encourage their enthusiasm.
Make sure you give feedback to anyone that tries to be helpful, for instance in reporting a bug. Ideally public reports should be encouraged public (as this encourages other people to be helpful) but even private reports should be encouraged, and as promptly as possible including "Thanks for taking time to write up this, we are logged this problem and hope to get to it as soon as we can given limited resources." Find other ways to give feedback, such as a weekly report, or a group developers blog.
Create multiple stages for your beta, for instance "profile features beta", "group features beta", "scaling beta", "load beta", etc. Tell people in your beta what you want to hear about and not hear at each stage. As each stage ends, find some way to publically thank those who made the biggest difference.
Set up a bug tracking system like TypePad has (like Bugzilla but hugely simpler to use). From help menu at the top you can click to post a new report, see all open reports, or see all closed reports. Every help page can have at the bottom to open a report on that topic. If anything goes wrong there (404, various system error messages, etc) you should give you an opportunity to open a report.
FeaturesFigure out how to use RSS everywhere for input and output -- if Orkut or Tribe's group features supported RSS feeds, they could be very powerful competition to the hugely funded Friendster. Figure out how to use trackbacks with your system, and make them simpler for users. Make group bookmarks and other lists available as OPML. I'm not a huge fan of FOAF yet, but figure out how to use it anyhow (and maybe vCards) until something better comes along, if nothing else but allow someone to import it and export it.
My personal take is that if you can combine a substantial number of these
features, you could have a great product that gives the others a run for the
- Offering intentional groups (like Tribe and Orkut) is essential. It is Friendster's and LinkedIn's weakest link.
- eVite/Meetup style invitations for both private functions (come to my birthday party), friend functions (anyone near 00301 want to have lunch Thursday?) and groups (Let's all meet for dinner next week to discuss this).
- Ability to import via RSS the recent items from my blog to my profile page
- Optional blogging-style home pages (FunChain & Live Journal) for those who don't already have blogs
- Extended family support as an explicit type of group, grandmother, mother, child in college
- Couples can be a form of a group also
- Better ways to organize groups of groups
- Better support for user-optional presence "There are members of this group who are reading it right now who have said that they are available online to members to this group, 3 via Skype, 12 via AIM"
- Permachat at a group level is an interesting idea. I hate that I can't see chat text before the point I logged in
- Lots of group management support, for instance:
- ability to have multiple admins (eGroups, Live Journal)
- Group moderation (Slashdot, Kuro5hin, Advogato, etc.)
- Optional group shared links (eGroups)
- Optional group shared calendar (eGroups)
- Polling inside groups (no one that I know of)
- Invitation or approval of entry by different methods, such as by vote, by 1 reference from existing member, etc. (none that I know of)
- Ability to merge groups (none that I know of)
- Wiki-style areas available for groups (no one that I know of)
- Combine all the above with good innovative RSS and optionally Atom (FunChain, SocialText)
- Supports the various blog submission APIs for blogs, wiki, and groups (none that I know of)
- Do a great job for those who don't use RSS and those APIs to use email instead, including email submission (you can mail pages to a SocialText wiki)
- Ability to be federated, i.e. I could still use my existing blog (you just mirror it), RSS aggregation, my FOAF file could be synced, you sync with my addressbook at Yahoo, etc.
Business ModelsBusiness models for social networking services is going to be one of the biggest issues. Even those social networking sites with lots of money behind them are going to have difficulty because there are so many.
The paid subscriber model is probably dead until some of the VC funded startups go out of business. Advertising can be a good model, but be careful not to make it obtrusive -- remember, Google has made good money with very simple ads.
If you don't have VC funding, find ways to co-opt partners -- build from the beginning support for Google AdSense and Adwords, Amazon APIs, etc. If you are small, consider federating with another company. Figure out what you can do to differentiate yourself from both your competitors and partners.
Don't be evil.