I've discussed this topic once with a developer who sided with Oracle, which was a fun exercise for me, because I side with Google.
The insight I got from that exercise was that, to him, APIs represent a product (e.g. I put a lot of effort into making this API, it's nice and clean, why should someone else be allowed to copy it?) and the implementation is typically straightforward grunt work, with intrinsically less value (e.g. we all know how to square a number).
As a developer, it was easy for me to sympathize with that thinking, because who hasn't been amazed by how elegant some of the APIs are and how difficult it is to create a simple, yet powerful API?
However, I believe that in the general case, it is the implementation that's the difficult part, which is why I'm against copyrighting APIs. Anyone can come up with an API for a Map, not everyone can create an efficient implementation of HashMap.
Doesn't this sound vaguely familiar? I think it's the same argument as "ideas vs execution", it's just that, as a community, we've discussed the pitfalls of ideas, NDAs and execution an order of magnitude more than copyrighting APIs vs implementation, and so there's less of a divide.
If you side with Oracle and you agree that execution > idea, then you should consider that implementation > API, and, similarly to how you can't copyright an idea, you shouldn't be able to copyright APIs.
In the case of Oracle vs Google, both the API and the implementation are trivial, which is a special case of the more general "API vs implementation", and it is unfortunate that a precedent will be set for the general case, based on a special case. That sounds like a recipe for future trouble.
> I put a lot of effort into making this API, it's nice and clean, why should someone else be allowed to copy it?
The problem is that copyright protection has requirements beyond the above sentiment, which can just as easily apply to something that needs to be patented rather than copyrighted. You can't get copyright protection just because you feel you deserve it.
Abstract ideas can be hard. It's not about triviality of the APIs that should exclude them from copyrightability, it's about their abstractness. That's how you should bust such arguments.
Java Generics are Turing complete. [1] You can produce an entire program inside a Java API. The API is part of the implementation in Java.
The criteria for copyright is originality and creativity. [2] It doesn't matter if understanding hashcodes is hard. Mathematical functions are not copyrightable. [3] Whereas elegant vs inelegant APIs demonstrate there is creativity in the API design process. Google engineer Bob Lee agreed [4]
>Q. Would you say that designing APIs is a creative activity?
>THE WITNESS: Yes, absolutely.
Copyrights are not patents. Clean room designs are perfectly legal. [5] Google could have avoided the entire fight, but Google failed to prove they did a clean room design.
Quite the opposite, Oracle was able to show that Google made direct copies of the code. The evidence at trial showed that Google decompiled at least eight Java files and copied them each in their entirety. [6]
The insight I got from that exercise was that, to him, APIs represent a product (e.g. I put a lot of effort into making this API, it's nice and clean, why should someone else be allowed to copy it?) and the implementation is typically straightforward grunt work, with intrinsically less value (e.g. we all know how to square a number).
As a developer, it was easy for me to sympathize with that thinking, because who hasn't been amazed by how elegant some of the APIs are and how difficult it is to create a simple, yet powerful API?
However, I believe that in the general case, it is the implementation that's the difficult part, which is why I'm against copyrighting APIs. Anyone can come up with an API for a Map, not everyone can create an efficient implementation of HashMap.
Doesn't this sound vaguely familiar? I think it's the same argument as "ideas vs execution", it's just that, as a community, we've discussed the pitfalls of ideas, NDAs and execution an order of magnitude more than copyrighting APIs vs implementation, and so there's less of a divide.
If you side with Oracle and you agree that execution > idea, then you should consider that implementation > API, and, similarly to how you can't copyright an idea, you shouldn't be able to copyright APIs.
In the case of Oracle vs Google, both the API and the implementation are trivial, which is a special case of the more general "API vs implementation", and it is unfortunate that a precedent will be set for the general case, based on a special case. That sounds like a recipe for future trouble.