CEO Larry Page defends Google on the stand: “Declaring code is not code”
arstechnica.com
arstechnica.com
At every step of the way, something or someone outside of your business can topple your personal life and your company's life just for trying to do business in the USA.
So you either try and deal with it, or go abroad and be labeled as something else entirely
No, they aren't being asked to "judge an entire industry on a topic they can't possibly understand". They are being asked to answer fairly narrow questions of fact about specific actions of specific firms.
> Sadly in civil cases the concept of a jury of your peers is not a right. In reality a jury of software engineers and the like would make more sense since they at least understand how software is put together.
To the extent that a "jury of your peers" is a right anywhere in the US (the phrase isn't directly used in the Constitution at all, though the right to trial by jury is held to extend to it), it is, in fact, a right in most federal civil lawsuits with more than a trivial amount at stake. But the concept of a "jury of your peers" never meant people of like specific profession, it originally (in the Magna Carta) meant specifically rather than arbitrary justice of the king, nobles had the right to be tried by fellow nobles, and came to extend to the idea that other defendants have the right to be tried by a jury of the general citizenry. Which is the case with modern jury trials in the US today.
> But that won't ever happen in our system because of the complexity of defining a peer in what might be an arcane specialty (not software but other things).
No, it'll never happen today because that's never what a jury of peers meant in the first place, not because the concept is difficult to extend to arcane specialties.
They are incapable of having the knowledge needed to know when something is bullshit, however, meaning jury nullification is no longer a realistic option.
That sounds ludicrous. What about unit testing libraries, for example?
I believe this was one of Google's initial arguments, but as the DoJ stated when they weighed in:
>"The Android platform uses the Java programming language, but [Google] purposely designed Android not to be compatible with the Java platform or interoperable with Java programs." [1]
[1] http://www.fosspatents.com/2015/05/us-dept-of-justice-finds-...
Better analogies would be Harmony (what Android used) or GNU Classpath.
They did not go after those, one presumes, because those projects don't have billions of dollars to be sued for.
That said, Google should have licensed Java when the good guys were around. Now they are dealing with bloodsuckers :)
This case is more about fair use. Is Google's usage of the Java APIs fair use, or a copyright infringement?
Having said that, IANAL and I could easily be wrong. This is not legal advice.
The real question (which seems already to have been answered) is are APIs a copywritable work, and if so is an implementation that follows the API a derived work? So is it an infringement if I simply implement the API? The original court decision said it is not an infringement, the appeal said it is and the supreme court decided not to hear a further appeal. That's why we are left with a fair use defence.
This is quite spectacularly bad for the industry IMHO, but there is not much we can do about it now other than to have US citizens lobby congress to pass a new copyright law (which seems pretty unlikely). If it turns out to be fair use, that will make it slightly less bad. However, expect rent-seekers to start coming out of the woodwork to sue for implementations of specifications anyway. They know that they can simply sue you for less money than it will cost to defend yourself with a fair use defence. Expect this to be the new patent troll.
It's only bad for the industry as it exists today. Tomorrow hopefully when Oracle wins this as it appears to be a slam dunk, libre software becomes the norm rather than the Frankenstein's monster that Android is. I would either do it all in-house as Apple did with iOS or if you want to create a derivative work, use GPL'd code. Google didn't want to do the hard, time consuming work of API design. If it was the easy part, why didn't they do it?
Open and shut case in favor of Oracle. And after a rough adjustment period, I think it will promote Free Software to new heights industry-wide when they win.
Even GNU is now in jeopardy because who the heck owns the copyright for POSIX??? Is there any license language in the specification saying that you can implement it? I have been too scared to look up until now. This is incredibly important because all of the GNU tools and the Linux kernel have been implemented independently and are not derivations of things like BSD.
No. This is a nightmare for free software because it means that every single RFC in existence now needs a license thanks to copyright lasting for the life of the author plus 95 years. It means that we can never interoperate with services that choose not to grant a license to their API. Even if you reverse engineer it, expect a lawsuit having to defend yourself using a fair use defence.
And if you live in most of the world that doesn't have fair use. Well, you are just screwed.
The only thing this means is that free software will be marginalized. We'll be set back 20 years.
But I did want to clarify one thing you said because I found it confusing.
> The GPL is a license that depends on accepting the license -- or not. It is always acceptable not to accept the license and write your own.
If you do use GPL code you have to also license it as GPL. Any derivative work you create containing even a smallest portion of the previously GPL licensed software must also be licensed under the GPL license. That's what Google meant when they called it infectious and viral. Unfortunately for these large corporations, it was also the solution (other than doing the heavy lifting in-house as Apple did).
When you don't accept GPL'd code, you write your own code and license (or adopt another).
What I don't understand is WHY Oracle wants to go through with long legal battle. They make good revenue on their database ecosystem as well as some other products of dubious value (has anyone ever enjoyed Oracle EBS?). They've secured their interests in Java on the serverside, android is not a threat there.
Is this REALLY all about monetizing their purchase of Sun Microsystems? Seems like a round-about way to make money and it certainly carries a lot of risk.
I'm guessing that Oracle is looking at the short term gains and ignoring the long term impacts. Business as usual in the corporate world. :/
Sun's documentation specified that the APIs were copyright, and in an email on March 24, 2006, Andy Rubin wrote that: "Java.lang apis are copyrighted ... Sun owns the brand and ip [and} Sun gets to say who they license the tck to" (edited for clarity).
That was before Sun went open source.
By 2007, Google was making serious efforts to "scrub" its code for references to Java. In 2010, it said the "bad words" were "Java, License and Patent".
On April 9, 2008 Google's Alan Donovan wrote an internal email to java-users@google.com explaining how to turn off "Sun proprietary API" warnings issued by the Java compiler.
http://www.fosspatents.com/2016/05/heres-mountain-of-willful...
It's pretty clear that (a) Google knew it was using copyright materials and (b) trying to conceal the fact, rather than taking out a license.
On May 9, 2014, the Federal Circuit court ruled that the Java APIs are copyrightable.
https://www.eff.org/files/2014/11/10/oracle_v_google_13-1021...
Arguing that bad laws are bad does not stop them from being laws....
Android could easily have been built on the GPLed version of Java. But again the reasoning behind the decision of building your own JVM is pretty clear: Android wanted someone to buy their company and felt that the GPL might make the sale difficult. Of course with Google buying, they probably wouldn't have cared, but by the time Google was doing the buying, the decision was already made.
Pretty typical story.
The fact remains that not even Google can reinvent the world in their image. Building a whole new language at the same time as a legacy-prone ecosystem requires too many moving pieces to fit together quickly. They picked some middle ground, java allowed them to tap into the large java talent pool (then and now). Reinventing the guts allowed their ambitious engineers to show off, which they did, but maybe not as effectively as if they'd built on top of the work of others.
Why irrational? If they used the GPL, a lot more of Android would need to be open source today, yes? Including proprietary hardware things that can't be open sourced?
Also, they could use BSD code as well that comes with a more permissive MIT licence.
GPL requires you to release the source code to the customer of your software upon request. The person who buys the phone is the customer.
I mentioned GPL in general, not dissecting to the various version, because the parent reply was about Google's fear of GPL (in general).
EDIT: I just realised that OpenJDK is released by Oracle. Never mind!
Oracle is only doing this because they can. They have the money. They have the desire (to fuck with Google). So they do it.
I really don't get the anger toward Google. I don't think they did anything wrong here. If they did, it will haunt a lot of other companies than just Google.
If you check the internal email records, I suspect you'll find that Google thought that it was doing something wrong....
http://www.fosspatents.com/2016/05/heres-mountain-of-willful...
A new language for a new mobile platform would have been disastrous. Could you imagine someone saying her is our phone everyone learn it and make great apps for launch in 6 months?
http://www.trustedreviews.com/news/O2-Unveils-Xda-Orbit-Smar...
Came with Steve Jobs from NeXT and was used in OS X way before 2007 iPhone debut.
Don't you see all those "why we switched from language A to language B" stories that seem to come up every other day? No need to read them. The content is not important. All they ever mean to say is "we were so bored with that old language and now we're thrilled to try something new!"
Against Intellectual Monopoly http://levine.sscnet.ucla.edu/general/intellectual/againstfi...
We should abandon the patent and copyright systems as they are today, they are doing more harm than good.
What is happening now is more like proving to your lecturer that you didn't copy your whole assignment from Wikipedia. You only extracted some information from it and majority are your own.
The problem is that to reimplement the spec in this case, you do have to copy the formal declarations verbatim. Whether or not those "sentences" are protected, and pass the threshold of originality [1], is what is at stake here.
The trial now is about Google's "fair use" of those APIs.
> "Declaring the title of a book is not writing a book"
I think you can make a reasonable analogy there.
This doesn't follow, sometimes language does unexpected things. E.g. a dwarf planet isn't a planet.
Function headers are no more code than a table of contents entry is a story.
Sounds like standard courtroom behavior to me
The audacity of Google is astonishing. Betting your mobile business on stolen concepts and getting all third party vendors on board despite the imminent legal trouble is quite a feat.
I actually hope for some fallout for Google; anything else would be a travesty.
On the one hand, RMS has said that "just using structure definitions, typedefs, enumeration constants, macros with simple bodies, etc., is NOT enough to make a derivative work. It would take a substantial amount of code (coming from inline functions or macros with substantial bodies) to do that".
On the other, I imagine that somebody could get in trouble for e.g. copying the files under linux/include and providing a proprietary implementation underneath (unlikely scenario, you get the point).
To me, that's akin to the NSA collecting phone call metadata and then claiming that it's not really a problem because they don't actually have the contents. Except, as we know, with sufficient metadata, you don't even need contents to figure out what's going on.
The same goes with APIs. With sufficiently comprehensive APIs or sufficiently advanced programming language facilities, which are becoming more and more commonplace (more sophisticated static type checking, macros, and template metaprogramming), more and more information becomes encoded in the declarations, to the point where you really can't claim that the declaration isn't something you should be able to copyright. With the Java API under consideration I agree that the APIs probably shouldn't fall under copyright, but I'm not sure I agree with this precedent being set here more generally.
I don't see how this is true at all. We've moved continually toward higher-level APIs. There's a lot more "magic" in String.split than strtok.
If your API is so specific that the implementation is entirely implied by the declaration, then all that means is that the implementation itself is trivial, in which case I don't think your API implementation should copyrightable either.
The recent criticisms of ASP.Net Core's API changes or PHP's "interesting" APIs over the years surely demonstrate that writing language APIs is hard.
If I declare my api uses
a GET to /user/:id to get a user, does that interfere with someones copyright that has an api that uses a GET to /user/:id to get a user (everyone I think)?
This is just a declaration. The actual code is buried in the methods and means that actually GET the user.
This is not quite what is going on with this trial, but it's a very simplistic version. If we can't use the same declared API end points, then it will be much worse than patent trolls.
Tim
Though a ToC can be copyrighted. Imagine the situation of a physics text where there may be only a handful of reasonable ways to break down the information and order it. Would it be reasonable to sue someone for having the same ordering (deliberately in this case), but with the content rewritten from scratch (ideal since Google does have those 9 offending lines).
If it weren't for the dreaded consequences to the industry, I would love seeing Google losing this. They well deserve with these attitude. But then I remember their enemy is Oracle. Oh my, I will close my eyes and flip a coin...
As you pointed out, this case had far ranging consequences for the software industry and any personal opinions of how much you personally like or dislike any company need to be 100% put aside.
No matter what the result of this will be, it will be sad. They are the worse that can happen to software industry.
In the last big thread I asked if anyone could provide concrete examples of terrible things that would happen if Oracle won. I didn't get a good response but the comment was buried. My question stands if anyone has a good answer. I'm very open to discussion here.
- Wine and ReactOS would become illegal. In fact, any layer to run Windows apps would become illegal. The only way to run a Windows app would be through Microsoft's blessing
That's a pretty big one.
That would, for example, prevent every browser after Netscape from building javascript into their own browser.
It might have prevented Mono from existing.
It would have prevented Atom and Sublime from being able to use Textmate syntax files.
Are those bad things? I believe they are.
the practice that interfaces are copyrightable seems to has been in place for quite some time. AMD couldn't make Pentium socket compatible CPU. We have LGPL for the same reason. The miracle of IBM compatible BIOS may be attributed only to accidental benevolence of IBM :)
Google is on the receiving end right now, yet the copyright protection of the interfaces plus DMCA is what gave rise to the "platforms", and Google just happens to be a one of the 3 largest ones. Unfortunately one can't have it both ways.
Anyway, Stalman's preaching may happen to be just a very concrete practical advise after all :)
https://en.wikipedia.org/wiki/Advanced_Micro_Devices#K5.2C_K...
"The K7 was AMD's seventh-generation x86 processor, making its debut on June 23, 1999, under the brand name Athlon. Unlike previous AMD processors, it could not be used on the same motherboards as Intel's, due to licensing issues surrounding Intel's Slot 1 connector, and instead used a Slot A connector..."
What bad things would happen?
* Compiling against any C header files, such as kernel headers, is called into question. This has massive ramifications because of many for-profit businesses that compile against the headers of GPL code, as is standard practice.
* Amazon S3 API is widely implemented by other cloud storage providers. Sharing an API between products makes it easy for customers to switch one application between different providers.
* This is copyright, not patent. Which means there is no requirement to register a design, no oversight and no cost.
* It could cause a rush of people just writing obvious API combinations to be the one who "got there first" and potentially harm their competition.
https://www.publicknowledge.org/news-blog/blogs/why-you-cant...
Sure. That's plausibly reasonable. The API definition is significantly more detailed that just the method names. The metal box maker could easily have created their own API. But instead they use an API created by someone else.
* Compiling against headers is an important issue. That would be bad. I raised this question in the last thread but it didn't seem to be an issue.
* A closed S3 API seems fine to me. Amazon doesn't have an obligation to make switching easy. At the same time they'd have incentives to make their API open to encourage people to start using S3. Permissive open source software is exceptionally popular these days. If Amazon wants to write a closed API that presents an opportunity for someone else to write an open API.
* I think we'd be in a much better place if software could NOT be patented but APIs were copyrighted. Implementation code is already under copyright.
* I don't think "got there first" is a real concern. TCP and UDP both define connect(), send(), and receive(). But they are radically different APIs with radically different specifications.
Thank you for your thoughtful reply. This is a good discussion.
[1] Knowingly or otherwise. If a dev bases their code on a Stackover Flow answer they could be unwittingly using closed code.
For example, I wouldn't detect your code snippets from stackoverflow but would be capable of creating a very comprehensive list of third-party dependencies you are using.
There are companies completely dedicated to the software originality topic: http://triplecheck.net/
def payEmployeeForOneDay(rate: Int, minutesWorked: Int = 8) = {
// other stuff here
}
As you can see, there is a bug here. This method used to have a parameter hoursWorked with a default of 8 (a reasonable default!). But then it was changed to minutes and someone forgot to update the default. Because of this, some people ended up getting paid 1/60th of what they were supposed to.That's a declaration but it certainly looks like a bug in the code to me!
Larry is being absurd.
If it's in a file with a .java extension (or .scala, or .c or even .h) it's code. If it's source that a compiler or interpreter sucks in then it's code.
Setting a default value for an argument is an assignment, a real action that is taken by the code at runtime. The Java equivalent would be in two (or three, depending on how you count) parts, something like:
// Do the things.
// If minutesWorked is left at -1, this procedure will use the default value of 480.
void payEmployeeForOneDay(int rate, int minutesWorked) { // inert declaration
if (minutesWorked == -1) { minutesWorked = 8; } // active code with bug
// ...
}
Here we have a human readable specification of behavior, which has zero impact on the compiler or generated code, a machine readable description of an interface for other bits of software to interact with this bit of software, and some working code that will make something happen.This is interesting because the specification being described and implemented is not fully encapsulated by the function declaration/API, but also by the "non-code" english comment attached to it.
Is it fair use for me to copy this API by using the same function declaration but rewording the documentation, but writing my own implementation of the function body to correctly match the comment? What if I implemented a bug-compatible version of the body from scratch, and rewrote the comment to match?
What does one say of http://patft.uspto.gov/netacgi/nph-Parser?Sect1=PTO2&Sect2=H...
https://en.wikipedia.org/wiki/Wikipedia:Copyright_in_lists#A...
Hence the question ..
Right? http://arstechnica.com/tech-policy/2016/05/top-programmer-de...
If it's Larry, then it is interesting to see this sort of laziness when so much money is at stake.
Terrible to read what a song & dance Oracle is putting on. 11,000 lines of code! gtfo
This sentence sounds pretty odd to me. What does Larry Page mean?
I'd argue that code that "compiles to nothing" can be protected by copyright, too, even if it is not distributed to customers. E.g., extensive documentation inside comments in the source files is definitely copyrighted. Complex build rules might be copyrightable, too, although they definitely end up in the distributed application.
Therefore, it would probably be counterproductive to assert such a thing in court.
Unless that claim about interfaces becomes crucial in some unforeseen way.
Describing interface with words is exactly the same as declaring it with code. So such code is nothing more or less than verbal description of the interface (or any other description of it using any other syntax).
Not sure if that helps. If you can copyright interface, or just algorithms. Unless Java interface was specifically made free and open by Sun then it's really clear cut case.
Constraint logic programs seem more of the grey area I think you're talking about. Is a set of constraints "code" (c.f. https://en.wikibooks.org/wiki/Prolog/Solving_a_Logic_Puzzle#... )?
As it stands, this title is extremely confusing.
I told you we should have bought Sun!
Buying Sun is literally cheaper than this lawsuit. Oracle is so ridiculous.
I don't know when Oracle bought Sun (didn't look it up), but this is not what the sentence(s) is(are) implying.
The lawsuit began when Oracle sued Google in 2010 over its use of 37 Java APIs, which Oracle acquired when it bought Sun Microsystems. In 2012, a judge ruled that APIs can't be copyrighted at all, but an appeals court disagreed.
Not sure what confusion could arise from this.
Oracle announced buying Sun on Apr 20, 2009.[1]
The deal may have taken a while to complete (as late as 2015), but Oracle got to integrate Sun's assets into Oracle as early as 2010, and indeed that is when everyone (including Oracle) believes Sun was acquired.
----
0: http://i.i.cbsi.com/cnwk.1d/i/ne/pdfs/FINAL_Complaint.pdf
Also, you can easily screw your perf with bad interfaces (especially in C++). E.g., not templatizing, requiring extra allocations, type impedance mismatches, vtable bloat, etc. The interface certainly affects how the machine executes your code.
It's the fact they bought Sun with the intention of suing Google in order to profit from Android's success. If it was Sun suing it would different.
After Elon Musk pledged that other car manufacturers could use Tesla's patents is Larry Ellison going to wait until all cars are electric and Tesla is a minor player before buying them out and immediately turning around and suing the entire industry?
It really irks me that some of these lawyers, aside from having to do their job feel they have to be dicks about it too.
I sat on a jury once where the behavior of the prosecutor really hurt his case, because he acted like a total dick and was demeaning and rude towards the defendant. In theory that should have nothing to do with the actual merits of the case, but people being people, it created a certain measure of sympathy for the defendant.
In the end, we acquitted the guy for a number of reasons (mysteriously "missing" evidence, an incompetent investigator, perception that the investigator and victim may have lied, etc.) but the prosecutor's behavior was definitely something that all (or most) of the jurors picked up on and commented on.
I believe that simple things like how the prosecutor (or the defendant) carry themselves, and how they act towards other participants in the trial, can absolutely affect the outcome of cases, at least sometimes.