Google has accused Oracle of doctoring the code samples that allegedly prove Mountain View pilfered Oracle's copyrighted Java code in building its Android mobile operating system. Late last month, as part of its ongoing lawsuit over the use of Java in Android, Oracle waved six pages of Android code at a federal court (see below …
Commitment to partners?
@Google: "Any use  of any protected elements  was made by third parties..."
Wow - way to backstab your business partners! There goes the "do no evil" - Google is shaping up nicely as another Microsoft.
Nice tactic by Google, who seemingly have shoulders more sloping than many of the managers I have worked for.
Also nice (paraphrased): "we are not guilty, but even if we are it's not us who develop it", way to create a relationship.....
Quite how they can claim this is different code based on the examples I don't know? I assume google are saying that they have added in their own code comments, and that these are making the base work significantly different to the oracle.
Oh and btw, expect to be utterly downvoted by the droidboi's for daring to question the love of their life. I am guessing at 10 downvotes...
I'll be sticking to my 6310i for a few years yet then.
Actually I beg to differ here
Microsoft never backstabs its channels on patents and copyrights. In fact it is an explicit part of the licensing arrangements that it will take over the litigation in such cases. It makes a very big point out of it in their marketing.
It is Google speciality to treat the middlemen as per the old Russian proverb (not surprising considering Mr Brin original nationality) which starts with the tradesman is silver, the customer is gold and finishes with: "A posrednik - gavno" (and the middlemen is sh**e). In a world where most companies follow the Microsoft example and ignore the end-customer in favour of the channel this will often give a company a competitive edge (Apple is another one using same approach). It may however backfire in the most spectacular way on occasions.
My gut feeling is that this will be one of those times. Mr Ellison is not someone who will give up a fight easily. Google has finally encountered a company that operates a "confirmed kill" policy in its conflicts and will not back down at handwaving and PR. This one will be lots of FUN to watch.
In any case, it is well deserved as Google should have gone with something like python which is not patent-encumbered and achieve the same result. FFS, Apple managed to make developers swallow Objective C. If that is possible, anything is. Even Perl.
Not like Microsoft
If I understand correctly, Microsoft indemnify licensed users of their code against patent action. Basically, if you buy MS software, and it's found to be patent infringing, then Microsoft is liable, but their users are not. The hidden cost/risk of Open Source software? I know many people shy away from GPL and other Open Source code because of this - they would rather pay money for proprietary/licensed/indemnified software, than risk a legal black hole.
That's not backstabbing
It's a statement of fact. The OHA must have understood the busines context when they entered into the agreements.
@Anton ... you must be new around here...
I suggest you talk with a bunch of Silicon Valley survivors from the late 80's and 90's. There are enough people who can tell you horror stories. ;-)
Microsoft has a nasty reputation because of their past actions before being found guilty of being a monopoly.
If they got caught pulling the stunts they did... they would be very expensive mistakes because they are now recognized as a monopoly by the courts.
Re: Commitment to partners?
> Wow - way to backstab your business partners!
Not so. This is simply a "safety in numbers" defence.
Google's statement here boils down to "we didn't do this - and it's up to you to find out which of your customers actually did".
It's a neat trick, because it means that even if Oracle were to be successful in their suit (and not this one - a suit against someone else), any victory would be entirely Pyrrhic.
Of course, it's just one defence of many in Google's filing. I suspect there is a pitched battle ahead of us - and I don't rate Oracle's chances that much. Google will undoubtedly take some pain - I think they will consider that a bargain price for what they will achieve.
However the biggest question is....
Did Oracle remove the space between "if" and "(" from google code ?
Or is google saying we put it but Oracle removed it.
Or is Oracle saying that we had it but google deleted it.
It's all very confusing.
ps: (The current code is following "if(" instead of "if ").
paris, coz she doesn't like a space between if and butt, either.
Rule No 1 of the Software Club is
Rule No 1 of the Software Club is that you never ever offload responsibility to customers on a product you support or develop.
If you do, that customer will never come again. Oracle has just managed to achieve the goal of its lawsuit even before the lawyers have started their arguments. All it needs is to take this PR, get the BIG RED HIGHLIGHTER and send it to every handset manufacturing company out there.
Oh, well, I guess I will stick to Nokia then. It may be designed by a matrix talkitechecture product committee, it is UE may be utter crap, it may be anything but innovative, but its ecosystem - sofware, accessories, etc will be there in 2 years time.
The title is required, and must contain letters and/or digits.
They might be there but still nobody will want them
my reaction as well
I think Google have just painted a large red target on Android and sent a messge to every IP owner saying "Come and get me".
@Welcome to "Software Club"
Rule No 1 of the Software Club is that you never talk about the Software Club! ;)
Welcome to the 21st century
Nokia user! I guess the BB of the early minimum, the iPhone of the late 00s and the android of today have all passed you by ..
Give your phone to the third world and move forward
Not us, guv? Weego
That last paragraph - are you sure?
Sounds like a valiant attempt to snatch defeat from the jaws of victory in the growth market of our times. Will Nokia/Intel finally get their act together and claim the field for meego now?
meego is for facebook loving teen girls
Meego is the most lego tinker toy linux I have ever seen. The UI blows chunks. The only good thing about it all is the very fast boot time.
ANDROID TROLL ALERT
You think MeeGo's UI is girly... So that's the kind of argument the fandroids have been reduced to...
not the same
similar but not the same. there's only so many ways to do something in code. it's not hard to find something similar in thousands of lines of code. to the untrained eye they don't even seem to do the same thing.
You must be having a laugh
The example is SO obviously copied that it's barely worth discussing.
The only change that's been made is to anonymise the constructor parameters from something meaningful to "Set1" etc. presumably so that the public API looked a bit different to the casual observer.
The biggest giveaway (other than almost all the lines and formatting being identical) is that the original class has a mistake in the naming of "isImmutable" - it's member and the standard in play here appears to prefix members with "m". This mistake has been carried through to the Android version.
The argument that there are only so many ways to do something might have some merit sometimes but certainly not here. Either you didn't look at the code or you don't know how to read code.
I'd run that code past TheDailyWTF
It seems the android version is a bit more sane --- no "mCriticalityIndicator = CriticalityIndicator" and other obvious typo/bug-creators.
There is no "mCriticalityIndicator = criticalityIndicator" because the Android version uses "flag" instead of "criticalityIndicator" as the variable name. The "m-" version is just the stored copy of the passed in variable, therefore the Sun/Oracle code makes sense.
Without looking at the function signature, can you tell me what the difference between "flag" and "flag1" is?
What about "criticalityIndicator" and "generatedByPolicyMapping"? (much easier this time, no?)
A big Oracle mistake here
"Additionally, it modified the technology so it is not compliant with Java's central design principle to 'write once and run anywhere.' Google's infringement and fragmentation of Java code not only damages Oracle, it clearly harms consumers, developers and device manufacturers,"
This is only true if and only if Google calls Dalvik a Java implementation, and as far as I know they are beign very careful not to do it. Oracle argument is fallacious and tries to mix two very different things:
1- When language A is a superset or subset of B, you can then recompile source from A wth B'c compiler or viceversa. Saving for platform differences, which you can avoid if you are careful enough, that would give some merit to the argument. You can usually compile C code with a C++ compiler. Can you take a Dalvik program and compile it under Java or viceversa? Mmmmm.....
2- It is usual for languages and VM's to evolve. Following Oracle's argument, Sun should have licensed everything back from the first LISP garbage collector.
This software patent thing is so deeply flawed. Can we civilized europeans at least stay away from it? Are software or algorithm patents enforceable outside the US of A?
Re: A big Oracle blah blah blah
Actually, Oracle are trying to cover all cases with the lawsuit. First, they claim that Dalvik violates Java's license by not conforming to the license, to which Google is expected to reply with "Dalvik is not Java". Second, Oracle then claims that, since Dalvik is not Java, but is clearly derived from it, then it violates intellectual property rights.
They could have gone in reverse and accuse Dalvik of violating their IP rights by being a Java derivative, to which Google would have been expected to respond with "Dalvik is a Java implementation, which is why it derives from Java" To this, Oracle would then come back with "then it violates the license, since it does not conform to the specificiations."
The first attempt makes more sense, and so they went with it.
Honestly, I think Google is in trouble here, and Oracle will not relent easily. Moreover, Google is not making things better for itself by alienating its partners with comments like "not our problem, they did it!"
There must be a reason you posted your comment as an AC. ;-)
Understanding the law isn't one of your strengths now is it? :-)
Google can call their version of Java 'Tim' for all anyone cares, but its still a derivative of Java.
Clearly not a clean room version either.
Oracle is correct in their assertions. Note this doesn't mean Oracle will win, or that they have a slam dunk of a case. The law is intentionally more confusing and ambiguous so that each case is decided on their merits and arguments raised in courts.
Oracle is correct that Google did in fact copy code. They have their smoking gun.
> Understanding the law isn't one of your strengths now is it?
Is it yours?
> Google can call their version of Java 'Tim' for all anyone cares, but its still a derivative of Java.
That is completely wrong in every respect. Dalvik is *not* Java. Java is not appropriate for the platform, so Google used something else.
The closest it comes to Java is that some of the application code running on it will initially be coded in the Java language - but all the patents Oracle has asserted read on the JVM, not the Java language. Although both language and VM use the word "Java" in their names, these are most assuredly not the same thing.
> Oracle is correct that Google did in fact copy code.
Oracle has, to date, come up with one file in a test directory that they claim is close to a file that they themselves distributed under GPLv2 with ClassPath Exception. I can see three reasons why that would constitute lawful redistribution - two of which are sure to work, the other one being a "probably".
It's the other way around
The mistake for Oracle would be to do an Obama and be wishy-washy in attacking Google and defending their IP. Throwing the kitchen sink at Google is the way to go for Oracle. Google is a big bully and what you have to do with bullies is to hit them so hard they'll learn not to mess with you. In this case Google got what they didn't expect. They knew that Sun was a pushover but they didn't plan a fight with another bully like Oracle. It'll be fun to watch.
Seems fairly obvious
The arguments to PolicyNodeImpl() are anonymized (bad code style) and its visibility is changed, the assignment of isImmutable was moved, and braces are added to if statements (good code style), but otherwise the code is identical, so someone clearly copied it. I'm sure there's a version control system somewhere that can identify who did it.
That said, I'd still like to have the original code as well, to see how much "adjusting" Oracle did for their presentation of it.
Interestingly it only seems to be used by tests, so I would not expect it to ever be deployed on any android device. Also the code has the following comment, if this is wrong one whoever added it is to blame. The original file is GPL'd, so there is a violation if the code really wasn't licensed, however it is ONE file, as supporting evidence to Oracles claim it's hardly even considering.
"Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership."
Notice file is at http://android.git.kernel.org/?p=platform/libcore.git;a=blob_plain;f=NOTICE;hb=HEAD
Sue them both for bad programming practices!
Both pieces of code have a bad smell. Naming variables set, set1 and mParent is bad practice of which no programmer should be proud.
Bad Variable Names
I've read somewhere (sorry, I forget where) that variables names like set, set1, mParent etc are classic signs of source code obtained through decompilation. Since the decompiler knows the data type (e.g., Set), it names the instance variable accordingly (i.e., set, set1, set2, ...). For Booleans, it would appear to use flag, flag1, flag2, ...
This alone may be seen as not damning enough, but consider the fact that braces have been added around the if statements. Why is this important? Well, using braces is _good_ programming style. But using crap variables names is _bad_ programming style.
If Google coders are writing code with braces around if statements, then they should also be using meaningful variable names (since the latter is typically more important than the former from a readability/maintainability perspective).
As such, I would suggest that the Android code snippet was automatically generated by a decompiler (it is trivial to add braces, but not trivial to come up with meaningful variable names).
Managed to dig up the code in question. While it's still obviously copied, Oracle is indeed being somewhat disingenuous, as they use generics while the Android code does not.
I think they're claiming that the copied code was from an earlier version, before the generics.
There's a blog around somewhere where the guy linked to both files being discussed.
This sounds a little like Google is clutching at straws - from what I've seen, Oracle haven't changed much at all...
The Google code looks very much like decompiled code, from the argument names. But I may be wrong.
Disclaimer: Android user
Oops. Didnt google sell a "google" branded Android phone at the Google shop?
Looks like it just passed responsibility to itself. They could try googling "better lawers".
Yes, now what was it called.......
......something beginning with N was it not - some kind of trailblazer that Google are inordinately proud of - gave to a whole gang of devs or something?
THat wasn't how I read it
I was reading it as Google saying, you aren't just taking us on, you are taking on the OHA members too, just to give Oracle pause for thought.
PLUS, Google has to present EVERY defence option at this stage, or they can't use it later, hence a shedload of slightly bizarre looking defence options
A big boy did it and ran away
Some really excellent arguments from Google there, I particularly like the one where they state that the code doesn't look quite as similar if you leave the copyright headers on.
But remember kids, it's OK to be an IP thief if you open source.
google biz model
Don't lump the whole open source ecosystems with Google. Google is a giant advertising company that found a loophole in GPL v2 that allowed it to make billions (the whole software as a service doesn't require source code release). Hardly a good example of a company that plays nice in the open source ecosystem.
HTC, Samsung and the rest just readjusted their pants.
Looking at the *rest* of the file, they doesn't look nearly as similar. The Android code is a good bit uglier by not using generics or for:each constructs, return statements on void methods, hardcoded constants.
No, they're identical
As has been pointed out umpteen times, the Android file is obviously the result of decompiling the Sun class :
- The class file contains the names of member variables but not locals. Hence the names and ordering of the private variables are the same, but the method arguments have been changed to "boolean flag", etc.
- Java implements generics via type erasure. The type arguments are removed by the compiler and are not stored in the class file. Which is again why the generics inforation is missing from the Android version.
- for/while loops, etc. are translated into compares and branches in the class file. A decompiler doesn't know what they were originally, and will convert them all to the same generic while loop.
- References to constants are replaced by the constants themselves when compiling. Hence the use of hard-coded constants in the Android version.
To somebody who knows the class file format, the two files are identical in every way.
It's obviously somewhat based on the reference implementation of Java (Hotspot) but that's legal since it's the reference version which licensees are aloud to create their own class libraries and JVM from, which is what IBM did with Harmony/J9, wrote their own version/implementation, they are also a company that developed much of the reference implementation! Hotspot is GPL though, but even so IBM would have no problem analyzing the reference implementation since they have their own licenses rules for the code, binary and java itself. It's obviously legal, not needed and not anything Google did. Without IBM you don't have Java. Without all the other partners contributing to Hotspot and JCP you wouldn't either. Obviously JCP is set up so you are actually allowed to implement your own version of Java, based on the reference or otherwise. Anything that passes the TCK is certified Java (Android isn't). Java isn't in the hands of just one company. It isn't the IPR of Oracle. And Android just uses third party class libraries originally from IBM. One of the biggest contributers to Java.
> Obviously JCP is set up so you are actually allowed to implement your own version of Java,
This is what's behind Apache's recent problems - they cannot certify as Java because of the field-of-use restrictions that Oracle maintains on the TCK - which restrictions Oracle agreed were unacceptable when it was Sun doing the restricting.
> Java isn't in the hands of just one company. It isn't the IPR of Oracle.
Yes, it is. And Oracle currently seems to want to exercise those rights to the detriment of the JCP. This is probably a mistake.
Open Handset Alliance
Google need to watch who's toes their stepping on. "Android isn't developed by Google. It's developed by the Open Handset Alliance". I'm with @Ralph 5, they're passing the blame on to all of the other manufacturers and developers in the OHA.
....nonethless Android is developed by the OHA not Google. As to passing blame, that's exact right down to timestamp and the individual developer responsible.
What about the Nexus One?
Developed by Google if I recall correctly.
Seriously, what the...
Google's "don't be evil" motto evidently doesn't apply to its Android business partners.
I always wondered why they didn't come out quickly and say they'd help defend HTC et al against patent claims but figured they were keeping quiet for strategic reasons and would ride to the rescue when it made best legal sense to. Turns out they were actually keeping quiet because they never intended to help defend their business partners at all.
I can't believe how stupid this is. I always thought Google at least had the moral high ground here, but these weasily statements are unexcusable. As previous commenters say, this might actually really hurt Android.
Flash Gordon To The Rescue !
And save us from Ming The Merciless or he will extortionate contracts and slimy salesmen.
If you see his imperial cruiser approaching then run for your lives.
Pretty novel interpretation of copyright law, if you ask me...
Quite apart from whether actual copyright infringement has occurred, which, given Larry's constant testosterone problems, may quite well not be the case, I have never heard of a plagiarist attempting to shove off the responsibility of his copying to his readers...
Or am I misunderstanding something?
There's a couple of things that we're seeing in the news blips...
1) Google - if we copied it, we did so under fair use.
2) Google - its not just Google, but the OHA.
Both of these could qualify again as 'affirmative defenses'. That is... if what Oracle says is true, we're still not guilty of anything.
The first is the misapplication of the copyright law. Enough people have looked at the code and real developers are convinced that its a copy of Oracle/Sun's code.
The second is that Google is attempting to deflect the code breach by saying that there are others involved and it wasn't them, thus the burden of proof that the offending code came from Google is being laid on Oracle's doorstep because Oracle is suing Google and not the other OHA members.
What Google is attempting to do is a bit of misdirection and 'smoke and mirrors'. They got caught with their hand in the cookie jar...
What is PolicyNodeImpl even used for?
A browse through the source suggests PolicyNodeImpl is an implementation of a node for holding a bunch of certificates in a tree as part of the Public Key Infrastructure (PKIX). It's role is hardly earth shattering - it has methods for getting it's parent node, it's child nodes, and a few methods for getting things associated with the node. It is by any definition a trivial class. If a programmer were tasked to implement PolicyNode (the public interface that the Impl implements), it might take them an hour or two at most.
Why the Sun & Android version look similar is anyone's guess. My hunch is someone either appropriated the GPL'd version or decompiled the class and stuck it in. Either is likely. What I want to know is if this is an isolated case, or if there is more. For example, what about the rest of PKIX, is that tainted or just inexplicably this one file?
If that's all there is, then I think the copyright argument is quite weak. Even if it is proven to be copyright Sun, the class is trivial, the source of it is open source, and this is one file amongst tens of thousands.
And it is a used as a test class
By the looks of it, so is never deployed so there should not be any android phones out there with a derivative of the GPL'd code on them.