8 ms·
I must admit I have not been following this case too close. But I get the general sense that most people in the CS community is in favor or Google and against O
by binthere 7y ago
I must admit I have not been following this case too close. But I get the general sense that most people in the CS community is in favor or Google and against Oracle. I'd like to understand it better.
Can someone please explain in technical terms exactly what Google copied and what is Oracle complaining about? Is it just the Java API declarations? Most of the articles I find try to explain the issue in layman's terms which makes it harder for me to understand exactly what was copied.
- CobrastanJorji 7y agoYes, this is the Java API declarations. If you open up the JavaDoc for Java and look at the list of classes and functions, stuff like java.util.HashMap and System.out.println. Google wrote all of those classes and methods from scratch. Oracle's claim is that this was not okay because copyright covers APIs. If true, this would have some fascinating consequences. For example, HTTP is an API. Presumably Tim Berners-Lee could sue the creators and users of all HTTP servers for violating his copyright. (note: not a lawyer, not even all that smart)
- dmitrygr 7y agoGoogle REIMPLEMENTED base classes to match what a normal Java app would expect. They complied with the public API as you'd find in javadocs. Oracle claims that is infringement because to make that work, their method signatures look identical to oracle's (and thus Oracle claims they were copied, in violation of copyright law). Google claims that API cannot be copyrightable by definition (an argument that most programmers agree with I feel) There was also a bit of similar code for obvious reasons. For example, how many ways are there to implement "bool rangeCheck(int idxRequested, int maxValidIdx, int minValidIdx)"?
- krn 7y agoIs it similar to how Preact just implements React's API? So the problem here is, that Java's API is not under MIT? And what about all those competing companies that implement AWS S3's API?
- wuliwong 7y agoI'm trying to understand the same thing. I think the idea is something like the render method basically behaves the same whether it is React or Preact but the actual code inside of Preact's render method is written from scratch. Although, in the case of Preact, it's probably not necessary because of the license for React?
- jlmorton 7y agoGoogle asserts that an API cannot be copyrighted at all, and that even if it can, their usage of it falls under fair use. Indeed, if Oracle were to win, it would mean re-implementations of AWS services (like S3, or other services within LocalStack) would likely be infringing, although it may be mitigated in non-commercial uses.
- dmitrygr 7y agoYes. And oracle claims that copying the public method signatures IS infringement.
- nailer 7y agoThe article says: > after Google incorporated 11,500 lines of Oracle’s Java code I'm pretty sure the article is wrong and you're right as that's consistent with what I've read before.
- dmitrygr 7y agoOracle claims public method signatures as code. If that is true then their claim is valid. I don't think you'd find any actual programmer who'd consider public API signatures as copyrightable code.
- treis 7y agoI'm an actual programmer and I consider API signatures copyrightable. I spend a significant amount of time as a lead developer laying out class structure and method names for a more junior developer to actually implement. APIs are clearly creative and not trivial work that should be protected. I think copying an API in a compatibility layer should be protected as fair use, but I don't think you should be able to start your development by copying an API someone else created.
- vmateixeira 7y agoIn your opinion, would that apply to web APIs too? How many ways are there to write a create user API besides POST /user/? Does that mean every company should then be taken to coury as well?
- treis 7y agoNo, for the same reasons that it's not infringement to write code like: def full_name return self.first_name + " " + self.last_name end
- deleted 7y ago[deleted]
- 7y ago
- blackhaz 7y agoI wonder if this is somehow similar to how PC clones reimplemented IBM PC's BIOS. Can this be used as a precedent in this case?
- SilasX 7y agoIs there a reason this just applies to software, or is the principle more general? In a sense, Wendy’s “reimplements” the “supersize my combo meal” interface.[1] They call it “biggie-sizing”, but... Let’s say Wendy’s instructs employees that “if someone asks for a meal to be supersized, handle the request as if they had asked for it to be biggie-sized”. Could that conceivably be an API copyright violation? [1] McDonald’s lets you “supersize” your order which means paying extra to get a larger drink and order of fries.
- MichaelApproved 7y ago"Super Size" is a McDonald's trademark, so it falls under different rules. I'm guessing many menu items are trademarked as well. https://trademarks.justia.com/744/51/super-size-74451719.html https://trademarks.justia.com/744/51/super-size-74451719.htm...
- SilasX 7y agoRight, but I think my example sidesteps the trademark complication because Wendy’s doesn’t brand it as supersizing; they just respond to “supersize” requests in accordance with McDonald’s public spec.
- MichaelApproved 7y agoYeah, I was being pedantic with my response.
- btilly 7y agoThe principle is more general. According to copyright law, you can copyright creative expression but not anything that is necessary to the functionality of what you're building. However those might be protected under patents, trademark, or trade secrets laws. Previous to this case, the code that implements the API can be copyrighted, since it is possible to implement the functionality with different code. But the code that specifies the API interface is absolutely required for compatibility if you want code that is written for one system to be compiled against the other. However a national precedent put down by the Federal Circuit (the same court that caused software patents to blossom out of control) decided that there is enough creative expression in API interfaces for them to be copyrighted, despite them being necessary for compatibility. Most people in software think that the previous precedent was better. Hopefully the Supreme Court will agree. (They overturn the Federal Circuit more often than not.) Going to your fast food example, I'm pretty sure that trademark law applies, which is quite a bit different. But you can't copyright or trademark the act of making the meal larger. (You could patent it..but McDonald's didn't. And even if they had, the patent would now be expired.) But you can trademark the term used to ask for it. And so Wendy's is not allowed to use that term. They can understand it, but not use it. However at some point if "supersize" falls into common use, Wendy's could file a lawsuit saying that it is generic, and THEN they could use it. (Losing trademark due to a term becoming generic is one of the differences between trademark law and copyright law.)
- tamrix 7y agoTo run Java on your devices, you have to get it licensed. It takes lots of money and time to create a rich ecosystem like Java. Google never paid for permission to use Java in andriod. Instead they copied Java and deliberately went around all the the patients and copywrite which includes the API debate as evidence google deliberately avoided copywrite. If you look at this morally, Google used Java without paying. Pay up. If you look at this under a lens. Google never broke any laws because they looked up every patient and copywrite Oracle now owns and went around it. So technically, they didn't copy anything Oracle claims to own. All except, for one little minor detail in the API copywrite. Which of they can prove, then google stole Java. Unfortunately, Google is very good at PR and has quite a big fan base. So all you'll hear is praise for the GOOG.
- jacques_chester 7y agoA nitpick: "copyright", not "copywrite". It's about the _rights_ of respective parties.
- sytelus 7y agoOn one hand I feel APIs are an important asset for any business. Platforms and programs can literally succeed or fail because of how their APIs are designed. Personally, I've spent as much as 1/3rd of my time on some projects in just thinking about APIs and go through dozens of iterations. If someone then copies verbatim, I would certainly feel getting robbed. On the other hand, APIs has to be public and copiable for people to do things like mocks or wrappers. Also, re-implementation is what allows progress and competition. It doesn't seem like a good thing for society for APIs as uncopiable without royalty. It looks like we are literally here on the edge of reasoning trying to argue if the border of your house is also your property. These are the kind of philosophy-heavy cases SC should definitely spend time on.
- uluyol 7y agoThe case has evolved quite a bit, so here's a quick summary: - Oracle claimed that Google copied parts of Java for Android - Claims about copying code were weak (very little was copied) so that was dropped and this became a question about copying the Java APIs - The judge initially on the case (Alsup) had the jury assume that APIs could be copyrighted and they said it was a copyright violation - Same judge then declared that APIs cannot be copyrighted - Oracle appeals to Federal Circuit (?) which declared that APIs can indeed be copyrighted - Case sent back down to Alsup and Google found guilty - Google appeal to the Supreme Court Now the question is will they agree whether APIs can be copyrighted or not. If so, then Google is far from the only victim here, as anyone reimplementing someone else's API is in trouble.
- jpollock 7y agoIt would also mean that all the PC BIOS manufacturers have been violating IBM's copyright for decades.
- nradov 7y agoJust to be pedantic, Google wasn't found guilty. Since this is a civil case they were only found liable.
- pier25 7y agoCan you explain the difference?
- ocdtrekkie 7y agoCivil (tort) and criminal cases have different terminology and different stakes. Torts are, effectively, non-criminal wrongs against someone else. An unfairness or unevenness that has taken place. You are liable for the damage to another party, but you are not guilty of a crime. You can be forced to pay the other party, but you cannot go to jail. Civil cases also have lower standards of proof to hold someone liable compared to guilt in a criminal case. In a criminal case, the standard is "beyond a reasonable doubt", but in civil cases, it's usually "preponderance of the evidence", which more or less means, it's more likely they are responsible than not responsible. (This is also why someone may be not be found guilty in a murder trial, but following that, a family may receive financial compensation through a civil suit that holds them liable for the person's death. It's much easier to cross the bar for a civil case.)
- snarfy 7y ago//adds two numbers int add(int a, int b); Oracle is claiming nobody else is allowed to make an add() method with that signature.
- conanbatt 7y agoint add(int x, int y); Can I get a corporate lawyer's salary now
- shmageggy 7y agoIANAL but even if it's determined that APIs are copyrightable, `add(...)` would almost certainly be considered public domain. There's no way to track down the original author, and whoever it was never claimed ownership
- jandrese 7y agoIt couldn't enter the public domain until 2116 unless the original author explicitly released it, which they did not because almost nobody does that.
- rhino369 7y agoIt’s more complex than that. Copyright only forbids copying. Truly independent arrival at the same work isn’t actionable. So if the only overlap in code is this sort of coincidental or “there is really only one way to do this” situations, you shouldn’t be found liable. Think of it like I Want To Hold Your Hand by the Beatles. I bet 500 songs used the line “I feel happy inside,” but it’s not copyright infringement. But if steal half the lyrics, it’s infringement. Same would be true for APIs, if they are found to be copyrightable.
- orthoxerox 7y agoGoogle copied the API, but didn't make the runtime compatible with Java ME, SE or EE. Oracle says you can reimplement Java API, but only if you're making a complete Java-compatible runtime, one you can run a regular .class or a .jar in. If you simply reuse some APIs because you want to exploit people's familiarity with Java APIs, you are committing copyright infringement.
- Oletros 7y agoJava EE is not compatible with Java ME
- wtallis 7y agoCompatibility is a requirement for using the Java TCK and getting permission to use the Java trademarks. I don't believe Oracle has ever made it clear what the conditions are for getting a copyright license for the API alone.
- curt15 7y agoOne of the four fundamental factors in any fair use determination is the "the amount and substantiality of the portion used in relation to the copyrighted work as a whole". If Oracle wants to claim that Google effectively didn't copy enough of Java, it sounds like they need new law.
- snarf21 7y agoI'm on Google's side for two reasons. 1) API compatibility is good for all of us and what happens if someone claims copyright on a function that adds to integers? 2) And most importantly, Oracle bought SUN for sole explicit purpose of trying to shakedown Google over Android. This isn't a case of not being able to recoup time and money for Oracle. It is a sham and akin to patent trolls. I hope they continue to wither and die.
- nlewycky 7y agoOracle's remaining claim is that functions having particular names and belonging to particular packages is copyrighted by them and was replicated by Google. For example, the function to calculate the sine of an angle is named 'sin' and belongs to the Math package. They don't claim any particular text was copied, they claim that this structure, sequence and organization (SSO) of the functions was copied from Java. Supposing Oracle's legal theory were correct, this would give rise to two major categories of problems. If you accept that the organization of a library of functions is copyrighted and requires a license to reproduce, it leads to the question of whether a program which merely uses said library would be considered a reproduction. When writing a library I might declare that 'sin' is in 'Math' by writing "namespace Math { float sin(float); }" which programmers call a declaration. Someone using the library might write "float sine = Math::sin(angle_as_float);", but as a programmer you can look at that call and see that it tells you that 'sin' is in the 'Math' package, same as the declaration. If Oracle's lawsuit is successful, and we agree that using a function is a reproduction of its SSO, all programs which merely interface with any other program through a library of functions would be copying the SSO. Given that nobody in the industry has ever considered SSO of an interface to be copyrightable, we've never made technical decisions or built legal agreements around it. The immediate effect is that decades of software written to run on top of Windows would suddenly discover that their code is jointly copyright Microsoft, users of an SQL database would discover that their database queries are jointly copyright the SQL server vendor or the SQL specification authors or both, and on and on across the entirety of computing. The second issue is that Java was not the first language to put the 'sin' function in the 'math' package. For example, C places 'sin' inside 'math.h'. Is there someone with standing to sue Oracle for copying C? It's not like people really create interfaces out of whole cloth very often, you can usually find the incremental progression and improvement over time. I expect that corporations will simply ignore the bad ruling if it does come down. If they didn't the number of new license negotiations and lawsuits would be staggering.
- gingabriska 7y agoGoogle says it did clean room implementation but investigation uncovers that Google copied and pasted a lot of code to rush through development and there were strict guidelines set to remove the use of word "Java" from the source code repository which even delayed some of their launch So Google might have simply used Java's code without ever being able to source a license. So here the case is not merely copying API but source code too. If you read the case history, even Google's key employees knew this, they were worried and they did try to acquire the license till end but failed to do so, they proceed to move on with the project. (Disruption mindset? Will pay the fine if caught later?) Google surely underestimated who they were messing with.