While roaming around Google I/O and looking for answers to numerous questions you guys posed, I ran into Wei Huang, the tech lead on Google Talk for Android. Yup, the same guy who announced video chat two weeks ago on the Google Mobile blog. Here are some questions I had for Wei, echoing many of you guys:
- Is video chat coming to other devices than the Nexus S and if so, when?
- It's understandable why the Nexus One has no video chat (although 1-way video chat would still be better than none), but why did it receive no voice chat with the Android 2.3.4 upgrade? Why no love for the OG N1?
- When can we have multiple accounts in Google Talk? Honeycomb has them, but none of the phone versions do.
- Why can't we use 3G when using video calling on T-Mobile? WTF???!!11
Here is what Wei shared with me.
The Nexus One situation
First of all, there is no conspiracy in play here - most of the limitations were decisions made due to priorities and a lack of resources. Believe it or not, Google, with its tens of thousands of employees, is still hurting in the Android department. As some team members said, there will never be enough people to do everything efficiently - if you hire more, it will complicate the whole development cycle, and being agile is very important to Android. They feel great where they are now team-wise, and while I couldn't get the team head count, I realized there are many more core Android developers none of us have ever heard of. Ultimately, however, there will always be more stuff to do than they have resources for.
So, back to Google Talk. The primary focus of the team developing video chat was... well, full video chat support, which required a device to have a front-facing camera. Having implemented it, they were hard pressed for time and made a decision not to include logic for just enabling voice into devices that didn't support a front-facing camera - this would have involved more engineering, design, and QA resources they didn't have. So, this is why the Nexus One ended up with no voice chat support altogether.
Update: Another factor I forgot to mention was that the new library required for video chat was quite heavy, and the Nexus One was getting "kind of tight" on space, potentially requiring a bunch of hacking to get around the limits.
A similar situation happened with multiple accounts and all the improvements made to the Honeycomb version of Google Talk. As you may know, the HC version has had video chat and multiple accounts from day 1. Because of the Nexus S, the team decided to backport video chat to Gingerbread (Android 2.3.4 specifically) and leave it at that. Since video chat required a new library previously not included in Android builds, this 2.3.4 upgrade was necessary - it was not possible to release the application on previous versions of Android.
Going forward, Ice Cream Sandwich
So, all of the above means that as long as manufacturers upgrade their front-facing camera bearing devices to at least Android 2.3.4, they should have no problems getting video chat to work. The ball is in your court now, HTC, Samsung, etc (even the OG EVO 4G has a front-facing camera).
Going forward, specifically in ICS (Ice Cream Sandwich - get used to the abbreviation), we will see multiple accounts along with video chat, because these improvements are already in Honeycomb.
No 3G calling on T-Mobile
There is another issue that Wei talked about - some carriers are apparently blocking the special P2P mode that Google Talk's video chat uses to connect to the other party. This in turn means that video chat is not possible on such carriers' mobile networks until they unblock this P2P method (Wi-Fi calling is always fine).
I believe Verizon is one such carrier, but don't quote me on that. Update: Wei emailed in and corrected me here - that carrier is actually T-Mobile. Verizon is allowing such P2P connections just fine. This is the reason why 3G video calls are not possible on T-Mobile at this time.
And there you have it - no conspiracy theories, just engineering resource constraints and pure facts, as gathered at I/O.