My First Android Experience: intriguing, extremely encouraging but a bit disappointing

I recently got my hands on a Nexus One, which believe it or not is my first Android-based phone. I’ve been trying to acquire an N1 for quite some time now, so after finally tracking an AT&T version down it quite simply couldn’t ship fast enough. By the time it finally arrived I was champing at the bit. I’ve had the Android SDK on my Ubuntu desktop for quite a while now, so I was ready to go as soon as the phone came in. I decided to keep stock Froyo on the phone for a couple days, just to get a feel for what the intended Google experience was like. Here comes my first disappointment: with a non-modified froyo install on a Google branded Nexus One, I was getting a fair amount of force closes. Mobile phones are tough (specifically, memory-challenged) environments so in some cases I can understand, and am fairly tolerant of, some minor issues. The force closes here were in the most basic of apps, however: namely the dialer and most often the messaging app.

I’ve been using Linux long enough that a few force closes aren’t really going to deter me from using what should prove to be the most significant Linux-based entry into the mobile market. So, now it’s time to start moving things over from my previous phone. Unfortunately, said phone does not store its contacts on the SIM card and has no built in export (unsurprisingly, it has an import). No problem I’m thinking; I’ve actually been meaning to tinker with funambol for a while now, and this is the perfect excuse to do so. My first market download goes smoothly, and aside from the brain-dead decision on gmail’s side to try to import every person I’ve ever emailed as a contact, everything imports smoothly (as an aside, funambol is a great product that I definitely recommend having now used it). Here comes the first weirdness, due to a bug in the way Android handles contacts. You can’t actually edit imported contacts with the default editor and the will not sync with Gmail, meaning the built in backup mechanism won’t see them. While this is really frustrating, the workaround (export the contacts while funambol is installed, uninstall funambol and the then import as native contacts) is easy enough that I wasn’t too worked up about it. While on the topic of backups, I’d say android has some pros (the cloud-based contacts sync is fantastic) when compared to the iPhone, but the overall backup/restore process on the iPhone is still unparalleled.

With a couple free apps downloaded, I decided to purchase a few apps. Next disappointment; if the Google account you use on the phone is a Google apps account, you can’t actually purchase anything from the market. So, basically, I’m paying Google for an apps account and then using a phone OS made by Google, but I have to create a new free Google account to actually buy anything from the android market. It’s almost like they don’t actually want you to use Google-related services on your Google phone. Which brings me to this entry in the Android issue tracker. How is it possible that there’s no Google Docs app for android??

With those frustrations and disappointments out of the way, let me say that the rest of the android experience has been very positive and that even with the significant time lead that Apple had, android is either ahead or rapidly catching up in almost every single aspect. In my opinion, the iPhone wasn’t nearly that good until OS 3. I anticipate version 3 of android being very similar in this regard. That android has come this far in a version 2.2 is truly impressive. Many of the issues I have with the iPhone are related to the closed nature of the platform and android has the potential to completely alleviate that. Whether the carriers with intercede and ruin this potential for their own gain remains to be seen, however.

Now, as nice as this thing is from a user perspective, from a Linux user’s perspective it’s absolutely phenomenal. Being able to quickly rsync my music collection to the phone is really refreshing. Being able to simply ‘adb push $foo’ to get files/apps/whatever onto the phone is equally refreshing. That’s just the beginning though. Being able to download entirely new android-based ROM’s such as Cyanogen makes me excited about a phone in a way that the iPhone never did or could.

So, what does the future of android hold? That’s a more difficult question to answer. First, you have some deeply entrenched competitors in place who have a lot to lose. Next, you have some patent FUD and multiple lawsuits already in the works. You then have the aforementioned carriers who may see the freedom that android offers as a threat, but one they’re able to remove due to the Open Source nature of of android. It’s also clear that at some point android will have to deal with a fragmentation issue that no other mobile OS has had to content with on this level. Even with all those issues, however, I think it would be *very* difficult to bet against android at this point. There’s simply too much going for it and it’s only going to improve from here. After using my Nexus One for a couple of weeks I can honestly say that I don’t miss the iPhone one bit, and I think that’s saying a lot.

