-
Website
http://www.scripting.com/ -
Original page
http://www.scripting.com/stories/2008/01/16/aDecentralizedTwitter.html -
Subscribe
All Comments -
Community
-
Top Commenters
-
eas
55 comments · 4 points
-
AndrewBurton
134 comments · 10 points
-
Michael Markman (Mickeleh)
154 comments · 15 points
-
Rex Hammock
52 comments · 9 points
-
malatmals
81 comments · 3 points
-
-
Popular Threads
-
Open is in the eye of the beholder. (Scripting News)
1 day ago · 13 comments
-
Store Twitter URLs in earth's oceans? (Scripting News)
3 days ago · 16 comments
-
Why today's Twitter is like Napster in Y2K. (Scripting News)
4 days ago · 15 comments
-
If you wrote the words you own the copyright. (Scripting News)
3 days ago · 7 comments
-
How open standards are created. (Scripting News)
6 days ago · 11 comments
-
Open is in the eye of the beholder. (Scripting News)
There are a whole array of problems with doing the sort of micro-blogging / lifestreaming that Twitter does via RSS / Atom that I'm happy to discuss, but currently I'm a bit too busy dealing with the capacity problems we're facing to do in depth writing on the subject. I will be speaking at a number of events in the next few months, but probably the most relevant (and closest time-wise) is FoWA Miami, where I'll be giving a workshop on building web services using Jabber (XMPP).
I guess what makes Twitter special is the community we all have there so of course it will requires the community to understand and solve our own problems.
Users and developers party together.
That's the magic combo. You need both to make a community boot up.
(Mind you, I very definitely *do* agree that Twitter needs to be more scalable - and that a decentralized system could do that.)
The key idea to Twitter is the same one that's key to RSS, the idea that my flow of messages is the result of who I've subscribed to. That's an opt-in.
If I don't want to listen to someone on IRC, my options are to get off the channel, basically unsub from everyone, or find a way to block one person (if there is a way). But even so, people will assume everyone can hear everyone else.
You might say that's good and democratic and all, but the problem is that trolls end up ruling the space. Just like mail lists. In Twitter this doesn't happen, as it doesn't with blogs and RSS because there is no assumption that everyone can hear everyone else. And if I don't like what someone is saying, I can unsub from them, quietly, without ceremony.
We haven't seen Twitter devolve into troll paranoia, I think this is why. It has an immunity that IRC does not have.
> If I don't want to listen to someone on IRC, my options are to get off the channel, basically unsub from everyone, or find a way to block one person (if there is a way).
There's /ignore <nick>
>But even so, people will assume everyone can hear everyone else.
It's kinda like that in Twitter, too. Or do you have the distinct notion of you talking to an audience that chose you?
I can only hear those who I have chosen to follow. Very different from IRC where I listen to the people who joined the chatroom. It's their choice on IRC, my choice on Twitter.
http://www.jabber.org/about/overview.shtml
Think about it this way.
I subscribe to about 500 feeds.
Most of them are hosted on different servers.
Yet I see all their updates.
Same idea only on a larger scale. (More feeds.)
--Michael
Are you aware of the DiSo project? We're looking into building blocks for distributed social networking, and here are some examples of the interactions we're looking into:
- a profile page + friends list and permissioning, managed in your chosen "home" (for the moment all hacking is done on WordPress, so your "blog" would be your home but it's not limited to that)
- trackbacking and messaging using different discovery techniques (Microformats to identify content is one) for pinging and distributing content to other people's 'homes'
- rosters (XMPP) to distribute content from "home" to, say, IM, email, etc.
These blocks effectively allow for a decentralized Twitter.
Do take a look: http://diso-project.org , then head to the GoogleGroup and the Wiki.
It's dataportability.org and VRM-aware and -friendly.
What's interesting is that we've already got this problem because there's Twitter, Facebook, Jaiku, Pownce, etc etc. We need a bit of software to automatically link them all together and provide a quick and easy way to post to one of them.
[1] No item.title, limited length item.description, channel.image
In any case, I'll work on this software after I get the podcatcher out, which should be pretty soon. It'll be very easy to get 100 people with the software installed because we've already got a few hundred people running FlickrFan, and I think they may be the kind of people who are interested in this stuff. They all have enough CPU bandwidth and disk storage to do it, it's considerably smaller app than FlickrFan.
I also like the idea of using RSS as the basis because the payloads stuff that I've been wanting so badly just falls out -- it's the enclosure element.
I also find myself wondering if Amazon's SimpleDB can play a role here. I have all the basics already implemented and am itching to find a nice application for it. :-)
Anyway thanks for the encouraging words Julian.
If the distributed Twitter-sphere had a name server equivalent as well as a p2p network of feeds (so it doesn't matter which server I write my "@davewiner has another great idea" tweet you get to see it and I get your reply.... in a timely, aggregated way.
The moment we go down the IM or mobile phone roaming tax world of split systems I'll go back to email and blogging and face-time ;)
1. Public Timeline.
2. Identity (single username, similar to AIM vs. IRC).
If those two items are solved I'd be on board. I don't expect they will.
Would this be an issue if Twitter were solid? My money is on "No."
Your last two sentences were right on the money.
The only time I think about creating a colony of clones is when Twitter is down. Other times I'm too busy. :-)
Public Timeline is somewhat tougher, since in a distributed system based on RSS (in the fashion of Usenet), it would take time to propagate a post throughout all host nodes.
I've been working on this idea for some time (an RSS usenet). Actually, it's been since Microsoft announced SSE which I though would help a distributed discussion system sync itself.
I think it can be achieved though. In fact, I think a little known part of RSS 2.0 can play a part. The Cloud element. Look it up, if you are not familiar with it.
Any PHP folks who want to work on an open system with me., I have 90% of the Twitter API coded already. Let's do it.
I trust they'll resolve their stability before a decentralized competitor could compete.
And SSE for the volume and spread of Twitter updates? That's like choosing Ruby and a single database for.....
I think the API is much more important than that.
Who sits around watching the public_timeline anyway?
as far as I know only reporters trying to prove how banal twitter is. :-)
Like DNS , a username maps to to a domain specific name.
If you are @davewiner then that maps to davewiner@twitter.com (for now)
But in the future, @opmlmaster could actually map to another domain opmlmaster@scripting.com
Everyone that wanted to be in the cooperative would have to register a username.
Or we could use inames. ; ) check out inames.net
Then openid could be used for sign in.
Perhaps this will enable some alternative possibilities?
Why is discovery a problem, though? We have DNS, and that works just fine for discovery for both email and the web. A decentralised twitter need be no more than some microblogging software run by anyone anywhere, with a loose federation system akin to email or XMPP.
@astrout
the longer Twitter stay independent the better.
Actually, I'd love to see MS buy them to show the Live guys what you can do if you understand the audience well enough
Curt Monash
Coral8 is more aggressive than StreamBase about making their stuff downloadable to play with, but I'm sure I can hook you up with either company. I'm guessing you'd have to hack your own adapter in either case, but we can ask. As far as persisting, I forget which DBMS each is friendliest with, but dumping stuff into MySQL or, better, EnterpriseDB/MySQL shouldn't be at all hard.
Ping me directly if you like -- I'm just CurtMonash on AIM and Twitter, and of course you have my email address.
CAM
Downloading the Coral8 server is very easy at http://www.coral8.com/developers/download.html. There is also plenty of documentation at http://www.coral8.com/developers/documentation...., starting with a very simple tutorial.
The Coral8 Server can indeed process vast volumes and data in real time, and should be a good match for your requirements. If you have any questions, and I suspect you will, please do not hesitate to send an email to support@coral8.com. We'll be very happy to help you.
Best,
Mark Tsimelzon
CTO / Coral8
1. Everyone has a tiny tweet server; its an xml-rpc server with pre-defined interface;
2. When you decide to follow someone who has a hosted tweet server, will as well provide a authentication key; and get one from you too. You don't have to provide it unless the person who desires to follow you has not verified his credintials (i.e you just "blocked" that person)
3. Assume you made a tweet post.; a scheduling algorithm on your tweet server picks one of your followers server as the initial seed to federate the tweet. So your server makes an xml-rpc call to your "follower's" server; So that particular follower gets your tweet.
4. Now the follower who just received the tweet calls back your server and find the next follower from the list and pass on the tweet to them.
5. This process continues until all of your followers has received the tweets.
The idea is to share the load among the ring of tweet servers.
Hope I was clear.
This approach essentially builds a caching layer for the current Twitter architecture, so while the many distributed servers use a best-effort push directly to the other specified followers, every tweet would ALSO be pushed up to the root servers for general users, long-term archive, etc., the way that Twitter currently works. If this were built outside of Twitter, presumably the Twitter API would enable pushes directly to Twitter when the system is working normally, and allow tweets to be queued and re-delivered asap if Twitter is unstable/unavailable at that moment. So, yes, there's a lag in this latter case, but in the current system, there's no posting at all in that case.
Then build the root-server level with S3, EC2, SimpleDB, etc, and store the tweet archives as RSS and the follower lists as OPML, and you can then serve them directly from S3 and --- I think? --- support almost every idea I've heard from Dave so far, including enclosures, etc.
Can you think of reasons this wouldn't work? Or even better, better ideas to improve upon this?