Is a federated Twitter even possible?
venomousporridge.com
venomousporridge.com
Unfortunately Jaiku was bought by google and they spent a long time with it offline only to come out as Google Buzz which didn't take off.
Many of the early twitter engineers like Blaine Cook and Alex Payne pushed hard for twitter to be more open and federated, but lost that argument and left or were pushed out. It's a business not a technology decision which makes twitter centralized.
* Immediacy: if a post has been made by someone I follow, I can see it in my timeline right away (or close enough that I don’t notice the difference). "E-mail"
* Chronology: posts always appear in order by time posted. "E-mail". Chronology as the author imagines it doesn't even occur for Twitter, likely their machines' timestamps are fuzzy +/- perhaps up to a minute or more.
* Monotonicity: timelines grow only from the top; older posts are never retroactively inserted. So have your client mark a message by the time it's received, provide a second sort order. Ugh. "E-mail"
There are genuine technical challenges to implementing a robust many-many federated messaging system, this post mentions none of them.
Source: I work @ LinkedIn on these types of problems.
You could easily allow a user to see messages ordered by "send time" or "received time". You could even add an "unread" flag to messages, so that unread messages show up first, then migrate to their proper locations in order.
Ya know... kinda like email.
@sp332 You can prevent that by buffering messages. The less you tolerate messages appearing in-between messages you've seen before, the more you buffer. If the latency between your host and the host of someone you follow is high enough that it's taking more than a few seconds for you to get the message, they're effectively down. Late is better than never.
eta: I admit this is a smaller problem for a centralized service than a federated one, but I would argue that it can work "well enough".
Twitter doesn't solve the immediacy problem with any hard guarantees either.
Most of the time email is on par with twitter.
The situ with email is that at any moment the system is up but individual nodes may be unreachable or delayed, conversely if twitter is up all nodes are reachable in constant time, but if it's down all nodes are unreachable.
In real systems these two properties are mean virtually the same thing, at any given point in time your party may or may not be reachable with a given latency.
Edit: More information on how to actually use Vector Clocks (which are sort of like multi-way Lamport Clocks) in a real system: http://basho.com/blog/technical/2010/04/05/why-vector-clocks...
You can build a distributed system that has hashtags (ex: by using a DHT to map tags to lists of nodes that act as clearinghouse for messages with those tags) but that system is not the web.
As an alternative, by the way, since these posts are so short, you could simply include the entire thread with each reply! A few kilobytes won't kill any servers.
Also, one of the blog comments raises a good point: IRC has the same problem and it works fine.
I also don't see the latency as an issue, but I'm not someone who needs to know exactly what everyone else is doing at all moments of the day.
(Not that those problems aren't solvable with PubSub, but it does add a lot of complexity.)
Assuming federated social services keep track of Date Received, it'd probably be okay to just sort by that.
"Every other node" just means the nodes where the people you follow are hosted, not every node in the network. For most people, that would probably be a very small number.
So it's a little harder technically, and lot less lucrative, to make a radically distributed alternative. And whatever the abuses of the centralized proprietors, they're still not changing those tradeoffs -- most users and even platform participants can still make-do under centralization.
A big tech bust freeing more talent to work on ideological (rather than pecuniary) projects, or enough heavy-handedness from the centralized proprietors, could change that balance.
Regardless I don't find the notion of a federated twitter particularly interesting anyway. The future is P2P.
And I've seen all sorts of micro-failures in Twitter's provision of global ordering: gaps in my display timeline in one client but not others; tweets seeming to appear below the 'topmost' position when revisiting the stream; difficulty reloading recent history that was already local at one point.
A distributed/federated system might be a little fuzzier on some ordering behaviors... but make up for that in other dimensions.
identi.ca etc.
if that turns out to be such a problem,
1.) you can simply assume that everything fresher than 5 minutes is subject to change, so you ignore it until it's at least 5 minutes old.
2.) whatever site or app you're using could simply mark unread messages, and inform you of out-of-order messages.