Join 3,495 readers in helping fund MetaFilter (Hide)


These APIs© Oracle Corporation
May 12, 2014 7:45 AM   Subscribe

The Oracle vs. Google decision has been reversed.

Next is determining if Google's use is still fair use. Some feel this decision is very dangerous.
posted by juiceCake (151 comments total) 10 users marked this as a favorite

 
Fighting over the Java api is like trying to claim the smelliest fart in the room.

When really they should just all be namespaced.
posted by srboisvert at 7:54 AM on May 12 [5 favorites]


Wow. Talk about your all time innovation killers. Want to make a competing service with a compatible API? Fuck you, it's copyrighted.
posted by Talez at 7:56 AM on May 12 [10 favorites]


Old judges make bad tech law.

The original judge was a rockstar; if I recall correctly, he even learned (some) Java in order to get a better grasp on the case.
posted by jsturgill at 8:04 AM on May 12 [22 favorites]


Twice damned is my business plan of photographing Java APIs against a white background.
posted by fleetmouse at 8:06 AM on May 12 [49 favorites]


And thus the law continues to bang square pegs into round holes and make an ass of itself.
posted by RedOrGreen at 8:14 AM on May 12 [4 favorites]


Surely the Supreme Court will demonstrate how tech-savy they are and reverse this, right?


Right?
posted by blue_beetle at 8:17 AM on May 12 [5 favorites]


*crickets*
posted by wenestvedt at 8:19 AM on May 12 [2 favorites]


wenestvedt: "*crickets*"

You will be hearing from my legal staff. I have a patent on a technology involving the textual use of Gryllidae stridulation in online comedy situations.
posted by Samizdata at 8:22 AM on May 12 [46 favorites]


The real joy of this is that it throws thousands of drop-in replacements under the bus. Literally, this decision couldn't have been worse. The idea that int max(int x, int y)—a mathematical formula—is copyrightable is so outside the realm of sense that I can't help but think of these judges as idiots. I would normally try to maintain some level of respect for them, and say they have a different perspective on it or something along that line, but no. This is idiocy. They don't even understand the opinion written by the previous judge.

For the non-programmers in the audience, this would be an implementation of this copyrightable code:
int max(int x, int y) {
    return x > y ? x : y; 
}

posted by sonic meat machine at 8:25 AM on May 12 [16 favorites]


In a statement, the Redwood City, CA-based company said Friday's decision "is a win for the entire software industry that relies on copyright protection to fuel innovation."

excuse me while I puke
posted by BungaDunga at 8:32 AM on May 12 [23 favorites]


Ugh. This decision misses the whole basic point of what an API is.

This is what happens when users are kept in the dark about how their software actually works for too long and are encouraged to be ignorant about how the products they buy work. People don't understand the tech well enough to make informed decisions.
posted by saulgoodman at 8:42 AM on May 12 [3 favorites]


C called. They want their curly braces back.
posted by tspae at 8:45 AM on May 12 [15 favorites]


This is what happens when users are kept in the dark about how their software actually works for too long and are encouraged to be ignorant about how the products they buy work. People don't understand the tech well enough to make informed decisions.

The great part was when Apple spent a decade running ads that boiled down to "YOU'RE TOO STUPID FOR WINDOWS, BUY A MAC".
posted by Pope Guilty at 8:46 AM on May 12 [3 favorites]


So, when I implement an interface, I repeat all the method descriptions. I am then violating copyright? This is gonna put a pretty big dent in productivity....
posted by Bovine Love at 8:47 AM on May 12 [5 favorites]


i should start copywriting the code i write. maybe start with my implementation of the min(x,y) function and after that i'll be rich!
posted by localhuman at 8:48 AM on May 12 [1 favorite]


Well, the simple answer is to just never implement someone else's interfaces, or make sure to obtain a licensing arrangement from them.
posted by Jpfed at 8:49 AM on May 12 [1 favorite]


As part of its suit, Oracle claimed that Google had explicitly copied an entire function called rangeCheck, which comprised just nine lines of code. Google argued during the trial that such a small amount of code was too negligible to constitute infringement, but the appeals court disagreed.

"To the extent Google is arguing that a certain minimum number of lines of code must be copied before a court can find infringement, that argument is without merit," Friday's opinion states.


According to The Register, it sounds like the appeals court didn't rule only on copyrighting function signatures or namespaces (API), but actually overturned the previous ruling that said source code that Google admitted to copying hadn't been enough lines of code to infringe on copyright. At least according to this, Google appeared to have copied Sun/Oracle's source code, more than just the function signature and namespace alone, and it was this part that motivated the judge to overturn on appeal. If this ruling was about APIs, I don't agree with the outcome, either, but it sounds like there is a bit more to this story than just APIs.
posted by Blazecock Pileon at 8:49 AM on May 12 [6 favorites]


How many ways exactly can you write rangeCheck?
posted by kmz at 8:54 AM on May 12 [4 favorites]


Well, the simple answer is to just never implement someone else's interfaces, or make sure to obtain a licensing arrangement from them.
The thing is that the standard practice (in the Java programming world in particular), is for a library maker to define an interface with the expectation that someone using the library would create some code implementing said interface.

This allows for better extension of functionality with less duplicated work (ie. "this is a bag, in order to make something that can go in a bag, make something implementing the baggable interface" - the alternative possibly being to implement "grocerybag", "clothingbag", "bookbag" etc. and then when you want to travel or go camping you need a "bag of bags" yadda yadda it gets ugly fast).

While we could draw a distinction intuitively between platform API and library API, said distinctions get messy, especially in a language with an API heavy design like Java.
posted by idiopath at 8:56 AM on May 12


More info about the 9 lines of code, including the code itself.
posted by vacapinta at 8:58 AM on May 12 [5 favorites]


More info about the 9 lines of code

I've been trying to warn people about how pointless it is to throw exceptions for years.

And now look what happens.
posted by mikelieman at 9:00 AM on May 12 [4 favorites]


About this complex stuff that I know nothing about: It's inconceivable to me that the actual, obvious, trivial logical flow of those 9 lines of code is copyrightable. So where does the body of work live? Is it the variable names? The spacing? Would linting the code make it compliant? It certainly seems like madness.
posted by ~ at 9:02 AM on May 12 [3 favorites]


Even worse is that if type signatures are copyrightable, all algorithms to implement similar functionality are hosed. Using Haskell syntax, consider sort :: [Int] -> [Int]. This is literally the "API" for every algorithm to sort an array of integers.
posted by sonic meat machine at 9:03 AM on May 12 [5 favorites]


How many ways exactly can you write rangeCheck?

I can think of a couple domain-specific meanings of range and range checking that would perhaps complicate an answer, but I'm not exactly sure that's the point. My question is about what the judge overturned on appeal, as that sounds like it might be more complicated than what is being discussed in editorials.
posted by Blazecock Pileon at 9:03 AM on May 12 [2 favorites]


The way those exceptions are thrown is a work of creative genius deserving the maximum protections of copyright law. A lesser coder might have lumped everything into a single exception, but having a simple array slice throw two different types of exceptions is inspired.
posted by Pyry at 9:07 AM on May 12 [11 favorites]


I don't understand US law very well. Can someone explain to me what Google can do from here? Can they appeal the appeal?
posted by ElliotH at 9:12 AM on May 12


The thing is that the standard practice (in the Java programming world in particular), is for a library maker to define an interface with the expectation that someone using the library would create some code implementing said interface.

I was trying to make an obviously ridiculous statement, but maybe there are people that need the clarification you provided.
posted by Jpfed at 9:16 AM on May 12 [2 favorites]


Actually, you know what, looking at those 9 lines now... throw everybody in the fucking slammer, implementing normal logic via exceptions is fucking horrid and _should_ be criminally punishable.
posted by kmz at 9:17 AM on May 12 [5 favorites]


It's really not "the mathematical formula is copyrightable" but rather "the precise arrangement of the definitions and naming of the various forumlae is copyrightable."

This is not a simple ruling -- I'm still digesting it and reading other people's analyses. But it seems to say "APIs are copyrightable, but you might be able to use them under fair use provisions -- have fun paying the lawyers if you want to find out if you qualify."

It's funny though, since the decision mentions Math.max() specifically as an example of a "creative" choice. But this class is one of the worst examples, because most of the other methods in that class are copied straight from the C math.h header file.
posted by RobotVoodooPower at 9:18 AM on May 12 [5 favorites]


I don't understand US law very well. Can someone explain to me what Google can do from here? Can they appeal the appeal?

