So what would we need to implement an open alternative to Facebook?
reddit.com
reddit.com
- A "drop it in and it works" wordpress like app that acts as someones homepage/social network interface so people can host their own pages
- - include oauth/openid in the app so the homepage can act as a central login too
- - drop pubsubhubub or something similar into the app so that people can share information with their friends and followers directly
- implement a central website to act as a "search" clearing house (search for names and email addresses which resolve to url's). All it will store is name and a hash of your email (with options to store more if the user allows).
- produce a "web bar" like the blogger one to go at the top of the web app - so people logged into their "network" get easy tools when on other peoples pages
All of this exists in parts already (oauth, pubsubhubub etc) so it's just a case of drawing it together.
Exactly.
And the beauty is that because the central search API is documented and, hopefully, the drop in code app is FOSS companies could host their own networks which support the API for those without the skill or inclination to set it up themselves.
But because it is open there is competition and an incentive to stay on the "right side" etc.
a) people will laden this with too much junk making this a bloated piece of software that is too confusing and takes too long to get out.
b) people will forget the real benefits to people ala drop in easy.
I could definitely see using this among my close friends if Posterous ever gets too cumbersome.
The real question, though, is how BuddyPress installations might eventually communicate with each other. A federated mesh of BuddyPress instances, with a good UI for managing relationships between them, is the kind of thing that would be needed to take on Facebook.
As a codebase WP tends to have quite a high rate of exploits (or it is a popular exploit target). Right now that's not a huge problem - but for a social network where we want to encourage non-techy types to be involved it could be explosively bad.
You could have a central database with all the friend relationships, but you don't need that. You can search the way some P2P networks do it. Send the request to all your friends, who forward it to their friends, for a certain number of iterations. When the target is found it can reply to you directly.
Searches could end up taking a looong time - or just timing out.
There could be ways (especially if people optionally added more info to the search profile) to narrow it down. Direct email searches for example would be easiest.
The issue is that it would be a web app not a client - and you have a limit of how long you can run requests for (and, also, if your hosting the app it means pretty much we are limited to PHP - and no fancy stuff like asynchronous requests etc)
Example: if I have 150 friends and I send a "search request" to them, who then send a "search request" to their 150 friends - for, say, 3 levels of iteration that is a lot of work every page is doing - all within one basic request.
To the extent your friends are on the same server, you speed things up more. If you got online by accepting an invitation from a friend, that will tend to happen.
It'd still be better to have asynch requests. I'm not so sure PHP is necessary these days. A nicely packaged virtual machine can work pretty well for a small group. I don't think many people would be setting up web apps just for themselves.
Well what I have specced out is to compete with Facebook and offer a privacy concious service to the masses. So something like that is infeasible for a number of reasons.
In fact, looking again at your proposal, you mention pubsubhubbub. As long as we're using that, we could send search requests to friends, just like we send status updates. Each of them forwards to their own hub. The search data includes the URL for posting results, and a time-to-live that gets decremented each time the search is forwarded.
Now we can get back to the simple PHP site.
But why not leverage what's already out there. I recently killed my Facebook account out of frustration from seeing their social widget all over the place. But the main reason I was using it was: a) People who felt the easiest way to do event invitations was through facebook by way of a point and click here's all my friends in one place interface. b) People sharing Photographs with groups of friends w/ discreet privacy interfaces.
The C) of this list is all my friends who aslo have twitter accounts who add #fb to the end of every.damn.tweet because that's some kind of special operator to "update their profile message".
The question I put forth is why not create a thin layer to pull together the services which provide these already? Twitter already does short one line status updates. Flickr has discreet friend-level privacy settings. There are 8 billion easy to use invitation services. There are other photo services which I'm not familiar with like Picassa which likely do the same.
Rather than reinvent the wheel - we should be pushing for some kind of OAuth or OpenID services to tie these things together CLEARLY. Maybe a simple one-stop page to manage relationships with people, and your services. Your "profile" page can simply be "rit stores his photos at Flickr." and a link to those (or show them inline). But nothing stops me from having a friend who does things on Picassa.
The last few iterations of Facebook seemed to me designed to be more and more like Twitter. Why reinvent the wheel when you can just integrate?
And a question: is it coincidence that popular products are always heavily controlled by a handful of peoples (at most) vision of their product and not "open" design by committee products?
Popular open systems: Email. XMPP. The Web. The Internet.
- A standardized personal information representation = Social Graph API
- A centralized database with pointers to user profiles = Social Graph API
- A security mechanism = oAuth
- An information delivery mechanism = PubSubHubbub + Activity Streams
- Easy deployment = buddypress, onesocialweb and othersI don't think we need an open FB, I think we need a few companies specialize in smaller portions of FB. One company runs the graph, but does not do messaging, or IM, or photos... Then other companies use that companies graphs to build on. These companies should all be for profit, otherwise I don't think they will be able to out-market FB.
Facebook, also, is not just profiles and the feed. How about events, in a decentralized way, for example? Will a single accept will be amplified to the rest of 500 people invited?
For the profile part, my basic identity is my email address. Implement something on the mail server that I can manage and let that be my profile. Emailing a specific command to gokhan@example.com results my profile as the attachment, for example.
As to blog/microblog posts, the same thing applies. The communication protocol between clients could specific a mechanism to request a deletion, but there's no guarantee that their client would obey. But there's also no guarantee that the other person hasn't already read your post.
Once you send information out into the world, it's very hard to pull it back in. Even on Facebook, if you broadcast information to people, there's no guarantee that they haven't written it down, exported it, screenshotted it before you deleted it or revoked privilege to it.
The social-service your friends are using will have the same access to the data your friend has access to, and if compromised, you are also compromised. So now you have to trust the integrity of potentially hundreds (actually infinite, since the ability for your friends to carry your authentication for them to access you to a new service would be central) of services - which you can't/don't - and then it's easier to just not trust Facebook.
Where did you draw that conclusion? If you accidentally send the wrong data to the wrong person you've violated your own privacy due to your own mistake.
That's a lot different than you specifying that someone shouldn't get a certain piece of information, but that person gets it anyway because the software erroneously allows them to see it.
It's also a lot different than allowing third parties access to your private data.
Jabber/XMPP is a decentralized contact list with communication and authorization protocols. It is easily extendable with XEP's.
With a sleek web interface that anyone can host himself - this is an open alternative to facebook I imagine.
Then you would just add on the other parts you want to system (for example: pages, apps etc)
Innovation anyone?
How might this happen? Browsers sure have changed a lot in just the past 2 years. Local storage is here today already, but almost no sites are doing anything with it. Google Gears had so much potential, but was too ahead of its time to become a trend. What if your browser stored your entire social graph locally, and you could configure your own privacy settings to only share what you want with sites you visit? That eliminates Facebook from being the master hub of the social graph—they are just another federated end point. As Facebook becomes "spammy" more users will want to block Facebook, so they might be convinced to use a local social graph in the same way hundreds of thousands are using AdBlock and FlashBlock. We already know Facebook will kill links to GreaseMonkey scripts that do this.
Alot of mashups and wild Javascript ideas will have to be seen over the next 8 months or so, but I definitely think the Facebook "diaspora" movement will take off once it's dead easy for end-users to run their own social graph programs locally from their own browser. Just like a desktop app. Perhaps even that might be asking too much of end users, the average of whom cannot recognize the difference between their browser and the Internet. Hopefully Apple will start baking new identity features into the iPad, since you know they will nail it as far as being simple enough for everyone to use.
The Techrunch rumor mill does keep whispering about Apple putting Facebook Connect into iTunes, but it seems more likely that Apple would take them on. Facebook will wish they had their own browser to push back with.
It's probably going to be a great tragedy that Apple is so unstoppable now that they can just roll over any other tech company at-will.