gnu-misc-discuss
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

GOOG's Android gambit [was: Re: The death of the GPL and "Free Software


From: Alexander Terekhov
Subject: GOOG's Android gambit [was: Re: The death of the GPL and "Free Software"]
Date: Wed, 14 Nov 2007 19:27:14 +0100

Tim Tyler wrote:
> 
> rjack wrote:
> 
> > Google just announced the end of the GPL and the Free Software
> > Foundation's "viral" FUD.
> >
> > http://blogs.zdnet.com/Burnette/?p=428
> 
> A ridiculous subject line.

Somewhat related:

http://www.betaversion.org/~stefano/linotype/news/110/

------
Dalvik: how Google routed around Sun's IP-based licensing restrictions
on Java ME

November 12, 2007 ~ 15:10

Sun released their "free java" source code under the GPLv2 to both win
the free software crowd and capture peripheral innovation and bug fixing
from the community. For the java standard edition (aka "the cat is out
of the bag") there is an exception to the GPLv2 that makes it
"reciprocal" only for the Java platform code itself but not for the user
code running on it (or most people wouldn't even dare touching it with a
pole).

But such exception to the GPLv2 is not there for the mobile edition (aka
"where the money is").

This brilliant move allows Sun to play "free software paladin" on one
hand and still enjoy complete control of the licensing and income
creation for the Java ME platform on mobile and embedded devices on the
other (because cell phone makers would rather pay than being forced to
release all their code that runs on the phone under the GPLv2... or, in
many cases, they can't even if they wanted to as they don't own the
entire software stack).

Which is also why their TCK license they offer for free to Apache to
certify Harmony (which is a 'standard edition' implementation but could
be easily turned into a mobile edition one) includes 'field of use'
restrictions. It's funny that Sun's own CEO considers the very same
'field of use' restrictions ridiculous (but this is it is Sun to have
such field of use restrictions applied on them), but Sun imposes them
nevertheless and no open letter has been able to change their position.

This is the stall in which Google announced the release of their Android
platform, which would be able to run Java applications on a mobile phone
but it would also be released under the Apache License v2.

This raised more than one eyebrowse, and sure did make me raise mine:
how did Google manage to get Sun to license off a platform that could
very well kill their own?

Turns out, they didn't: their move was even smarter than Sun's.

Today Google released the Android code and I took a serious look at its
internals... and found the solution for the licensing problem. It's
called Dalvik and it's the new name of Sun's worst nightmares.

Dalvik is a virtual machine, just like Java's or .NET's.. but it's
Google's own and they're making it open source without having to ask
permission to anyone (well, for now, in the future expect a shit-load of
IP-related lawsuits on this, especially since Sun and Microsoft signed a
cross-IP licensing agreement on exactly such virtual machines
technologies years ago... but don't forget IBM who has been writing
emulation code for mainframes since the beginning of time).

But Android's programs are written in Java, using Java-oriented IDEs (it
also comes with an Eclipse plugin)... it just doesn't compile the java
code into java bytecode but (ops, Sun didn't see this one coming) into
Dalvik bytecode.

So, Android uses the syntax of the Java platform (the Java "language",
if you wish, which is enough to make java programmers feel at home and
IDEs to support the editing smoothly) and the java SE class library but
not the Java bytecode or the Java virtual machine to execute it on the
phone (and, note, Android's implementation of the Java SE class library
is, indeed, Apache Harmony's!)

The trick is that Google doesn't claim that Android is a Java platform,
although it can run some programs written with the Java language and
against some derived version of the Java class library. Sun could
prevent this if they had a patent on the standard class library, but
they don't and, even if they did, I strongly doubt it would be
enforceable since Android doesn't claim to be compatible (and in fact,
could very well claim that their subset/superset is an innovation on the
existing patent and challenge Sun's position).

Not only this allows Google to avoid having to battle thru the JCP for
any change to the Java ME "standard" or tolerate Sun's unique ability to
veto any JCP change, but gives users a much more 'fresh' and modern
class library to play with and built-in hooks to all the hardware
features of your phone, including things like OpenGL, bluetooth, USB and
all those things, which don't come with the standard Java ME and
therefore cannot be taken for granted by the developers.

So, here we are: Apple makes the iPhone, incredibly sweet, slick and
game-changing and yet incredibly locked. Google makes Android and not
only unlocks development abilities on the mobile phone but also unlocks
millions of potential Java mobile programmers from Sun's grip on it.

Plus, they're targeting 3G phones, not the crappy 2.5G that the iPhone
supports now.

Screw the iPhone and screw Java ME with all its profiles, midlets and
the stupid requirement to crypto-sign your application to run on your
own phone: I can hardly wait to get my hands on hardware that can run
Android... and if they can't support multi-touch out of the box because
Apple owns patents on it, I'll download the patch that enables it from a
country where such nonsense doesn't apply.

Update and Errata (a few things worth pointing out):

The Android SDK does not compile your Java source code into Dalvik's
bytecode directly, but it first uses a regular java compiler to generate
regular java bytecode (say, javac or the built-in Eclipse compiler) and
then converts that bytecode into Dalvik's bytecode (the "dx" tool does
this: convers .class/.jar into .dex files). Still, the substance
remains: there is no need to ship a java virtual machine on your
Android-powered phone and you can use your regular Java standard edition
to develop your phone application (means, you don't need to use Java ME
anywhere at all). 

Google has released the binary SDK for Android and only the source code
for the examples. It did indeed contribute patches to the Linux kernel
to support 3G Qualcomm chipsets (under the GPLv2, so that it wouldn't
create a impedance mismatch in the kernel ecosystem) but it has not, to
this day, released the source code for Android itself even if it has
explicitly claimed in their announcement that they will do that in the
future and under an Apache License v.2. I strongly doubt this will
include source to every single piece of the Android middlewere (the
video codecs seem the hardest part to relicense) but I really hope that
the Dalvik VM itself will be open sourced or a lot of the appeal of this
platform will just vanish. 

A good friend reminded me that there is no such thing as "routing
around" IP licensing restrictions and that bigco routinely use shake-up
moves like these to re-establish alliances or to call other bigco's
bluff. It is worth nothing that Sun has never made available a public
list of the IP they own and that you need to license in order to legally
be able to run Java (personally, I think they don't know themselves:
such things are really tricky to figure out, even internally). All their
licensing deals (including the one with Microsoft) have been broad and
very general and there is no way for us of knowing if Android infringes
even just one of the patents that Sun owns around the Java platform (my
friend suggests java's internal security manager, which is clever and
original, but that depends on whether Dalvik supports the same model or
a sufficiently different one to stand in court). 

The Apache License v2 forces the contributor to license the IP along
with the code but only the IP that the contributor owns (you can't give
away stuff others own, obviously). This means that if Android does, in
fact, use some of Sun's IP, it is entirely possible for Sun to sue any
hardware vendor that ships Android with their phones and prevent them
from shipping. Also, Sun could knock at your own door and ask you to
license the Java IP that you need to be able to run Android on your
phone (in case, say, you bought an OEM phone and installed the software
yourself) even if there is no trace of 'java' on your phone memory. 

Sun is under fire for IP issues related to ZFS and they claimed that
it's an "attack on free software". I'm curious to see how they're going
to spin their own IP attack on Android (because I bet there's going to
be one). 
------

:-)

regards,
alexander.

--
"The revolution might take significantly longer than anticipated."

                                     -- The GNU Monk Harald Welte


reply via email to

[Prev in Thread] Current Thread [Next in Thread]