Killing Twitter Before It Can hurt Us
whydoeseverythingsuck.com
whydoeseverythingsuck.com
Then other people could come along and write recursive caching distribtwitter name servers so that they can still twitter at people they've never twittered before when distribtwitter.com is down.
The only conclusion I can draw from this is that web 2.0 rots the mind and turns trivial problems in to seemingly impossible problems.
No polling is involved.
The open source part is fine, its the distributed part that would never work. I don't think people realize the SMS infrastructure/expenditure needed to pull off something like Twitter.
Their 5 digit short code costs (at least) $1k/month in the US. Twitter has these in multiple countries. Each received message costs approx. $.03 and each sent message costs approx. $.05. Added up over 30mil. messages per month (avg. of $.04 per msg.) = $1.2mil. Twitter is almost certainly getting a better rate, but their monthly messaging expenditure is certainly multiples of $100k.
For those of you saying, 'Oh, but what about sending TXT msgs via email. I do that on my homebrew project, and its great!' Sending 30mil msgs (and growing) WILL NOT work via email, the carriers will NEVER let you do that.
I could go on about the technical reasons Twitter cant be distributed and FREE, but in any substantial mobile play you have to deal with the carriers, their infrastructure, and their fees. It is a totally different scenario than a website that has per page serving costs approaching 0.
Twitter has taken a significant amount of funding. They have not really expanded their team much, they havent added many new features. They havent been advertising.
I guarantee all of the money is going towards messaging costs and infrastructure. Two things that a distributed, FREE Twitter would have a very hard time accounting for. [But hey, Im all for it. I have many years in the text messaging space and would totally be into helping however i could. I just think that the solution would be far trickier than people might at first glance suspect.]
(the reason I haven't done that myself is that I have absolutely zero interest in Twittering or Tweets or whatever that stuff is called)
To be honest, I have to completely disagree. Lots of heads is not a solution to a pure computer science problem. Most companies are formed around a specific solution to a computer science problem. They then make everything proprietary and profit.
That's like saying, only smart computer scientists exist in the open source world. Not true. In fact, you simply cannot claim that there is a strong trend in one or the other. Many smart brains in open source... Many smart ones in industry as well...
When you say "@foo Hi, foo!" You're sending a message to some person named foo. That's a push. If you start thinking of it as a pull, then you get in to the sort of trouble you're mired in.
In a distributed system the process goes like this:
1) Sender queries name server: WHOIS foo? 2) Nameserver responds foo is http://www.foo.com/mytwitterfeed. 3) Sender pings recipient http//www.foo.com/mytwitterfeed?ping=messageid&origin=bar 4) Recipient queries name server: WHOIS bar? 5) Name server responds http://bar.com/mytwitterfeed 6) Recipient requests message text, http://bar.com/mytwitterfeed?id=messageid and verifies it actually is addressed to him.
From then on, you have to worry about spam but that's a solved problem (killfiles, Bayesian filtering, etc.) No caching is involved. Recipients store messages addressed to them, just like any other messaging system. This isn't at all a hard problem.
Yes, people can send you false pings, which is why you need to go back through the name server and do a reverse lookup, and once you fetch the message you need to parse it and make sure it within bounds (less than 160 characters or whatever) and addressed to you (has @foo in the message text.) and is not spam (the name isn't in your killfile, is in your whitelist, akismet says it isn't spam, etc.) Rate limiting helps too, real people aren't going to send you 100 messages a second.
Personally I would go with:
User Adam sends message to Bob: 1) Adam sends message to Twitter service. "Bob>Hi." 2) Twitter check to see if Bob knows Adam. 3) Twitter sends "Adam>Hi." to Bob.
(With optimal storage so Bob and Adam can see their old conversations)
Your system let's random spammers people find out people's address which IMO is bad.
PS: Or Adam could send a message to "All>I like this soup." and Twitter then sends the message to everyone that cares about Adam including Bob.
Edit: It looks like Twitter is sending around 2million Tweets a day.
Also, all these proposed messaging architectures are somewhat flawed. Twitter isn't really "sending" messages to other people. It's more like a person's message history is bound to their account, and appropriate privileges are applied. Then, when people try to "read," privileges are obeyed and information is produced...
Am I the only one who believes the solution to Twitter does not involve a massive distributed system? Twitter is inherently centralized... people don't see that.
PS: Text is cheep EX: Slashdot is running off of ~4 computers. And bandwidth is not a scaling issue until you need a single system to handle more than ~1GB of bandwidth per second. (Saturating an OC-3 line costs a lot of money but you don't need to change your architecture to do so.)
Aka - a scoble broadcast out to 20,000 different endpoints causes challenges - whether it's pushed or pulled..
And many of them are the same brains, showing up in different places at different times.
Twitter could have been disintermediated any time in the past year; the interesting question is why this hasn't happened already.
The ideas in this post are overkill, although social portability cough opensocial cough is already on track to assist.
While I confess that I am an ubernerd (in addition to other fine qualities such as being a well-known chocoholic), I see plenty of people on twitter who are not techie at all.
I follow a few quilters, for example; one of them has a blog with neat how-to videos. And for some reason a lot of real-estate people from Phoenix are on twitter (they follow me, I'm not too interested in them).
I realize that they can be invisible to techies. Like LinkedIn: you only see the people on twitter who you follow personally, so there's a sense that everyone is like yourself. But that's not the case.
"When you gotta shoot, shoot. Don't talk." Or, to put it another way: the best way to start is to cut some code, don't get bogged down in discussion.
edit: I'm aiming to put something up on the wiki here by the end of today, we can go from there:
Anyway, I'm up for joining.