From here Google can ask for a rehearing by the Federal Circuit (very unlikely to be granted), a rehearing en banc by all of the judges on the Federal Circuit rather than just the original three judge panel (also unlikely), or appeal to the Supreme Court, which grants appeals on a discretionary basis (with a few exceptions that do not apply here) and statistically would be unlikely to grant this one.

Also, if you would like to read the actual decision [pdf] for yourself and not a lot of coverage from the tech press and advocacy organizations, you can do so here [pdf link].
posted by jedicus at 9:18 AM on May 12 [7 favorites]


Whoever gets the copyright to malloc's call signature will be unfathomably rich.
posted by wierdo at 9:18 AM on May 12 [5 favorites]


Thanks for the links, jedicus.
posted by Blazecock Pileon at 9:20 AM on May 12


So Wine is basically screwed, since they duplicate the win32 headers and have thus infringed on that API? Pray for the fair use case.
posted by jeffamaphone at 9:22 AM on May 12 [1 favorite]


You folks are thinking too small. Get a copyright on "calling a function" and all the assembly code in the world in the world will be filled with JSR©/RET© that will earn you $$$$. And while you're at it, get lambda-abstraction too. It won't earn you as much, but it will keep those smug Haskell bastards from bragging about how they escaped your first copyright.
posted by benito.strauss at 9:28 AM on May 12 [2 favorites]


The patent-based fee for using JSR/RET is part of the price you pay for the processor in the first place, along with the other patented stuff in there.
posted by GuyZero at 9:33 AM on May 12 [1 favorite]


I'm going to write a compiler that produces non-infringing assembly to call functions (an Anti-Optimizing Compiler ©) and charge a fortune for it.
posted by jeffamaphone at 9:34 AM on May 12


Microsoft Patents Ones, Zeroes
REDMOND, WA—In what CEO Bill Gates called "an unfortunate but necessary step to protect our intellectual property from theft and exploitation by competitors," the Microsoft Corporation patented the numbers one and zero Monday.

With the patent, Microsoft's rivals are prohibited from manufacturing or selling products containing zeroes and ones—the mathematical building blocks of all computer languages and programs—unless a royalty fee of 10 cents per digit used is paid to the software giant.

"Microsoft has been using the binary system of ones and zeroes ever since its inception in 1975," Gates told reporters. "For years, in the interest of the overall health of the computer industry, we permitted the free and unfettered use of our proprietary numeric systems. However, changing marketplace conditions and the increasingly predatory practices of certain competitors now leave us with no choice but to seek compensation for the use of our numerals." [...]
posted by Rhaomi at 9:35 AM on May 12 [8 favorites]


From my reading (and it's quite a hard decision to understand for a layman), the main part of the case is about 37 packages of the Java API, stuff like Java.lang.Math, etc. The standard library, basically.

Google copied all the object and method signatures of these packages, because otherwise it would have had to make its language a) a Turing Tarpit or b) gratuitously incompatible.

It argued that, since you need these classes and methods to run anything that resembles real Java, these signatures were more like Methods of operation than literary expressions. The first judge agreed, the Appeals Circuit judges disagreed.
posted by Monday, stony Monday at 9:36 AM on May 12


