My comments to Dave Tosh on the launch of Explode.
Pretty nifty. My main complaint is that it set my user name for me, and didn't allow me to choose my own (if you're poking around in the database you can change it to 'Downes' for me, to match all my other accounts in places).
Now - yes, it's distributed, in that I don't need to use specific software (such as ELGG) to create my friends network. Nothing against ELGG, it's great, but I use my own software. So this is a really nice feature. It allows me to join networks where ELGG used to cut me off.
But... all the friends lists are centrally hosted, right? And the actual software (that I call with the JS) is also centrally located. No, that's not evil or anything, but it means you're playing in the same grounds as, say, MyBlogLog (and they have that digerati boost behind them, so...)
How to make it more distributed? Well, first, allow people to store the list of friends *anywhere*. Of course, this means the list won't be in a DB any more. You'll have to code it in XML and allow it to be placed as a r/w file on some server. Which means that the code will need the username and password to that location.
Then, second, allow people to place instances of the software on their own server. People will like this because when the central repository of names inevitably slows down (all these widgets bog down when they get popular, theirs won't. Also, they'll feel more comfortable giving access information to a local script.
This is good, now, what you have is basically a widget that manages your FOAF file for you. But at least you're ahead of MyBlogLog.
Next thing to do is to integrate this with OpenID. After all, if people are installing a friends widget on their servers, they may as well install their OpenID at the same time. This is handly, because it allows the list of friends to be synced with the list of OpenID IDs.
Also develop a multiuser version. This is the one that you'll sell. It's still a very simple application (and you wat to keep it that way). Or you might give away a multiuser version but sell a 'pro' with service and support. Your call. You also want to keep the hosted version, so people don't have to install software if they don't want to. Of course, now your hosted version is just your local instance of the pro - and if it gets busy you can just create another instance of the pro on another machine. Centralized computing is for the birds.
Now what you want to do is to add an API. I can think of one really simple API that would just kill: AllowComment. This API is available to whatever system handles comments on your website. If called by the comment system, it answers that a commenter either is or is not in your social network, and adjusts commenting privileges accordingly.
Because the commenting system knows the identity of the commenter, it can also (optionally) fire a copy of the comment back to the commenters own blog or website. A lot like CoComment, except you're not installing a browser plugin. And you get the comment directly, not via some central comment management system.
If you want to get fancy, integrate this with email, so you can use your social network to screen your email.
That's pretty much it. Don't try to add the whole web into the same application. Keep the application itself very simple - let other software manage the website and content creation things.
Keep it simple. No big installs. If you've written Explode in Rails or something you'll have to sart over. Try to keep it to one simple script with a few user parameters.Where are you going to make your money? That's easy - by creating matching or filtering services on top of this basic network. The individual 'pro' version will help you, if you want, find people with similar interests and preferences.