Why are specs fundamentally different than implementations?
Why are specs fundamentally different than implementations?
Implementing an API spec is not just using the "abstract ideas" in the spec. It requires copying the specific text of the API: a function named DoSomething will incompatible with one named do_something.
I don't think that's a valid way to distinguish copying APIs and implementation.
On a purely theoretical basis, I do think APIs could be copyrightable, I don't think there is a valid way to distinguish them from implementation. The main argument against copyrighting APIs is practical: everyone has been doing it for decades, and changing the status-quo will be disruptive.
Another practical reason is that copyrighting APIs will decrease competition by impeding companies from creating better drop-in competitor products to established players. But this is really an argument against all software copyright, not just API copyrights.