Copyright and API's
Broken record, I know. We have been there and done that before. But I want to go at it again.
Firstly, I don't believe that, considering name, sequence and organization that API's are devoid of creativity. I certainly believe that for a small enough set of function calls, outside of context it is easy to believe that argument. Then, so too is an individual word or sentence. And, in most cases those wouldn't be sufficiently complex in and of themselves to deserve copyright protection.
This is one of the biggest things I think the detractors fail to see. Also, copyright is not like patents. It is not something which need be applied for, thus enabling patent troll like entities.
If we ever reach a point where copyright is a well established fact for API's I don't know what the barrier would look like. But I imagine most individual function calls, or even small libraries wouldn't meet the barrier. I think most would find their fears were overblown beyond anything even remotely reasonable.
I also largely disagree with the form follows function argument. In fact, if anything, I think people have it backwards. In the original Google v. Oracle trial, the judge's famous example was a function to draw a circle. It was argued that there was only one logical way to construct such a function. And while I find that is an overly contrived and simplistic example, I still think it fails without much research at all. Having programmed in many languages, I can tell you a number of things. Not all approaches to drawing a circle have the same name, same parameters, same sequence of parameters or are even within the same (or even directly equivalent) organizational structures.
In fact, the first language I remember trying to draw a circle in, only had a drawOval command. A circle is just a special case of an oval after all.
What is amusing is that, given the constraints of a programming language, once the method signature is defined, it is actually the implementation of the code itself which is more straightforward. Especially if you break it down to lower level calls within the programming language. Sure, I could implement such a call infinitely many different ways. But given a particular method signature there are potentially as few as 1 efficient ways to code the solution. I wouldn't dare say this is universal. But it is interesting, and I think it applies this way around more often than the other.
This is loosely related to my next point; Another common stance of those against copyright for API's is to compare them to tables of content or chapter names which aren't copyright protected. But this is comparing apples to naval frigates. I get why it is tempting to draw the comparison. I even get how they appear similar. But, a table of contents or chapter headings are secondary to a book. It is the content that a user consumes and those just help keep or find place. An API by contrast is how a developer consumes a third party library. They don't consume the underlying code directly. And they NEED to go through the API to get there. I can read a book without a ToC or chapter names. You can't utilize a 3rd party library without going through the API.
And back to the argument prior; A table of contents just tells you where to find the part of the book which you consume, and the chapter names (if applicable) are derived from the content. You can change a chapter name with no impact on the work or its content. The same cannot be said of a method signature or any other API element. If you change a method signature, you break the code. Also, as mentioned earlier, the method signature very much drives the implementation. Furthermore, I can't so much as change a variable name without breaking the underlying implementation. In a lot of ways the declaring code in an API is far more foundational than the actual implementation of it.
As alluded to earlier... give 100 experienced developers an API of arbitrary complexity and tell them to implement it and you're far more likely to have duplicate code than if you gave 100 experienced developers the same code and told them to generate the API's.
Again we see that the reverse applies elsewhere. Give 100 authors the same chapter headers and they'll likely still write completely different stories. But give the same 100 authors the chapter content and you're much more likely to get duplicate chapters.
It is paradoxical isn't it? To think that the larger body of work is actually the more derivative. But, an API is a highly descriptive thing and code is very heavily controlled by syntax. Once you have that description of how code should behave, it becomes the code itself which is more likely to follow from the implementation of the API than the other way around.
These are just my personal opinions. I didn't write the laws and I'm not paid to interpret them. I don't work for Google or Oracle and never have. How this trial ends after all appeals are said and done is not for me to decide. But, I fully believe people are blindly following Google because they believe that the company can do no evil, or because they are popular or whatever. Google does a LOT of things of benefit to a lot of people. And I certainly don't wish any ill upon them. But I do tend to agree with Oracle in this case. End rant.
Firstly, I don't believe that, considering name, sequence and organization that API's are devoid of creativity. I certainly believe that for a small enough set of function calls, outside of context it is easy to believe that argument. Then, so too is an individual word or sentence. And, in most cases those wouldn't be sufficiently complex in and of themselves to deserve copyright protection.
This is one of the biggest things I think the detractors fail to see. Also, copyright is not like patents. It is not something which need be applied for, thus enabling patent troll like entities.
If we ever reach a point where copyright is a well established fact for API's I don't know what the barrier would look like. But I imagine most individual function calls, or even small libraries wouldn't meet the barrier. I think most would find their fears were overblown beyond anything even remotely reasonable.
I also largely disagree with the form follows function argument. In fact, if anything, I think people have it backwards. In the original Google v. Oracle trial, the judge's famous example was a function to draw a circle. It was argued that there was only one logical way to construct such a function. And while I find that is an overly contrived and simplistic example, I still think it fails without much research at all. Having programmed in many languages, I can tell you a number of things. Not all approaches to drawing a circle have the same name, same parameters, same sequence of parameters or are even within the same (or even directly equivalent) organizational structures.
In fact, the first language I remember trying to draw a circle in, only had a drawOval command. A circle is just a special case of an oval after all.
What is amusing is that, given the constraints of a programming language, once the method signature is defined, it is actually the implementation of the code itself which is more straightforward. Especially if you break it down to lower level calls within the programming language. Sure, I could implement such a call infinitely many different ways. But given a particular method signature there are potentially as few as 1 efficient ways to code the solution. I wouldn't dare say this is universal. But it is interesting, and I think it applies this way around more often than the other.
This is loosely related to my next point; Another common stance of those against copyright for API's is to compare them to tables of content or chapter names which aren't copyright protected. But this is comparing apples to naval frigates. I get why it is tempting to draw the comparison. I even get how they appear similar. But, a table of contents or chapter headings are secondary to a book. It is the content that a user consumes and those just help keep or find place. An API by contrast is how a developer consumes a third party library. They don't consume the underlying code directly. And they NEED to go through the API to get there. I can read a book without a ToC or chapter names. You can't utilize a 3rd party library without going through the API.
And back to the argument prior; A table of contents just tells you where to find the part of the book which you consume, and the chapter names (if applicable) are derived from the content. You can change a chapter name with no impact on the work or its content. The same cannot be said of a method signature or any other API element. If you change a method signature, you break the code. Also, as mentioned earlier, the method signature very much drives the implementation. Furthermore, I can't so much as change a variable name without breaking the underlying implementation. In a lot of ways the declaring code in an API is far more foundational than the actual implementation of it.
As alluded to earlier... give 100 experienced developers an API of arbitrary complexity and tell them to implement it and you're far more likely to have duplicate code than if you gave 100 experienced developers the same code and told them to generate the API's.
Again we see that the reverse applies elsewhere. Give 100 authors the same chapter headers and they'll likely still write completely different stories. But give the same 100 authors the chapter content and you're much more likely to get duplicate chapters.
It is paradoxical isn't it? To think that the larger body of work is actually the more derivative. But, an API is a highly descriptive thing and code is very heavily controlled by syntax. Once you have that description of how code should behave, it becomes the code itself which is more likely to follow from the implementation of the API than the other way around.
These are just my personal opinions. I didn't write the laws and I'm not paid to interpret them. I don't work for Google or Oracle and never have. How this trial ends after all appeals are said and done is not for me to decide. But, I fully believe people are blindly following Google because they believe that the company can do no evil, or because they are popular or whatever. Google does a LOT of things of benefit to a lot of people. And I certainly don't wish any ill upon them. But I do tend to agree with Oracle in this case. End rant.
Comments
Post a Comment