–jeremy

Oracle, Google and Java – Oh My

A follow-up to this post, now that some additional information is coming out.

James Gosling has made another interesting post with some historical information, including the fact that as a result of an IBM lawsuit some Sun engineers made an unofficial game out of seeing how ridicuouls of a patent they could get approved:
In Sun’s early history, we didn’t think much of patents. While there’s a kernel of good sense in the reasoning for patents, the system itself has gotten goofy. Sun didn’t file many patents initially. But then we got sued by IBM for violating the “RISC patent” – a patent that essentially said “if you make something simpler, it’ll go faster”. Seemed like a blindingly obvious notion that shouldn’t have been patentable, but we got sued, and lost. The penalty was huge. Nearly put us out of business. We survived, but to help protect us from future suits we went on a patenting binge. Even though we had a basic distaste for patents, the game is what it is, and patents are essential in modern corporations, if only as a defensive measure. There was even an unofficial competition to see who could get the goofiest patent through the system. My entry wasn’t nearly the goofiest.

He notes that “Apple’s expected entry into advertising” (now iAds) may have been the initial impetus for Android and adds “Don’t interpret any of my comments as support for Oracle’s suit. There are no guiltless parties with white hats in this little drama. This skirmish isn’t much about patents or principles or programming languages. The suit is far more about ego, money and power.”

Charles Nutter has an extremely detailed post where he breaks down each of the patents one by one. While lengthy, if you’re interested in this topic you should read the entire post (probably twice). Here is part of his conclusion:
So, Does the Suit Have Merit?

I’ll again reiterate that I’m not a lawyer. I’m just a Java developer with a logical mind and a penchant for debunking myths about the Java platform.

The collection of patents specified by the suit seems pretty laughable to me. If I were Google, I wouldn’t be particularly worried about showing prior art for the patents in question or demonstrating how Android/Dalvik don’t actually violate them. Some, like the “mixed mode” patent, don’t actually seem to apply at all. It feels very much like a bunch of Sun engineers got together in a room with a bunch of lawyers and started digging for patents that Google might have violated without actually knowing much about Android or Dalvik to begin with.

But does the suit have merit? It depends if you consider baseless or over-general patents to have merit. The most substantial patent listed here is the “mixed mode” patent, and unless I’m wrong that one doesn’t apply. The others are all variations on prior art, usually specialized for a Java runtime environment (and therefore with some question as to whether they can apply to a non-Java runtime environment that happens to have a translator from Java code). Having read through the suit and scanned the patents, I have to say I’m not particularly worried. But then again, I don’t know what sort of magic David Boies and company might be able to pull off.

He also gives his opinion on the “possible outcomes” as: The Nuclear Option (ie. the death of android, which is *very* unlikely), a Google Licensing Deal, Nothing At All, and the Total Collapse of Software Patents (wouldn’t that be nice).

Matthew Aslett attempts to answer the question of whether Oracle should now be seen as anti-open source:
I want to address is whether Oracle should now be seen as anti-open source.

I believe this theory is flawed. Firstly, because it assumes the open source community is a single, sentient being. As Matt Asay notes: “There is no Santa Claus. No Easter Bunny. And no such thing as an open-source community separate and distinct from the profit-driven free market that drives software development, generally.”

Secondly, because it assumes an emotional relationship between Oracle and open source that is equally non-existent.

As Simon Phipps has explained, corporations are reptiles that react instinctively to survive and thrive. Google’s call-to-arms of the Java open source community can be seen in the same light, especially since Google’s prior relationship with the Java community in relation to Android has been somewhat tenuous (rather than repeat what has been written elsewhere I recommend reading Carlo Daffara for the details).

And let’s not forget that Google’s approach to using open source resulted, at least in part, to the creation of a whole new license, one that the company has actively discouraged.

