In response to this article on VentureBeat, I posted the following comments:
I’m the guy that implemented the multitouch solution shown in the video above. Forget the conspiracy theory. There isn’t a trace of implemented-then-removed multitouch code in the Android codebase, I have been through pretty much all of it that has anything to do with event processing, from the low-level kernel driver to the singleton class that receives events across the JNI bridge to the event processing pipeline. The kernel driver always supported multitouch because it is based off of generic synaptics code that already supported multitouch. (EDIT: the poster of the article linked above corrected me, he never said the code was added and removed, just that Apple asked Google not to include multitouch and Google complied. The remainder of my observations still stand.)
My conclusions after going through the code and scouring the web for reasons why it wasn’t implemented in 1.0, as well as conversations with Google employees and all sorts of interactions with the community since the multitouch release are the following:
(1) The G1 was simply never intended to be a multi-touch device. HTC didn’t spec it that way (their top leadership came out and said “it was designed to be a single-touch device”), Google didn’t ask for them to design an MT-capable device, it wasn’t on Google’s list of things to do for 1.0.
(2) Apple’s multitouch patent may not even cover the pinch gesture, according to recent detailed analyses of the patent that have been widely blogged about. So far they have not even approached me with a C&D letter, and I don’t expect they will. (And anyway, I never made a cent off of this, and I am doing no more development on multitouch now that the capability is out there in firmware images that you can flash on your own phone.)
(3) Google *is* interested in multitouch capabilities, it’s just nowhere near the top of their priority list. Anyone in the community could step forward today with a well-designed extension to the MotionEvent class that properly supports MT, and the Google guys and gals would vet it just like any other community submission, and it would stand as good a chance of making it into the codebase as anything else. (HOWEVER the Google Android engineers have been rushed off their feet for about the last two years straight, including lots of late nights and weekends, and the pace sped up if anything after 1.0, so they are so busy with their own internal priorities that the Android *platform* is only a community project in name at the moment, because the ones that can actually commit to the repository at the moment are mostly/all(?) Google engineers, and they’re just plain flat-out busy… time will tell if that changes, or if their community module ownership handout system works.) EDIT: I should clarify here that when I say “Google is interested in multitouch capabilities”, all that Google employees have specifically stated in the public mailing lists is that if a manufacturer were to come to them with multitouch as a requirement for a device, then of course they would work with the device manufacturer to build that capability into the Android software stack. It can be taken for granted that Google has talked internally about doing multitouch, but again the only public statement is that there is no “when” or even “if” about it right now, it’s just not on the immediate future schedule of things to do — which is why someone in the community needs to submit a patch to do multitouch properly if they care about having officially supported MultiTouch on the G1.
(4) Google will deal with legal issues if and when they come up, but that hardly stops them doing something they think should be done. Take a look at Book Search and YouTube (I know, I used to work at Google on Book Search…)
(5) Apparently the driver for a resistive MT-capable/iPhone-like touchscreen was checked into the git kernel tree after the 1.0 release, so we now have (at least?) two MT-capable drivers in the tree. This is barely surprising given the huge number of Android devices of every form factor currently in the pipeline. You can bet somebody wants to market the devices even if it means licensing from / fighting with Apple.
(6) I could go on, but basically put away your tinfoil hats, people.
One more thing: if you really want to know what happened with Android 1.0, read through the Android platform source. All of it. Or as much as you possibly can in the next year or so. You will quickly come to realize that the pulling-together of Android in the short period of time over which it was accomplished constitutes one of the greatest software engineering accomplishments of our time. The code is, for the most part, polished, clean, well-written, low on bugs and seamlessly integrated. I don’t know how on earth they managed to (a) write (/acquire ) that amount of code in such a short time, (b) so seamlessly integrate the efforts of what must have been a very large number of programmers, and (c) somehow also build a complete working lightweight linux distribution, an Eclipse IDE and debugger, an entirely new VM, and (working with HTC) an actual physical device that stands to be one of the best physical 1.0 releases of a complex device of all time.
Once you catch the vision of that, you will understand why MT conspiracies are ridiculous — why would MT or other bling even be an issue when you’re trying to accomplish so many far more difficult engineering tasks and meet a shipping deadline?