I have often wondered what thousands of Twitter employees are doing all day long? Their platform and apps have been stale for a long time.
I have often wondered what thousands of Twitter employees are doing all day long? Their platform and apps have been stale for a long time.
Network size is not as important as how messages are distributed within it. Whereas most WhatsApp messages are one to one, on Twitter they're almost always one-to-very-many.
If 10000 Twitter users with 1000 followers each send a tweet, that's 10000000 messages hitting queues. 10000 WhatsApp users sending a single message each are likely to result in 10000-20000 messages (sometimes people have group conversations).
If you want to "do social", do it for small groups. Nobody really has 40 000 friends, so why bother with the use-case that is literally only used by advertising companies?
There are numerous non-company non-celebs-in-the-Hollywood-sense-of-the-word people who have huge followings on Twitter who get a lot of value from that and who their followers also appreciate: people like DHH, John Carmack, Marco, Sam Altman, Scoble..
There is a definite space between "people you know personally" and "blast ads to 2 million customers" in social and Twitter fills it really well.
So... don't?
So you're not wrong, but the people went to Twitter. Even Google killed Reader. I go where my audience is.
RSS is fine for plumbing and pros but has not evolved into anything resembling a user-friendly system.
Twitter has way more features than RSS, but do people really use "favorites" that often? The tweets I "fav'd" I don't really go back and check later, or maybe I'm not the targeted demographic
Twitter is more for information
To be successful, you usually have to do something outside the comfort limits of existing technology.
Twitter innovated by redefining how social interaction works - and then proceeded to slowly grow bloated and cashless.
Every person's new feed is uniquely generated based on their followers. That means you can only at best cache at the individual tweet level -- you still need to uniquely generate a news feed for each user. This means that for every user you need to individually grab information simultaneously from the same high velocity tweets, while still being able to present information to each user uniquely based on conditions regarding how twitter should display tweets for that specific user individually. That's incredibly demanding data wise because it makes horizontal distribution of load much more difficult --- a huge number of people are all making demands on the same set of data resources, and you can't easily cache that data because of how real time and quickly updating it is.
In comparison WhatsApp on Erlang is basically just an example of extremely dramatic real time horizontal scaling. Hosting hundreds of millions of simultaneous chats is relatively trivial in Erlang, given each one is operating under its own separately scalable chat process. Since very few chats share data with one another, horizontal scaling is easy because you don't have the issue of the same resource getting called simultaneously by millions of unique users at the same time, who all need that resource represented back to their own news feed in differently categorized ways.
tl;dr: WhatsApp with the right technology is WAY easier to scale than Twitter.
---------------
(Speaking of the magic of Erlang for chat programs, this funny video "for Ruby/Node.js hipsters" explains how Erlang does this magic quite well: https://www.youtube.com/watch?v=rRbY3TMUcgQ) )
And Twitters core message exchange functionality is conceptually extremely simple.
You need to be able to take a message, and put it into the set of targets, T.
Problem is T can be "unreasonably big". E.g. millions of followers. Solution? If something is too big, see if you can divide the problem. Split T into smaller chunks t1..tn, and distribute them. If those chunks are still too large, split them again.
This reduces your problem to figuring out how to insert and remove and balance a tree, and how to process two kinds of message deliveries: Insert into timeline or reflect message to specified set of targets (each of which can be another reflector, or a final target timeline)
We all know of and use a system that does this at massive scale: E-mail w/forwarding and mailing lists. If you really wanted to (though it'd be extremely inefficient) you can do this with off the shelf mail-servers and other e-mail software. Using mail servers as messaging middleware might sound weird (and there are certainly better alternatives today), but it works just fine.
At Twitter scale there's certainly enough savings to be made from figuring various obvious and not so obvious optimizations (off the top of my head: for some of the users with the really extremely follower counts, it may make sense not to push their messages, but to push them to caches and weave them in dynamically) to justify the salaries of a few software developers to cut down on hosting and ops costs, but the basic problem is not hard.
I tried Googling reflectors but nothing relevant turns up.
If anything, Twitter's operation is significantly easier.
No those acres of employees at Twitter are showing each other powerpoint presentations, ordering lunch for each other, and subdividing again and again tiny slivers of functionality into more and more product management teams, none of whom have sufficient authority to make any material improvement to the product.
if your system design is actually done that way, i.e. that that amount of actual msgs, in one shape or another, hitting actual queues... well, you would definitely inflicted "scale" onto your system. It is like for any powerful data system there is always possible to make a cartesian query that will kill it :)
As long as you first write the tweet to a durable canonical datastore, you can recover from the loss of any queue for individual users by re-processing the timelines of the accounts they follow. Hence you don't need those queues to be particularly durable. You can afford to cache a lot of data in memory, and write compressed updates to disk lazily. How durable you make the system is a tradeoff between the frequency of node failure and the cost of recovering from it vs. the cost of more nodes to handle lower write rates.
The alternative is to pull, but then you inflict polling costs + a lot of caching hassle.
I don't think WhatsApp introduced any innovation at all, its popularity is derived from network effects, together with the questionable practice of using phone numbers as public ID and automatically adding all your phone contacts as chat contacts without them having any say in the matter.
Their innovation is evolution of WhatsApp past text messages. And in the end, nothing is a true innovation -- most things build on past ideas.
basically they shot themselves in the foot on the mobile market with an half assed implementation, and even today the notification system on skype mobile apps is dumb, especially how they handles balloons (the only app that could do worse on notification balloons is facebook)
whatsapp may not be a cornerstone of reliability, but it has an incredibly frictionless mobile user experience.
My mom back in India finds email address and passwords confusing but she immediately understood watsapp and how to send messages to her sister in US.
The plural is an important side issue. I only have one phone and one public phone number. I'm not sure how many email addresses I have, its definitely more than five but less than two dozen? I do know my broadband provider theoretically gave me an email address about a decade ago that I've never used. I hope no one is sending email to that address...
Skype sometimes hangs on my pc and on the phone. Both my pc and phone have a good configuration yet Skype does not play nice.
Innovation for whatsapp = Simplicity + Reliability
That may have worked for them, but I suspect it's filled the company with many media-only types in a toxic way similar to how Yahoo got hurt by thinking of themselves as only a media/ads company. That killed them against Google, who as Paul Graham pointed out, was a company that was still successful in feeling like a startup technology company well after becoming large.
Given Twitter's lack of technology innovations, I'm inclined to think they are more towards Yahoo than they are towards Google.
Like he wants to come in with a drop in OPEX such that he has some flexibility with finances by dropping some staff?
I mean, it's obvious. And WA isn't necessarily a replicable model for all companies.
They are adding new complicated features that all users hate to "increase engagement".