The statement by Oracle’s chief corporate architect Edward Screven, that “Oracle doesn’t really have an open source-specific strategy” must be understood in the context of this opportunism. The company’s engagement with open source is tactical, and changes on a case-by-case basis. It is wrong, therefore, to expect continuity in Oracle’s approach to different open source projects.

I’m not trying to excuse Oracle’s actions with regards to either Java or OpenSolaris, but I think each must be considered separately. [update – to clarify] Any Oracle related open source project should be approached with caution but… we should all be equally cautious about being encouraged to see the patent claims as a matter of good versus evil or open versus closed.

This is a legal matter between two corporations both of which are opportunistic in their approaches to open source engagement (unless it suits them to be otherwise).

In other words, as Matt Asay explains: “This isn’t about open source for Oracle, really. Nor is it about open source for Google, however much it may want to publicly posture as such.”

Stephen O’Grady attempts to answer a question that has been on many people minds with this post: WHY?
The latter point is perhaps the most important. It’s the only real clue we have to answer the only real question here: what does Oracle want?

Because the answer to that is: not what they’ve asked for in the complaint. Oracle may indeed request recompense for “the damages sustained and will sustain” as well as “any gains, profits, and advantages obtained by Google as a result of Google’s acts of infringement and Google’s use and publication of the copied materials.” But you can be sure that that’s not all they want.

As Andy Updegrove covers, the obvious motivation is financial. Specifically, maximizing the return on the six and a half billion capital expense that bought Sun’s assets, the patents in question included. If Oracle realized the same return as Sun from the Microsoft settlement concerning Java, for example, the cost of Sun becomes four billion. Remaking what was arguably a bargain into a steal.

Purely financial justifications for this suit are less than satisfying, however.

To begin with, Oracle would effectively be trading long term ecosystem health for a short term cash windfall. Unless the settlement is historically immense – a difficult outcome to rely on from a planning perspective – it’s not clear that this would be a net win. For all of its sustained success in the application and database markets, Oracle remains as fundamentally dependent on the Java ecosystem as Sun was before it. Even for a company that’s sought and found growth through stack ownership and category dominance, the health of the ecosystem is and must remain a concern. While the original technology was technically groundbreaking and differentiated, the key to Java’s success lay outside its featurelist. What drove its ascension within enterprises was the reality that Java offered at least the potential for independence from vendors. That will not be surrendered lightly, whatever Oracle may believe. A Java ecosystem dominated by Oracle is a doomed ecosystem. While it’s far from clear that this action by itself would create that perception amongst current Java ecosystem participants, it, coupled with Oracle’s own aggressive history, would be unlikely to be beneficial from a participation standpoint. As Andy put it, “it’s less clear to me what the strategic value would be to Oracle to prevent Google for incorporating Java into Android, or to impede the marketplace generally from relying on Java.”

It can be argued, then, that this is a high risk exercise for Oracle. The only satisfactory return for high risk exercise is high reward. Based on past software settlements, it’s difficult to project this being material to Oracle financially over a multi-year timeframe. Which is why I suspect there’s more at stake here than royalties.

What that is is non-obvious. All that we know about what Oracle wants, realistically, is what they are prepared to surrender. Aside from bearing the hard costs of litigation, Oracle is willing to absorb soft costs in risk to reputation and participation rates in the Java ecosystem. We must expect then that Oracle’s expected return will be commensurate with these costs. Oracle is many things, but stupid generally isn’t one of them.

Perhaps, as Forbes speculates, this is a prelude to a cross-licensing arrangement. Though if that’s the case, I’m far less certain that this suit actually has anything to do with Android; might patents like this “Large-scale data processing in a distributed and parallel processing enviornment” or this “Information extraction from a database” be relevant to Oracle’s core businesses? Perhaps Google is already or plans to compete directly with Oracle in ways we are not aware of yet. Or maybe Oracle just wants Google to buy a bunch of database licenses.

