> 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.
> 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.
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.
Creativity is not a sufficient condition for being copyrightable. An obvious example is functional things that are patentable are also (supposed to be) creative inventions but can't be copyrighted, and then there are things like recipes, which are a representation of a creative work but aren't themselves copyrightable.
That's the argument here, not whether programming is a creative act.
There's no x86/ARM/etc instructions that represent a function declaration.
> When you write a Java statement you are clearly intending for certain instructions to get executed as a result of processing that statement. When you write a method signature, that doesn't represent any kind of intention for something to take place.
If we accept this argument then that means APIs are more copyrightable than code. Instructions, as in the context of recipes or process definitions, are not copyrightable. If we say code is an intent for something to be executed then that's an argument that it should not be copyrightable. Saying that an API is different and not simply instructions means that it should be subject to copyright.
It is possible to have two different programs that do the same thing. And therefore the exact code used is copyrightable.
But it is not possible to compile my code written for Oracle against Google instead unless the method signatures match exactly. Therefore the method signatures are more functionally necessary than the exact code.
Recipes that are a list of ingredients are not copyrightable. Recipes that describe putting love into each stroke of mixing the ingredients and how you learned to spread the frosting just so from your gram are copyrightable.
IMHO, the API is the former, code is the latter. The fact that both code and the API are recipes does not imply you have to choose between both being copyrightable or neither being copyrightable.
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?
def full_name
return self.first_name + " " + self.last_name
end* If I provide an outline of a political argument to a opinion columnist for them to write up in detail, I should own copyright on the argument and prevent anyone else from making it
* If I describe a novel combination of techniques to use in a photoshop to create an interesting effect, I own copyright to the process and prevent anyone else from using it
* If I come up with a new hairstyle that goes viral and becomes popular, I should own copyright to the hairstyle and be able to stop anyone else having it.
These are all bad ideas, and so is allowing copyrighting APIs. Being a genuine creative work requiring significant labour is simply not a high enough bar on its own.
What is code if not an outline for someone else to write up in detail? Your java code is compiled to byte code and then further onto machine code. Why should we draw the line at the code level of abstraction but not take the step to the API level of abstraction?
Because code provides a concrete, complete, formally understandable semantics. Code is not an "abstraction" over different concrete implementations; it is a specific, concrete implementation. While compilers may substitute the code for another variant that preserves the same behavior, they are required to ensure that this substitution preserves observable behaviors (unless those are undefined behaviors), and the behavior that is to be preserved is defined entirely by the execution of the original code.
It's not any more concrete than an API. Your Java code compiles to different bytecode depending on the version of Java you use. It then further changes to machine code that differs based on the JVM installed, operating system, and processor.
>While compilers may substitute the code for another variant that preserves the same behavior, they are required to ensure that this substitution preserves observable behaviors (unless those are undefined behaviors), and the behavior that is to be preserved is defined entirely by the execution of the original code.
While [programmers] may substitute the [implementation code] for another variant that preserves the same behavior, they are required to ensure that this substitution preserves observable behaviors (unless those are undefined behaviors), and the behavior that is to be preserved is defined entirely by the [definition] of the original [API].
Edit: As a secondary point, remember that the point of copyright isn't to protect authors, it is "To promote the Progress of Science and useful Arts".
[1] https://en.wikipedia.org/wiki/Idea%E2%80%93expression_divide