Does anyone have a somewhat reasonable argument (that isn't written by Oracle) that his is a good decision? All the coverage I've seen is uniformly negative from both a technical and legal pov.
posted by Skorgu at 9:39 AM on May 12 [1 favorite]


Whoever gets the copyright to malloc's call signature will be unfathomably rich.

Copyright © 1997 The Open Group
posted by RobotVoodooPower at 9:39 AM on May 12 [3 favorites]


It's inconceivable to me that the actual, obvious, trivial logical flow of those 9 lines of code is copyrightable. So where does the body of work live? Is it the variable names? The spacing?

The same code with different variable names or spacing would be 100% functionally identical, so no. Once it's translated into machine code to actually be executed, it wouldn't even be possible to determine what the variable names or spacing were used in the source code. Variable names and spacing are about as relevant to the workings of this function as whether a gear in a physical machine is painted red or blue.
posted by escape from the potato planet at 9:43 AM on May 12 [3 favorites]


Oh, and here's the original decision (pdf)
posted by Monday, stony Monday at 9:44 AM on May 12


from now on google will use this:
package google.language
public static class Mathematics {
    public static int maximum(int a, int b)
    {
        a -= b;
        a &= (~a) >> 31;
        return a + b;
    }
}

posted by plinth at 9:50 AM on May 12 [6 favorites]


No they won't because down at the bottom of the page it says that you, plinth, are the copyright owner for that.
posted by jeffamaphone at 9:53 AM on May 12 [3 favorites]


If Java had #define, this all could have been avoided. Dumb-assed language.
posted by Bovine Love at 9:56 AM on May 12 [2 favorites]


There's been a lot of doom and gloom, shouts of computer illiteracy on the part of the judges, and general gross exaggeration of what was at issue on appeal here. The claim was that Oracle had a copyright on 37 API packages (over 600 classes and over 6000 methods), including their declaring code and their structure, sequence, and organization, and that Google copied those packages directly. Importantly, Google conceded that it copied the packages verbatim.

Copyright law includes the notion that some kinds of creative expression afford less creative freedom than others. They may be constrained by utilitarian function (e.g. a software API), the medium (e.g. mere compilations of existing works), convention (e.g. limericks), or a crowded creative space (e.g. photographs of famous buildings). Copyright in these areas is sometimes described as "thin". What this means is that an allegedly infringing work must be much more similar to the copyrighted work before infringement will be found. In some cases protection can be so thin that infringement will only be found in cases of outright copying.

This appears to be such a case. If Google had done more than just copy-paste the 37 API packages it probably would have been able to either escape infringement entirely or at least succeed on fair use.

People have mentioned int max(int x, int y). The question of copyrightability focuses on the time of creation, not the time of copying. When Java was created the engineers at Sun could have called it maximum() or larger() or any number of other possibilities. Calling it max() was a creative, copyrightable choice. Of course Google would like to copy that choice, but then a lot of people would like to copy a lot of things. Just because it would have made Google's life easier doesn't mean Google had a right to do it.

Then there's the structure, sequence, and organization of the APIs. Again, the question of copyrightability focuses on the time of creation. When Java was created there was creative expression put into the class hierarchy. Therefore, the API (at least considered in toto) is copyrighted. Google wanted to copy that in order to make its life easier. But it didn't have a license from Sun/Oracle, so no dice.

The bottom line is that Google could have just invented its own language, used a truly freely available language, or negotiated better with Sun/Oracle. But it didn't. It admitted to copying and reimplementing somebody else's language, and it turns out that's copyright infringement.

Here's what this opinion doesn't mean. It doesn't mean that any time somebody writes int max(int x, int y) that they've infringed an Oracle copyright. It doesn't mean that any time somebody writes a new Java package that uses an API structure similar to an existing Java API that they've infringed an Oracle copyright. It does mean that if you copy almost the entire Java API verbatim without a license then you've probably infringed an Oracle copyright.
posted by jedicus at 9:57 AM on May 12 [18 favorites]


it probably would have been able to either escape infringement entirely or at least succeed on fair use.

It may still succeed on fair use. That's been sent back to the lower court, hasn't it?
posted by Slothrup at 9:58 AM on May 12


Does anyone have a somewhat reasonable argument (that isn't written by Oracle) that his is a good decision? All the coverage I've seen is uniformly negative from both a technical and legal pov.

Good decision based on the law, or good decision based on what people think the law should be?
posted by smackfu at 9:59 AM on May 12 [1 favorite]


Fix your HTML, jedicus!
posted by benito.strauss at 10:00 AM on May 12


Given how messed-up IP law seems to me as a non-legally-savvy software developer, I have a hard time understanding how this one decision really makes things any different.
posted by Slothrup at 10:00 AM on May 12


Fix your HTML, jedicus!

Sorry, forgot to close a code tag. Looks fine to me now.
posted by jedicus at 10:01 AM on May 12


But it didn't have a license from Sun/Oracle, so no dice.

Interestingly, messing with the API is what burned Microsoft from the other direction...
posted by Blazecock Pileon at 10:03 AM on May 12 [2 favorites]


ElliotH: "Can someone explain to me what Google can do from here?"

Buy Oracle.

Unlikely, but Google has more than enough equity to do it. If Google ends up owing the (ridiculous) entire fine that they are now potentially on the hook for, this may even be cost-effective.
posted by schmod at 10:04 AM on May 12 [6 favorites]


Also, the chilling effect of this is that every major corporation should now be terrified of implementing their software stack in Java.

This lawsuit is a staggeringly bad business decision for Oracle.
posted by schmod at 10:07 AM on May 12 [3 favorites]


The act of Google making a new "maximum number" function and calling it max in the source code wasn't a decision that could have gone one way or another. They had no choice in what to call it if they wanted existing code to interact with their code. What this ruling seems to do is make any reimplementation of an existing API copyright infringement. Since Java relies on user code implementing system API interfaces, does this make the majority of Java user applications unwitting copyright violators?
posted by demiurge at 10:10 AM on May 12 [4 favorites]


Also, the chilling effect of this is that every major corporation should now be terrified of implementing their software stack in Java.

This is absolutely not the case unless "every major corporation" is implementing their software stack with a homebrewed implementation of Java made without a license from Oracle.
posted by jedicus at 10:12 AM on May 12 [2 favorites]


It admitted to copying and reimplementing somebody else's language, and it turns out that's copyright infringement.

Yes, that's how I interpreted this too: This judge effectively says that languages ("utilitarian and functional sets of symbols") are now subject to copyright. I suggest that the people of Iceland should immediately claim copyright over their national language, a large part of which has probably been invented within whatever ridiculous number of years US copyright term limits are up to, and start with the lawsuits to demand royalties from anyone speaking it without permission in America.
posted by sfenders at 10:15 AM on May 12 [1 favorite]


I think this is a disaster for the US software industry. I just hope I can emigrate or find a new line of work as it all collapses.
posted by humanfont at 10:15 AM on May 12 [1 favorite]


The act of Google making a new "maximum number" function and calling it max in the source code wasn't a decision that could have gone one way or another.

Yes it could. They could have made their own non-compatible language or API. Or used a freely available language. Or complied with Oracle's licensing terms.

They had no choice in what to call it if they wanted existing code to interact with their code.

And there you have it. They wanted to have their cake (not comply with Oracle's licensing terms) and eat it too (still take advantage of developer familiarity with Java).

What this ruling seems to do is make any reimplementation of an existing API copyright infringement.

No, it stands for the proposition that an API is copyrightable. Whether or not a reimplementation of an API infringes that copyright depends on a host of factors: the existence of a license; copying of the structure, sequence, and organization of the API; fair use; etc.

Since Java relies on user code implementing system API interfaces, does this make the majority of Java user applications unwitting copyright violators?

No. For one thing, people using the Oracle JDK or JVM are generally doing so under license from Oracle.
posted by jedicus at 10:16 AM on May 12 [2 favorites]


The libraries in Java that are the subject of this case are themselves derivative works of c++ and Smalltalk APIs. Once those rights holders wake up to the billions they can extract from Oracle as a result of this decision we'll see if they change their tune.
posted by humanfont at 10:18 AM on May 12 [2 favorites]


Eh, the big guys will be fine. They use Oracle-approved tools. It's the little guys that like to do things like deploy custom Android builds or use alternative VMs (e.g. compile for iOS) that may run into trouble.

Also, someone has pointed out that half of the cloud providers use some variant of Amazon's AWS API. That oughta be fun if this verdict stands.

If you're a salaried or hourly engineer and you get paid to continuously reinvent the wheel, celebrate! Otherwise you're sitting on the shoulders of giants as they throw rocks at each other's heads.
posted by RobotVoodooPower at 10:18 AM on May 12 [2 favorites]


What's so bad about wanting to have your cake and eat it? That would be awesome.
posted by thelonius at 10:22 AM on May 12 [1 favorite]


Can someone explain to me what Google can do from here?

They were anticipating this. Android devs can expect a forced march to Go really damn soon.
posted by Slap*Happy at 10:23 AM on May 12 [2 favorites]


It admitted to copying and reimplementing somebody else's language, and it turns out that's copyright infringement.

Interestingly, the EU has ruled differently.
posted by Slothrup at 10:26 AM on May 12 [2 favorites]


Variable names and spacing are about as relevant to the workings of this function as whether a gear in a physical machine is painted red or blue.

What? Red gears make it go faster. Do you even engineer?
posted by curious nu at 10:30 AM on May 12 [17 favorites]


The libraries in Java that are the subject of this case are themselves derivative works of c++ and Smalltalk APIs. Once those rights holders wake up to the billions they can extract from Oracle as a result of this decision we'll see if they change their tune.

That's actually a good example of just how narrow this decision almost certainly is. The structure, sequence, and organization of the Java APIs in question has little in common with the C++ standard library (I'm not so familiar with the specifics of Smalltalk). Yes, there are a lot of the same kinds of functions, but the names and class hierarchies are notably different.

Consider our friend max() again. In Java it's four methods in java.lang.Math of the form

static type max(type a, type b)

where "type" is one of four numeric primitive types such as int or float. In C++ it's a single template function:

template const T& max (const T& a, const T& b)

So we see that Java structures things differently (four methods using primitives rather than a single template function), sequences them differently (obviously), and organizes them differently (putting max() in a dedicated Math package rather than lumping it into the std namespace. So it would be very hard to argue that Java infringes the copyright on the C++ standard library.
posted by jedicus at 10:31 AM on May 12 [3 favorites]


This, if it stands, will make some waves in scientific computing. R and Octave, re-implementations of S-PLUS and Matlab respectively, are both really important tools to the research communities.

Fortunately the major Fortran numerical APIs are open source, but I wonder who owns the copyrights to the original FORTRAN implementations. That might be really messy.
posted by bonehead at 10:31 AM on May 12 [1 favorite]


If Google had done more than just copy-paste the 37 API packages

Except it didn't, and it didn't admit to doing so either.
Google agrees that the structure, sequence and organization of the 37 accused API packages in Android is substantially the same as the structure, sequence and organization of the corresponding 37 API packages in Java.
...
Google further asserts that the similarities are largely the result of the fact that each API carries out the same functions in both systems.
In any case: isn't the presence of the word "interface" in the acronym "API" even the least bit suggestive about the role an API plays, vis-a-vis alternative implementations?
posted by ead at 10:31 AM on May 12 [3 favorites]


"If Google had done more than just copy-paste the 37 API packages"

Except it didn't, and it didn't admit to doing so either.

It absolutely did. Page 21 of the decision: "Google concedes that it copied the declaring code verbatim." (emphasis added). Page 27: "we agree with Oracle that there was no need for the jury to address copying of the declaring code because Google conceded that it copied it verbatim." (emphasis added).

In any case: isn't the presence of the word "interface" in the acronym "API" even the least bit suggestive about the role an API plays, vis-a-vis alternative implementations?

Yes, and Oracle offers a Specification License for those that want to copy the Java specification and reimplement it, provided that the implementation passes certain tests to ensure compatibility with the Java platform. Google was unwilling to agree to those terms.
posted by jedicus at 10:37 AM on May 12 [3 favorites]


Did Sun offer such a licence on the specification when Android started in the mid 2000's?
posted by bonehead at 10:42 AM on May 12 [3 favorites]


Calling it max() was a creative, copyrightable choice.

Which, coincidentally, is the same creative choice every other language that has a max function makes. Funny that. Up next: the poetry of sin(), cos(), tan(), round(), and floor().

Though, considering we're talking about Java, I suppose they should be congratulated on controlling themselves and not naming it Java.lang.math.returnTheOneThatsLargerThanTheOtherOne().
posted by kmz at 10:49 AM on May 12 [27 favorites]


Did Sun offer such a licence on the specification when Android started in the mid 2000's

Yes. Google bought Android in 2005. A specification license was available at least as early as August 25, 2004.
posted by jedicus at 10:51 AM on May 12 [3 favorites]


Yes. Google bought Android in 2005. A specification license was available at least as early as August 25, 2004.

Remember, they did their damndest to stomp on Microsoft when they tried the embrace-extend-extinguish trick on Java in the '90s. Sun sued the snot out of them for all sorts of breaches of contract.

It was always an oddball choice to fork Java to use in an Android-specific dev platform - I have to think it was a cynical ploy to have a ready base of experienced devs at hand. Apple seems to have no trouble getting people to use Objective-C with all its weirdness, so maybe Google really should have given more thought to using a language invented and developed by someone hostile to their goals (platform-specific development) and liable to be bought by someone a lot less high-minded than Sun was on promoting the language itself over their implementation of it.
posted by Slap*Happy at 10:57 AM on May 12 [2 favorites]


Would the industry as we know it even exist had Compaq not had the right to be API compatible with proprietary software without signing a license agreement?

Oh and jokes of jokes Oracle themselves are now under fire for circumventing the copyright of certain Linux API's their own products use.
posted by Poldo at 10:58 AM on May 12 [2 favorites]


kmz: "
Though, considering we're talking about Java, I suppose they should be congratulated on controlling themselves and not naming it Java.lang.math.returnTheOneThatsLargerThanTheOtherOneFACTORY().
"

FTFY.
posted by symbioid at 11:00 AM on May 12 [12 favorites]


This, if it stands, will make some waves in scientific computing. R and Octave, re-implementations of S-PLUS and Matlab respectively, are both really important tools to the research communities.

R is actually a dialect of S — from Bell Labs — distinct from S-Plus, which is a GUI version of S with custom extensions from TIBCO.

Reading the R FAQ, it's probably difficult to draw as direct a comparison between what R does with deliberate changes and omissions to its variant of the S API that introduce incompatibilities, with what Google did to entirely emulate the Java API to try to eliminate those kinds of incompatibilities.

I'd be surprised to see the R Foundation or FSF get sued by AT&T, which has contributed popular open source projects like VNC and Graphviz. Even so, standards for fair use are different for academia than for commercial entities like Google, which might make a successful case against the R Foundation a bit more difficult. I also wonder if it would make AT&T shareholders happy, to pursue such a case. A bit like squeezing blood from a stone to little useful end, don't you think?
posted by Blazecock Pileon at 11:01 AM on May 12


I agree: there would be almost no money in pursuing the R Foundation. R has evolved a long way from S, as well, but there's no denying that it started as a clone.

I could see a company like Mathworks going after Octave though, just to kill competition for their products. I don't think AT&T would do that, but it's really unfortunate, in my view, that this legal overhang now exists. Getting R in the door was hard enough in my shop---this just gives more ammunition to the "if we don't pay for it, we can't use it" crowd.
posted by bonehead at 11:08 AM on May 12


No one initially thought SCO would ever dare to sue Linux users given how utterly weak their case was, but they sure did. Never underestimate how greedy and damaging companies can be when they see dollar signs in the ridiculous mess that "intellectual property" has become.
posted by Poldo at 11:09 AM on May 12 [3 favorites]


I would point out too that this isn't just an academic conversation. R is used by some very big companies to do data analysis. While not as ubiquitous as OpenSSL perhaps, it's still a small project team supporting a diverse userbase.
posted by bonehead at 11:18 AM on May 12


It was always an oddball choice to fork Java to use in an Android-specific dev platform - I have to think it was a cynical ploy to have a ready base of experienced devs at hand.

Not cynical or a plot at all. As I've always heard it told, Google has always been upfront that the choice to use Java was made because it's the most commonly used/taught programming language in the world, significantly lowering the bar to entry for a huge number of developers. Personally, I see this as a good thing - way better than the alternative of making devs learn a new language that isn't used for anything else (looking at you, iOS).
posted by Itaxpica at 11:19 AM on May 12 [2 favorites]


No, it stands for the proposition that an API is copyrightable. Whether or not a reimplementation of an API infringes that copyright depends on a host of factors: the existence of a license; copying of the structure, sequence, and organization of the API; fair use; etc.

That's a lousy proposition, and I don't think you should defend it.
posted by jsturgill at 11:21 AM on May 12 [2 favorites]


Thinking about SCO just reminds me of Groklaw and makes me sad again.
posted by kmz at 11:25 AM on May 12 [8 favorites]


There doesn't seem to be much of connection between SCO's lawsuits against end users and Oracle suing Google, or a hypothetical lawsuit from AT&T against the R Foundation. Though I would entirely agree that going after end users was a frivolous, if not desperate move. People suing often have a financial interest in doing so, but that seems a self-evident fact.
posted by Blazecock Pileon at 11:33 AM on May 12 [1 favorite]


Write Once, Run Anywhere*

*certain limitations may apply
posted by RobotVoodooPower at 11:35 AM on May 12 [2 favorites]


AT&T presumably would have nothing to gain from suing the R foundation financially. However a company like Mathworks, with Matlab as their major income stream, might be willing to go after the EFF to kill a Free clone.
posted by bonehead at 11:51 AM on May 12


Speaking of OpenSSL... Is TLS really safe from ever-expanding copyright law? If you can copyright an API, why not a protocol? The java "declaring code" is a bunch of names, associated with specified data types and the actions to be performed on them. X.509 is a bunch of names, associated with specified data types and a set of operations that can be done with them. Apparently it originally came from the ITU, which doesn't strike me as the sort of organization that is categorically above making spurious copyright claims if they think they might get away with it.

Speaking of the Internet... If only this ruling had come earlier, maybe Netscape could've claimed copyright over all those extensions to HTML they made, back in the 90's. Nobody else would've been allowed to implement the <blink> tag, dramatically altering the course of world history.

posted by sfenders at 11:56 AM on May 12


As I've always heard it told, Google has always been upfront that the choice to use Java was made because it's the most commonly used/taught programming language in the world, significantly lowering the bar to entry for a huge number of developers.

That's kind of the definition of "cynical ploy" considering the goal of Java was to create a write-once, run anywhere general purpose language to get around the balkanized mess C/C++ and Unix had evolved into by the late '80s/early '90s. "Great and noble goal, Sun! We're going to massively undermine it with your own language and developer base!"

I mean, what the hell did they think was going to happen? They were basically lucky Sun decided to go high-road - and the luck ran out when Ellison bought the company.
posted by Slap*Happy at 12:03 PM on May 12


That's a lousy proposition, and I don't think you should defend it.

I think you are confusing the descriptive statements I am making, such as "it stands for the proposition that...", with normative statements that I am not making, such as "it correctly stands for the proposition that...".

To the extent I have defended the court's opinion it is to explain that it was a much narrower, closer case than has been reported, based on a pretty thorough consideration of the law and the facts. Copyright law is kind of a tangled mess, especially when applied to software, and the court does a fair job of walking through everything to come to its conclusion.
posted by jedicus at 12:07 PM on May 12 [5 favorites]


Another thing that must be borne in mind here: this was a decision of the Federal Circuit in a copyright case. This is unusual. Normally copyright cases are appealed to the regional circuits (e.g. the 1st Circuit, 2nd Circuit, etc.). The Federal Circuit only had jurisdiction because the case included patent claims. The Federal Circuit doesn't maintain its own separate body of copyright case law but tends to apply the law of the regional circuits, which see far more copyright cases. And the regional circuits and the district courts within them are not bound to follow copyright cases decided by the Federal Circuit (with the obvious exception that a Federal Circuit decision applies to the specific district court case it was appealed from). Thus, the direct impact of this case is pretty much limited to this case and this case alone. It may have some influence on later cases, but only in a "hey, here's what we thought of a similar situation" kind of way, not in a "you must decide all similar cases like this one" kind of way.
posted by jedicus at 12:07 PM on May 12 [3 favorites]


Umm, how, exactly, is it undermining it? Implementing the API is exactly the OPPOSITE of undermining it. It creates an incentive to keep coding in Java which means they can keep on using the same system and language they've always used. The issue in question, here, is Dalvik, which is a run-time Virtual Machine that executes the code in question. It doesn't force anyone to NOT use Java, it, in facts, encourages them to keep using Java, whereas, if they went to a different language altogether (instead of making Dalvik), it would hurt Java more.

Why did they make Dalvik? I believe it was because at the time they wanted a better VM to run Java code? I have no doubt that they aren't "embracing/extending" because they have not (to my knowledge attempted to bring Dalvik to common desktop useage or other uses beyond the Android system. So, I don't think you can claim it's a cynical ploy, because it does the exact opposite of what you state.

Unless you can show me how your claim makes sense, I will gladly revise my stance, but I read it as a misunderstanding of what Dalvik is and what the goal was in doing this.
posted by symbioid at 12:12 PM on May 12 [3 favorites]


What did you think the point of Java was? A pretty programming language? The whole point of Java is write-once, run-anywhere, to avoid platform and vendor lock-in and the attendant migration headaches. Google uses its fork of Java to enforce platform lock-in, which causes migration headaches aplenty.

Java's not always all that successful in its mission, but its mission is there, and it's now being defended by Java's originators for fun and profit. They've done it before, against Microsoft, it shouldn't really surprise anyone they're doing it to Google.
posted by Slap*Happy at 12:25 PM on May 12 [1 favorite]


jedicus: " It does mean that if you copy almost the entire Java API verbatim without a license then you've probably infringed an Oracle copyright."

In other words, you can't write a Java-compatible virtual machine without infringing Oracle's copyright. Which is fucking insane, just as everyone has said. If this set of geniuses had been deciding cases when Compaq reverse-engineered the PC BIOS, clones wouldn't exist.
posted by wierdo at 12:25 PM on May 12 [3 favorites]


Calling it max() was a creative, copyrightable choice. Of course Google would like to copy that choice

Good grief. I'm going to go copyright my choice of routes on my next bike ride into work. It's not so much that it seems impossible that the legal bar could be this – it's how appallingly bad how totally ahistoric such a regime would be.
posted by ~ at 12:29 PM on May 12 [1 favorite]


I think you are confusing the descriptive statements I am making, such as "it stands for the proposition that...", with normative statements that I am not making, such as "it correctly stands for the proposition that...".

Much of the language you've used reads as an indictment of Google. Copying and pasting is not a neutral description; copying and pasting is what bad students do just before they get expelled for plagiarism. Re-implementing an API to maintain compatibility while increasing performance (or to avoid licensing fees, or whatever the rational) would be a neutral description.

Having your cake and eating it to is the mark of a loser or scam artist. Leveraging existing knowledge and expertise to make your platform more open and productive is the mark of a sane person trying to do something laudable.

Your descriptive statements don't read to me as pure, shining rays of objective fact. They appear, intentionally or not, to be laced with value judgments on the idea of interoperability at the API level while also taking Google to task for their actions.
posted by jsturgill at 12:40 PM on May 12 [7 favorites]


Does this make Wine (the code, not the tasty beverage) illegal?
posted by dirigibleman at 12:55 PM on May 12


Or, for that matter, Linux?
posted by dirigibleman at 1:01 PM on May 12


Why did they make Dalvik? I believe it was because at the time they wanted a better VM to run Java code?

Actually, they made Dalvik because there was no free version of the JVM that ran on mobile devices.
posted by Slothrup at 1:02 PM on May 12 [3 favorites]


Actually, they made Dalvik because there was no free version of the JVM that ran on mobile devices.

I misremembered slightly. There was a GPL version of the Micro Edition, but Google didn't want to ship a runtime encumbered by the GPL.
posted by Slothrup at 1:08 PM on May 12


So, by suing for copyright, Oracle is really doing it for GPL/Freedom of Software??? Seems so absurd!
posted by symbioid at 1:17 PM on May 12


Copying and pasting is not a neutral description

I think it's pretty neutral. "Ripped off", "stole", "took", or "pirated" are the more typical negative terms. Google conceded that it copied the API packages verbatim. I don't know that someone at Google used copy/paste, some sort of script, or what, but I strongly doubt they re-typed it by hand. It seems like a pretty neutral description of verbatim copying to me.

Having your cake and eating it too is the mark of a loser or scam artist.

I never called Google a 'loser' or 'scam artist' (except inasmuch as they lost this appeal, I guess). I think you're reading way more anti-Google sentiment into my comments than is really present. The cake line was just an analogy, which I explicitly explained: Google wanted to not comply with Oracle's licensing terms while still taking advantage of developer familiarity with Java. This is pretty much beyond dispute and has nothing to do with considering Google a 'loser' or 'scam artist.' If anything I think it took a calculated business risk in a slightly uncertain area of the law and (so far) lost.

I don't work for Google, Oracle, or any of their competitors. I have no personal stake in the outcome of this case. I think you are imputing a lot more personal feeling about it than actually exists.

value judgments on the idea of interoperability at the API level

This decision (and my comments about it) isn't about the value of interoperability at the API level. That would presumably be part of the fair use defense, which wasn't at issue on appeal. In case you care, yes, personally I think that interoperability should weigh heavily in any software fair use analysis. This is especially true in cases involving interoperability with software that is widely-distributed, has market power, that claims to be open, or for which there is no other programming interface (e.g. from the original vendor).

Why? Because interoperability goes to the purpose and character of the use (it typical only "uses" the public-facing and functional aspects of the software), the amount and substantiality of the portion taken (typically a small subset of the work), and the effect of the use upon the potential market (in many cases it either has no effect (e.g. a port to a non-competing platform) or can even make the market for the original work larger).

But again that was not at issue in this particular decision.
posted by jedicus at 1:32 PM on May 12 [1 favorite]


Oracle is really doing it for GPL/Freedom of Software???

As with much things licensing-related, it's complicated. At the time, Sun had done something fairly common: make the Micro JVM available simultaneously under the GPL and under a commercial license. If you didn't like the terms of the GPL, you could pay Sun for something that gave you more flexibility. I believe several phone vendors had done just that. Google didn't like the GPL, but paying Sun for an alternative license wasn't consistent with the business model they wanted for Android.

The best known software that's similarly licensed is probably MySQL, also now owned by Oracle.
posted by Slothrup at 1:33 PM on May 12 [1 favorite]


What's so bad about wanting to have your cake and eat it? That would be awesome.

Wouldn't that be Schrödinger's cake?
posted by Pudhoho at 1:40 PM on May 12 [2 favorites]


I wonder if this will also kill GCJ, since I believe it has its own implementation of the Java Runtime.

(Whether killing GCJ is a good or bad thing is an exercise left for the reader.)
posted by jferg at 1:54 PM on May 12


One of the issues here that people are getting upset at jedicus about is that jedicus is doing what I call "the lawyer thing" and I've noticed this, both here, other forums and with lawyer friends. They are not necessarily taking a stance (usually), but rather presenting the argument of the ruling as it stands... attempting to formulate the answer and explaining it to use laypeople. However, because they are taking an "IS" approach, and in many of these sorts of cases that get posted about on the blue, we often take an "OUGHT" approach, we get upset, because the lawyer folk aren't making an OUGHT statement, but we interpret them from doing so (because that is where many of us "OUGHT" folk are coming from).

Anyways, I just wanted to throw that in, because I think that explains about 50% of the disagreements that happen with lawyers. I'll leave it to the reader to discern the other 50%
posted by symbioid at 2:04 PM on May 12 [15 favorites]


Google conceded that it copied the API packages verbatim.

Google conceded that it copied the API *signatures* verbatim, or Google conceded that it copied implementations of the API function?

The former strikes me as about as tenable as suing someone because they made a set of socket wrenches with the same size specs as a competitor's socket wrench set (though I suppose I would not be terribly surprised to find there is either law or lawyer out there defending).
posted by weston at 2:07 PM on May 12 [6 favorites]


If Google was able to duplicate Java without licensing, could Google have been in a better position to encourage developers to drop the Sun/Oracle kit and migrate to Google's extended classes and VM, possibly putting Google in a position to hurt Java (and Oracle) at a future time?
posted by Blazecock Pileon at 2:12 PM on May 12


migrate to Google's extended classes and VM,

Like the entirety of the Android API? I guess.

But there is the JCP which is presumably the place for all parties to propose changes to the core Java API. It's not like the standard Java APIs are a complete free-for-all.
posted by GuyZero at 2:19 PM on May 12


Well, the other thing is that it's not like there aren't plenty of alternative JVMs.
posted by symbioid at 2:21 PM on May 12


> I'm going to write a compiler that produces non-infringing assembly to call functions

The RCA COSMAC 1802 didn't have JSR/RET. If I recall correctly, it was Ipso Facto magazine that published a set of macros to do that. The ELF II macro assembler required two tape recorders with motor control so the assembly source could be read by one and the machine code written to the other. I just wrote machine code with the monitor.
posted by morganw at 2:28 PM on May 12 [1 favorite]


Google copied the API signatures verbatim. Not the signatures of all of the Java API, but a good chunk of it.

If you look at the Current Android API (java and javax packages), it's mainly basic stdlib stuff, like IO, Strings, Math and the like, plus Networking, Crypto/Security, XML, Databases and some utility stuff (regexes, etc.).
posted by Monday, stony Monday at 2:31 PM on May 12


Google's happy to be a consumer of Java on the server/desktop. I don't see that they would ever compete there. Sun's VM has lots of enterprisey features that aren't appropriate for a mobile VM.

About the Micro Edition, recall that in 2005 it was limited to JRE 1.3 (and I think still is). So most existing libraries wouldn't run on it. An Android licensed with an official J2ME would have smelled like a Blackberry.
posted by RobotVoodooPower at 2:41 PM on May 12 [3 favorites]


And you can argue that a lot of that stuff isn't terribly original. A lot of the packaging is similar to Smalltalk-80, with stuff like Stream IO, the Collections, etc. java.net is an OO version of BSD sockets. SQL is as you'd expect.
posted by Monday, stony Monday at 2:43 PM on May 12


I think it's pretty neutral. "Ripped off", "stole", "took", or "pirated" are the more typical negative terms. Google conceded that it copied the API packages verbatim. I don't know that someone at Google used copy/paste, some sort of script, or what, but I strongly doubt they re-typed it by hand. It seems like a pretty neutral description of verbatim copying to me.

Do you understand what it is that Google copied? It's not clear from the above quote. Google implemented all of the logic internally, and without copying anything (9 lines excepted, resolved, replaced, and irrelevant to this discussion); what they "copied" was the signature of the API calls. No code or logic was copied.

The word "package" connotes a bunch of actual code ready for delivery to a platform, possibly compiled or with machine-readable instructions for compiling. That's not at all what this is about.

Regardless, my point was about the spin apparent in your wording. Copying and pasting has, when normal humans use those words, a negative connotation in the context of knowledge workers and students: the person copying and pasting is doing so in order to avoid real work, often in violation of a legal or moral imperative. The word copying is simply accurate; the phrase copying and pasting is a value judgment.

Wanting to have your cake and eat it to is not simply an illuminating allegory about the current legal decision. It's a classic moral blunder made by the selfish, the immature, the shortsighted, the greedy.

Perhaps the clear connotation of everyday language is somehow different when lawyers speak to laypeople, but I don't think that's the case. I'll believe you when you say that's not your intent, but intent has little to do with what you're actually communicating.
posted by jsturgill at 3:08 PM on May 12 [2 favorites]


Skorgu asked: Does anyone have a somewhat reasonable argument (that isn't written by Oracle) that his is a good decision?

I don't think it's good in the sense that "this will generally make people's lives better". It's a good decision in the sense that it is compatible with existing law, and a different decision would create a whole new set of inconsistencies.

It's always risky to offer analogies in this area, but I'll try to do so anyway. Before I begin, though, keep in mind that copyright and patents are very different areas of law: patents protect inventions (novel ideas) and it's no defense to say that you came up with the novel idea independently. Copyright protects creative works (songs, books, music) from copying. If you can show that your work was genuinely independently created, then you haven't breached anyone's copyright. Software, in the USA, is protected by copyright, not by patents. You don't patent what a program does (although there's a back door way of doing that too); you copyright what it says. Anyway, on to the analogy.

Let's say someone develops a certification course in computer security. The course has a series of books, each of which has a title, and they're broken down into sections (with titles), chapters (with titles), and paragraphs (with titles). So someone teaching your course will say "Today we're going to work through the paragraph called Sanitising Inputs in chapter SQL injection attacks, section User Input Vulnerabilities, in your book called Creating a Secure Interface."

Suppose someone wants to develop a competing course that can be easily adopted by the people teaching the existing one. They write their own material, but in the interests of compatibility they just copy all the book titles, section names, chapter titles, and paragraph names, so it doesn't make a difference which set of books a student is using, they can follow along anyway. As a defense, the people marketing the new book say "We need to use the same names, to make our books compatible! And besides, everybody knows that you need to teach people about SQL injection attacks, that's not copyrightable." But the people making the original course say "The fact that you want to make your course compatible with ours isn't a defense. There are lots of ways to name and arrange the material, and you just copied our system."

That's sort of what is going on here. The API is a namespace that reflects creative choices. Google admits to copying it. They couldn't satisfy the court that the copying was justified or that it was trivial. So they lost. This decision is going to have a whole lot of consequences and will probably be generally bad, but the alternative within existing copyright legislation would be to come up with a reason why this sort of copying is actually OK, and hope that your new reason doesn't suddenly break a whole lot of other assumptions about the way copyright law works. Or, Congress could just pass a law saying "It's OK to copy APIs." The second alternative will probably take longer, but it will (a) have fewer side effects; and (b) will actually give people a degree of certainty about what they can legally do, so they don't need to keep running to the court to decide whether they've breached anyone's copyright.
posted by Joe in Australia at 3:42 PM on May 12 [2 favorites]


Google conceded that it copied the API packages verbatim.

Yeah, that could be read so as to give the wrong impression. They copied the "declarative code" portions of the packages in question. Not The API packages, but "the small declarative portion of the packages in question that serve to specify the API". I mean, if you take package to mean what it usually does in Java.

Which was apparently about 3% of the code in those packages. It's not as if they had any other option if they wanted to implement the API's in question. The part they copied is the bit that defines "the overall structure, sequence, and organization" of the API, since it exists precisely for the purpose of specifying what an implementation needs to do in order to be interoperable with what people are used to calling Java. They copied it verbatim because there is essentially no other way to implement the API: The original authors of Java could've called the 'max' function something else, but if you're trying create a new implementation of the Java language you obviously don't have that choice. The only sort of changes you can make to "int max(int x, int y)" while conforming to the specification are trivial ones like adding extra spaces. Any change you make that substantially changes the structure and organization that has been held to be copyrightable leads to expressing some idea other than the one they had in mind, that of conforming to the well-known API.

The court is therefore wrong in arguing that this case is distinguishable from Lotus v. Borland because it involves verbatim copying of the code, when it is clearly the equivalent of Borland copying menu text: Exactly that part defines the "method of operation". The statement that "50 menus and submenus" containing hundreds of menu items do not count as creative but 37 packages containing 6000 methods worth of Java class definitions do count may make some kind of legal sense, but it escapes me. Apparently it is "undisputed that Google did not need to [implement any more than 3 core packages] to write programs in the Java language." That's fine if you want to use that definition of Java but it ought to be irrelevant. The case is then simply not about Java, but about whatever you want to call the entire API-associated-with-Java that Google re-implemented.

So yeah, I'm typing this as I read the court's opinion, and the arguments therein are starting to strike me as more and more incorrect and annoying. Some fool once argued that all operating systems are un-copyrightable because they are "methods of operation", and the court thinks that's relevant? In fact, reading on, it seems that this is the key idea that the court has failed to comprehend. "The statutory definition of "computer program" acknowledges that they function "to bring about a certain result" ... "If we were to accept the district court's suggestion that a computer program is uncopyrightable simply because it "carr[ies] out pre-assigned functions," no computer program is protectable." I find it unlikely that the district court said any such thing. By all I've read about their decision, they were bright enough to recognize the difference in terms of copyright between the actual instruction set, and any particular sequence of instructions making use of it. In any case, this court ought to be. Google certainly is; I find it highly unlikely that they made any arguments that actually suggest that copyright should not apply to any "elements of a computer program that are functional." The contested elements (of the API) do not "direct a computer to perform operations". They specify what kind of operations the implementation of the API must perform when one of those elements is invoked.

Okay, so the judge goes on to claim that interoperability is no excuse. That's a matter of law into which knowledge of Java gives no insight, so no comment from me. However, I note that Google's "interoperability argument" would again not be so "confusing" to the court if the court were not so clueless about computer programming. Google had an interest not only in its version of Java being familiar to lots of developers, but also in gigantic amounts of existing Java code being able to run on it. That no complete "apps" would run entirely unmodified (i.e. without even a re-compile) is less significant than the court appears to believe.
posted by sfenders at 3:47 PM on May 12 [8 favorites]


My understanding is that this ruling is completely incompatible with existing law. The table of contents for a book, mathematical formulas and api signatures have never been subject to copyright. Under the logic of this ruling Intel could now go out and sue anyone who has cloned the x86 instruction set.
posted by humanfont at 3:54 PM on May 12 [3 favorites]


Do you understand what it is that Google copied? It's not clear from the above quote. Google implemented all of the logic internally, and without copying anything (9 lines excepted, resolved, replaced, and irrelevant to this discussion); what they "copied" was the signature of the API calls. No code or logic was copied.

The argument jedicious made earlier was that the copyright doesn't just apply to the implementation, it applies to the method signatures and their arrangement altogether. The class hierarchy, method signatures, etc. Whether you Integer.toString(i) or something nonjava like Integer.parseInt(i).

I still don't get this decision, though. For example, let's say google rearranged the Java standard API, but built the transformation into dx so that compiled Java classes could work on the Dalvik VM. Would that have violated the copyright? What if they used that Java standard library method signatures, but changed the compiler to rename everything around?

Or let's say Google has it's own standard library. Would the same package structure and method calls, but under a package named "google.lang" instead of "java.lang" have been sufficient to avoid a copyright claim? What if they came up with a totally different API, but included a source code translator tool that would read source for the Java API and rewrite it to use Google's API before compilation? Would that still violate copyright? What if a third party created this tool?

I think this is a bad decision any way you look at it. But I'm not worried about it killing innovation. This just creates a silly little hurdle. It'll waste someone's time somewhere, but it seems like there's a bunch of technical solutions to work around stuff like this.
posted by heathkit at 4:03 PM on May 12


heathkit: Would that still violate copyright?

Yes it would, if copyright law were interpreted according to this decision. None of your proposed legal evasions would work. Unless of course you were lucky and they sufficiently confused a judge.
posted by sfenders at 4:10 PM on May 12


I think the source code translator tool would possibly be OK, less likely if it was just a search-and-replace technique, more likely if it was a pre-compilation. The fundamental question copy rests on is, was something copied. Then you get onto what sort of thing was copied, how much, was it justified, and so on. So if they started with copying, then they have a problem. But it's less likely to be a problem if they implemented their own functions and the pre-compilation tool says "if you come across java.f(x,y) in this particular context then replace it with google.f(x); google.f2(x+y)".
posted by Joe in Australia at 4:24 PM on May 12


Yes it would, if copyright law were interpreted according to this decision. None of your proposed legal evasions would work. Unless of course you were lucky and they sufficiently confused a judge.

Well, what about the source code translation tool, if it weren't built by Google? Who would they sue?

I guess my technical workarounds all involve automating the process and moving the copyright violation to the app developer instead of Google.
posted by heathkit at 4:25 PM on May 12


Do you understand what it is that Google copied?

Yes, quite thoroughly. I have followed the case from the beginning, I have read the entire opinion, and I know how to program Java.

The word "package" connotes a bunch of actual code ready for delivery to a platform, possibly compiled or with machine-readable instructions for compiling. That's not at all what this is about.

I am quite aware. I used the phrase "API packages" because that is the term the court used in this decision. From the very first paragraph of the decision:
This copyright dispute involves 37 packages of computer source code. The parties have often referred to these groups of computer programs, individually or collectively, as “application programming interfaces,” or API packages
(emphasis added). The court goes on to use the term "API packages" 60 more times in the decision.

The argument jedicus made earlier was that the copyright doesn't just apply to the implementation, it applies to the method signatures and their arrangement altogether.

That wasn't my argument. It is the court's conclusion.
posted by jedicus at 4:37 PM on May 12 [2 favorites]


Well, what about the source code translation tool, if it weren't built by Google? Who would they sue?

Whoever built it I suppose. No matter how obfuscated it was, the copyrighted "structure, sequence, and organization" would have to be in there somewhere. Google would find it difficult to rely on it as a key part of their platform given how they like to control everything, as in not using the JVM, not liking the GPL.
posted by sfenders at 4:48 PM on May 12


sfenders: " They specify what kind of operations the implementation of the API must perform when one of those elements is invoked. "

Not even that. They specify what kinds of input a given function takes and what kind of output it returns. Duplicating said API definitions is required to create an interoperable implementation, which has on many previous occasions been ruled fair use. That's why this decision is completely ridiculous, regardless of the reasoning they used to get there.

If it stands, I can't even write a book about Java that contains call signatures in it, unless they are recited in prose instead of code. "The function max in library java.whatever takes two integers as arguments and returns the largest of the two values as another integer." vs. something like "int max(int x, int y)". Hell, I might not even be able to get away with that, since it would arguably be a derivative work in need of licensing from Oracle, as any mere translation would be.
posted by wierdo at 5:36 PM on May 12 [1 favorite]


Duplicating said API definitions is required to create an interoperable implementation, which has on many previous occasions been ruled fair use. That's why this decision is completely ridiculous, regardless of the reasoning they used to get there.

The judge did not rule that it was not fair use. Fair use is an exception to copyright. If there is no copyright, then there is no fair use required. The lower court judge found that the API signatures could not be copyrighted. This judge found that to be incorrect, and sent it back to a lower court to determine whether or not it was fair use. Disclaimer: I am not a lawyer and there's a lot of distracting noise around this ruling.
posted by Slothrup at 7:36 PM on May 12 [1 favorite]


Turing Tarpit

Interesting. To what extent do coders worry about the halting problem and incomputability?
posted by professor plum with a rope at 7:37 PM on May 12


"Turing tarpit" means "yes, theoretically you can use this language to compute anything computable, but it won't be pretty". It's a term-of-art in software engineering, and has little to do with computer science. It's actually a pretty good piece of terminology.
posted by benito.strauss at 8:43 PM on May 12 [3 favorites]


Never heard that before. Thanks!
posted by professor plum with a rope at 8:52 PM on May 12 [1 favorite]


More to the point, if Google had decided to come up with a language in-house, or at least adopted a truly open and unencumbered platform (Python's nice, so's ruby), we wouldn't be in this mess. Google was lazy and cheap and in the mood to rip off what they wanted for their new phone ecosystem without the due care required. They saw Sun as an easy mark, and it has now blown up in the entire industry's face. A pox on both their houses.
posted by Slap*Happy at 9:16 PM on May 12 [2 favorites]


Not necessarily. Their goal may simply have been to make app development more accessible, given some technical constraints (that may have made Ruby and Python non starters). They could have reinvented Modula-3 yet again, but instead they chose to use a language almost every first-year programming student has been exposed to. It might not be possible to write a complex program that is compatible with both Java and Android, but someone who knows Java derives an obvious advantage because Android provides a part of the common API.

From that point of view, their choice isn't very different from Gosling's choice to ape C's syntax.
posted by Monday, stony Monday at 9:34 PM on May 12


What's the difference between a cooking recipe (non-copyrightable) vs an API (copyrightable)?
posted by dirigibleman at 10:02 PM on May 12


Ruby and Python, while pleasant enough languages, don't work for what Google needed. They needed a language that runs on a robust VM (because bare metal is impossible given the wide variety of phones that run Android), and the only robust VMs, really, are the JVM and .NET. Parrot is not there yet.
posted by sonic meat machine at 4:35 AM on May 13


From that point of view, their choice isn't very different from Gosling's choice to ape C's syntax.

Gosling had a much better read on the academic and industry politics of the situation (and boy howdy, you better believe there were politics involved in Java's birth and growth; still are). It's no wonder Google brought him on to develop Golang after their initial tone-deaf "appropriation" of Java set up a potential legal situation (now realized) that might have crippling consequences for the entire field of software development.

They needed a language that runs on a robust VM (because bare metal is impossible given the wide variety of phones that run Android), and the only robust VMs, really, are the JVM and .NET.

Then they needed to build their own, license it from Sun, or involve themselves in the Java community in the spirit of the community, which likely wasn't possible considering the nature of their use.

Also, I don't really see the need for a VM. Apple doesn't need one, WebOS didn't need one, Sailfish doesn't need one. I do see the need for a robust development environment where most of the heavy lifting was already done by someone else. This in and of itself isn't a bad thing - this is the entire purpose of many FOSS projects, to offer a free platform for others to build upon - but while Java was open source, it wasn't free and unencumbered. Google was gambling on Sun being too timid to do anything about it. Then Oracle, who is not an ally of FOSS except in situations where it has strict control, happened.

So, yes, it's a terrible ruling. Yes, Oracle is vicious and evil. But Google was short-sighted, lazy and arrogant, and allowed this mess to happen. I can't get on anyone's side, here.
posted by Slap*Happy at 5:02 AM on May 13 [3 favorites]


> Also, the chilling effect of this is that every major corporation should now be terrified of implementing their software stack in Java.

Ah, wishful thinking...
posted by I-Write-Essays at 5:59 AM on May 13


What's the difference between a cooking recipe (non-copyrightable) vs an API (copyrightable)?

A good question. Even more apropos is "what's the difference between a cooking recipe (non-copyrightable) vs a compiled computer program (copyrightable)." There is a fundamental tension between the policy desire to protect software via copyright and the cold, hard fact that machine code implementing mathematical functions just doesn't seem to have much creative expression in it.

This is one of the reasons why the court in this case noted that "We are mindful that the application of copyright law in the computer context is often a difficult task" and quoted a judge in a prior case who said that "Applying copyright law to computer programs is like assembling a jigsaw puzzle whose pieces do not quite fit."
posted by jedicus at 8:14 AM on May 13 [2 favorites]


You don't (didn't) need a virtual machine. What you need is a reasonablish language, including a reasonable standard library, with some form of memory management. Back when Android was first developed, the low power of the then-current phones made it difficult to implement dynamically-checked languages like Ruby or Python.

Apple went with Objective C, but that was only justifiable because they were already using it in OS X. C++ is not part of the class of reasonablish languages. C's too low-level and uses a preprocessor (not reasonablish).

Pascal/Wirth family languages could fit the bill, but their surface syntax is problematic from a marketing standpoint.

So your obvious candidates are C# and Java, or another Modula-3-with-curly-braces. If you value other people's time, you won't create that and stick to an already existing option, for as much as you can.

Given the constraints of the machines of the day, that gives you Java with a subset of the standard library and mobile-specific libraries, plus a more efficient VM.
posted by Monday, stony Monday at 8:49 AM on May 13 [1 favorite]


Apple went with Objective C, but that was only justifiable because they were already using it in OS X.

It also had several features that made it useful for devices with minimal memory and (then) processing power.
posted by Blazecock Pileon at 9:00 AM on May 13


I don't do much desktop or mobile development, but it's always seemed to me that even a hobbled type system like Java's is preferable to dynamic typing in those environments. When you're stringing that many components together inside of a single process, and when so many of them are presentation elements resistant to unit testing, you're going to want some compile-time guarantees.
posted by invitapriore at 9:07 AM on May 13


Objective-C has dynamic binding, which makes it very suitable for a lot of plug-in type environments. It is well suited to the task. The syntax is .... awful. But Java doesn't even have sane delegates or call backs, making you use fairly clumsy mechanisms to achieve it.

I hate the syntax of Objective-C, and hate the functionality (well lack thereof) of Java. C# is better functionally and syntax wise, but still doesn't let you do dynamic binding, though .NET can make it pretty close. But C# has its own IP problems....
posted by Bovine Love at 9:46 AM on May 13


Fun fact about Java: Before it became all enterprisey, it started off as a language (named "Oak") for programming consumer devices, like set-top boxes. This helps make sense of two of the biggest run-time differentiators of the Java model: VMs reduce the chances of a crash at machine level, and first class reflection plus run-time loading of classes help you add new features without reinstalling or restarting.

I have no idea how important these are for the way it is used in Android phones.
posted by benito.strauss at 9:49 AM on May 13


I have no idea how important these are for the way it is used in Android phones.

Just as important as it was in Oak.
posted by GuyZero at 9:51 AM on May 13


Bovine Love: "C# is better functionally and syntax wise, but still doesn't let you do dynamic binding, though .NET can make it pretty close. But C# has its own IP problems...."

It might, but at this point, with the release of Roslyn, and Microsoft's continuing nods towards open source, I would much rather place my bets with C# than Java. I think it took taking MS down a few notches for them to 'see the light'... I think their languages team is pretty damn ace, and the work their doing is damned cool. Not that other languages aren't great either. Just saying that C# and Roslyn/.NET have done a bangup job of evolving, adding features and keeping things tied together, and have some very smart people working on that process.

Java feels like a big hot steaming pile of shit, frankly. Even the VM kinda sucks - and I think it ends up limiting some of the potential power of otherwise potentially useful languages like Scala.

But at the time Dalvik was being made, C# isn't near what it is today, so Java was the logical choice.

Personally, now that Google has a few different languages its working on (Dart, Go... and I wouldn't doubt there are others in the skunkworks), it wouldn't surprise me to see a Google VM coming out at some point.

My biggest concern, with this ruling, would be how could they transition and retain backwards compatibility if they shift to a new operating environment (VM/Language/APIs)...
posted by symbioid at 10:04 AM on May 13 [3 favorites]


...but their surface syntax is problematic from a marketing standpoint.

Sucks to be you, play by Sun's rules, pay them for the privilege of not playing by the rules, or go do something else. Any other path (as we have seen) leads to a legal and ethical morass.

In 2005, there were a number of very interesting systems programming language options available that were unencumbered. If you're hell-bent on an avm with JIT, you had the smalltalk-alike Squeak and the "reasonable" C-derived Limbo running on the Dis avm that had just become available. Hell, they could have bought Inferno outright from Lucent for pocket change, a fourth round draft pick and a player to be named later. (And, ironically, they're getting Limbo 2.0 in the form of Golang.)

Complaining that they couldn't ride on Sun's marketing efforts and hard-won ubiquity for free isn't really making their case, here.
posted by Slap*Happy at 10:04 AM on May 13 [2 favorites]


Limbo would have been *very* interesting to see. I was fascinated by plan9. I think plan9/Inferno would have been a very interesting choice for mobile, considering the distributed nature of the OS... Add in that they ended up, as you said, getting "Limbo2.0" thanks to Rob Pike... Yeah, that would have been interesting.

I still don't like the ruling, but it's fun to imagine possibilities.
posted by symbioid at 10:07 AM on May 13


symbioid: "Even the VM kinda sucks - and I think it ends up limiting some of the potential power of otherwise potentially useful languages like Scala."

What? Is this received wisdom, or are you really attached to TCO? The HotSpot JVM is a freaking marvel of software engineering.
posted by invitapriore at 10:52 AM on May 13 [1 favorite]


I don't mean to take away the good things, and I admit, I'm not a Java person, so I admit my understanding is limited. I'm referring to things like this... or more specifically this... Admittedly, it seems a lot of this comes from Scala/Odersky. I don't know if other languages on the JVM have similar issues.

Perhaps I was a bit harsh when I said "sucks"... I should have said that there were some limitations in the VM that end up limiting what it can do compared to things like the CLR. That in itself isn't necessarily "bad"...

At the same time, I'm sure the same thing could be said regarding CLR in terms of having limits, I have just not heard of them.

Anyways, I don't want this turn into a language war. I'm more curious about the possibilities of alternatives to Java (especially since this ruling) and how Google could pull it off.
posted by symbioid at 11:18 AM on May 13


Many JVM design decisions were made to support aggressive sandboxing and security. In retrospect those decisions may not have been strictly necessary or as effective as hoped, but that's why they were made.
posted by GuyZero at 11:49 AM on May 13 [1 favorite]


> Calling it max() was a creative, copyrightable choice.

Gosh, I wish people would find out something about the issue before commenting.

It's not just that calling that function "max" has been universal in all languages from the days of C, but from long before that, in mathematics - copying universal practice in your field is certainly not creative and should not be copyrightable

But far more important, in order to implement an API yourself, you must use exactly the same name as the original, or you simply aren't implementing it. Up until this ruling, making "clean room" re-implementations of people's APIs was completely acceptable - now it is not. Like so many other copyright arguments these days, this suddenly gives "copyright" holders a huge benefit, at a corresponding cost to the rest of society - and this is unprecedented. If you make a machine and I buy it, copyrights do NOT prevent me from taking it and making a machine that does that same thing - that is what patents are for, and those are supposed to only be for truly original, non-obvious work (of course, they aren't, or you wouldn't be able to patent "click to buy", but that's the idea).

I do honestly believe that the only reason that these terribly bad judgements happen is that the members of the legal system are in general completely ignorant of the field and are willing to accept claims like "naming the function that everyone has called max for centuries as 'max'" as a creative decision without batting an eye.
posted by lupus_yonderboy at 7:33 PM on May 17


> They saw Sun as an easy mark,

This is 100% wrong.

Java was open-sourced by Sun - that is, they deliberately and enthusiastically encouraged others to make their own clean-room implementations of Java, to encourage the spread of the language. And Google was not the first to do this by any means. Indeed, here's a list of about six dozen different Java implementations.

After Sun went under, all their intellectual property was bought out by the predatory behemoth Oracle, who decided to use barratry to try to reverse what should have been an irrevocable decision by Sun to open-source Java. There was nothing dishonest or predatory about Google - or any other company - in making their own versions of Java, and if Sun hadn't open-sourced Java, neither Google nor anyone else would have expended one second's work trying to do it. It's classic bait-and-switch and Oracle is completely the villain in this story.
posted by lupus_yonderboy at 7:43 PM on May 17 [1 favorite]


Oh, holy fuck, were you one of the sad derelicts who actually believed Sun had actually open sourced anything? That was a thing back when Clinton was in office, and the answer was generally "No, but we want everyone to think we're nice. Nice-ish. Nice-a-like!"
posted by Slap*Happy at 7:55 PM on May 17


"Sad derelicts"???? Would you mind arguing the point, and not the person? Thanks.
posted by benito.strauss at 9:48 PM on May 17 [3 favorites]


What was the name of the song by the Sad Derelicts that brushed the bottom of the charts?
posted by juiceCake at 10:12 PM on May 19


« Older The baffling tweets of Jaden Smith make a surprisi...  |  Even if you don't have a Gmail... Newer »


This thread has been archived and is closed to new comments