Whatever the real reason, this is a surprising decision even for a firm as aggressive as Oracle. The only thing more surprising is how quickly it turned Google – excoriated around the web for their questionable net neutrality proposal with Verizon – back into the good guys. Even if you speculate about differences in Oracle’s evaluations of its own assets – that Oracle believes that Java has peaked in popularity, for example, and that this is a one time opportunity to cash in on an asset that must, inevitably, decline – the calculus of this move fails. Nothing in Oracle’s product roadmaps hint at such a realization. Nor would a one time windfall, however large, be sufficient to offset the costs of a significant decline in Oracle’s Java related products.

As for predictions, I’ll make only one: whoever wins will also lose. This suit is going to negatively impact – probably substantially – Java adoption. The enterprise technology landscape is more fragmented by the day, as it transitions from .NET or Java othodoxy to multi-language heterogeneity. Oracle’s suit will accelerate this process as it introduces for the first time legal uncertainty around the Java platform. Apple and Microsoft will be thrilled by this development, and scores of competitive languages and platforms are likely to see improved traction as a result of Java defections.

Add up these costs, and the only supportable conclusion is that Oracle’s ambitions here are big.

As Stephen notes, it’s exceedingly difficult to ascertain what Oracle is *really* after here. As more information comes out, their motivation may become more clear and I’ll guess this won’t be nearly my last post on the topic.

In tangentially related news, it’s now confirmed that Oracle is killing OpenSolaris although it remains committed to Solaris itself and will be bringing Solaris Express back from the grave. It also appears that Oracle will continue to commit resources to MySQL, at least for the time being.

–jeremy

Additional Reading:
Techdirt
SAI
Matt Asay
Groklaw
Bradley M. Kuhn
VAR Guy

Oracle Sues Google For Patent And Copyright Infringement

In one of its first big moves with the assets it’s acquired as part of the Sun acquisition, Oracle has just announce that it’s Suing Google for patent and copyright infringement. From the press release:

“In developing Android, Google knowingly, directly and repeatedly infringed Oracle’s Java-related intellectual property. This lawsuit seeks appropriate remedies for their infringement,” said Oracle spokesperson Karen Tillman.

The patents in question are:

* Protection domains to provide security in a computer system
* Controlling access to a resource
* Method and apparatus for pre-processing and packaging class files
* System and method for dynamic preloading of classes through memory space cloning of a master runtime system process
* Method and apparatus for resolving data references in generated code
* Interpreting functions utilizing a hybrid of virtual and native machine
* Method and system for performing static initialization

As Techdirt points out, it’s rare for large Silicon valley tech companies to sue each other like this, so it’s possible there’s more to the story here (and it seems likely the companies may have been negotiating in private for some amount of time):
Over the past few years, Sun has been one of the more outspoken companies against abusing the patent system, with former CEO Jonathan Schwartz explaining that real companies innovate, not litigate. However, Sun and its patents are now owned by Oracle, and apparently Larry Ellison feels otherwise. Oracle is now suing Google for patent infringement, using a bunch of patents that Sun owns around Java, claiming that Google’s Android implementation of Java is done without a license. This is a bit surprising, really, as big Silicon Valley tech companies don’t often get into patent battles with each other — and, historically, when they do launch such patent attacks, it’s usually a sign of something bigger being wrong with the company.

It should be noted that both Oracle and Google are Open Invention Network (OIN) licensees.

A little history on the situation from Ars:
Google makes heavy use of Java in the Android software development kit (SDK). Third-party developers code Android apps in Java, which is then translated into bytecode that runs in Dalvik, Google’s own custom VM. Google subsequently released the Android Native Development Kit, which allows developers to build Android components with C and C++. It is not intended to replace the Java development model, though, which remains the strongly preferred means of Android development.

Aside from its use of Java syntax, Google’s Android SDK implementation is largely independent from Oracle’s. It uses its own compiler and runtime tailored specifically for Android.

Originally developed by Sun Microsystems as a “write-once, run anywhere” language, Java became the property of Oracle when it purchased Sun in April 2009. Java was a significant part of the deal for Oracle, as it has been a major player in the world of Java middleware.

Prior to its acquisition by Oracle, Sun proved hostile to the Harmony Project, the Apache Software Foundation’s attempt to build an Apache-licensed Java SE implementation. In addition to Dalvik, Google also uses Harmony’s class libraries in Android, which has apparently aroused the ire of Oracle.

Carlo Daffara has posted a good analysis:
Let’s clear the table from the actual patent claims: the patent themselves are quite broad, and quite generic; a good example of what should not be patented (the security domain one is a good example; look at the sheet 5 and you will find the illuminating flowchart with the representation of: do you have the rights to do it? if yes, do it, if no, do nothing. How brilliant). Also, Dalvik implementation is quite different from the old JRE one, and I have strong suspicions that the actual Dalvik method is substantially different. But, that is not important. I believe that there are two main points that Oracle should have checked before filing the complaint (but, given the use of Schiller&Boies, I believe that they have still to learn from the SCO debacle): first of all, Dalvik is not Java and Google never claimed any form of Java compatibility. Second, there is a protection for patents as well, just hidden in recent history.

On the first point: in the complaint, Oracle claims that “The Android operating system software “stack” consists of Java applications running on a Java-based object-oriented application framework, and core libraries running on a “Dalvik” virtual machine (VM) that features just-in-time (JIT) compilation”. On copyrights, Oracle claims that “Without consent, authorization, approval, or license, Google knowingly, willingly, and unlawfully copied, prepared, published, and distributed Oracle America’s copyrighted work, portions thereof, or derivative works and continues to do so. Google’s Android infringes Oracle America’s copyrights in Java and Google is not licensed to do so … users of Android, including device manufacturers, must obtain and use copyrightable portions of the Java platform or works derived therefrom to manufacture and use functioning Android devices. Such use is not licensed. Google has thus induced, caused, and materially contributed to the infringing acts of others by encouraging, inducing, allowing and assisting others to use, copy, and distribute Oracle America’s copyrightable works, and works derived therefrom.”

Well, it is wrong. Wrong because Google did not copied Java – and actually never mention Java anywhere. In fact, the Android SDK produced Dalvik (not Java) bytecodes, and the decoding and execution pattern is quite different (and one of the reasons why older implementations of Dalvik were so slow – they were made to conserve memory bandwidth, that is quite limited in cell phone chipsets). The thing that Google did was to “copy” (or – for a better word – inspire) the Java language; but as the recent SPSS-vs-WPS lawsuit found, “copyright in computer programs does not protect programming languages from being copied”. So, unless Oracle can find pieces of documentation that were verbatim lifted from the Sun one, I believe that the copyright part is quite weak.

I have to wonder if the timing of this suit has anything to do with the negative publicity Google is getting over the recent Net Neutrality issue (and also note that the press release occurred right *after* Linuxcon ended, where Linux in the mobile space was an extremely hot topic.). The recent killing of OpenSolaris made some in the Open Source community even more leery of Oracle’s intention than they already were. This suit should serve to destroy any and all credibility Sun had built up in the FOSS world. It may also be the death knell for Java in mobile. It will be interesting to see how Google responds to this, and it’s certainly a topic I’ll be following closely and likely posting more about as details emerge. It will also be interesting to watch how this impacts other Open Source projects that were acquired by Oracle as part of the Sun portfolio.

Finally, James Gosling (the father of the Java) notes:
Oracle finally filed a patent lawsuit against Google. Not a big surprise. During the integration meetings between Sun and Oracle where we were being grilled about the patent situation between Sun and Google, we could see the Oracle lawyer’s eyes sparkle. Filing patent suits was never in Sun’s genetic code.

–jeremy

Additional Reading:

GigaOM
Business Insider
cnet
Joel West
Miguel de Icaza