6 ms·
I'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 m
by treis 7y ago
I'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]
- sidlls 7y agoIsn't your argument that `def full_name` is copyrightable, though? Why not the rest, then?
- curt15 7y agoBut what about backend code that reimplements full_name, for instance, what Amazon Maps does with the Google Maps API? https://developer.amazon.com/docs/maps/differences.html https://developer.amazon.com/docs/maps/differences.html
- XCabbage 7y agoThis clearly isn't a reasonable standard for asserting copyright. By the same logic: * 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.
- treis 7y ago>* 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 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?
- jcranmer 7y ago> Why should we draw the line at the code 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.
- treis 7y ago>Because code provides a concrete, complete, formally understandable semantics. Code is not an "abstraction" over different concrete implementations; it is a specific, concrete implementation. 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].
- magicalist 7y ago> APIs are clearly creative and not trivial work that should be protected. 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.
- treis 7y agoI understand the argument but have yet to see one that has a logical consistent separation of API and the rest of the code. In other words, if you go down the API = recipe path then you logically should go down the code = recipe path as well. After all, code is nothing but a complex recipe for a processor to execute.
- icebraining 7y agoThe API doesn't actually run on the CPU, it's just metadata.
- treis 7y agoCan you expand on what "actually run" and "metadata" mean in this context?
- icebraining 7y agoWhen the code of a function is compiled fully until CPU instructions, the line declaring the function name and arguments disappears in the process; it's only used as metadata by the compiler (AOT or JIT). There's no x86/ARM/etc instructions that represent a function declaration.
- treis 7y agoNo java code you write is represented by an x86/ARM/etc instruction. Everything disappears when it's compiled to byte code. If that's what makes an API metadata then every line of Java written is just metadata.
- slavik81 7y agoTreis is arguing his case reasonably and made points that are worth engaging with. His comment does not deserve its current grey status. We need people representing this perspective to have a good discussion.
- theaustinseven 7y agoThat's absolutely ridiculous. With this logic, any time I implement an interface that I didn't myself make, it's a copyright violation. I shouldn't even consider making something iterable because then Oracle could take me to court for violating their copyright. All I'm doing is implementing an API they laid out. In this case, it's clearly intended to be copied, but they can't have it both ways. It's either ok, or it isn't.
- zucker42 7y agoI think the key point here is that an API is a specification of functionality, and therefore is an idea (the idea being the idea of program which other code interacts with in a particular way). There is no way to write a runtime environment compatible with Java programs without having the same API (and its possible to develop an identical API only looking at the documentation). While it might involve creative work to come up with an idea, ideas aren't copyrightable[1]. On the other hand, the implementation of an API is clearly an expression of the idea of a particular public interface, so it should be protected by copyright. IANAL though. 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 https://en.wikipedia.org/wiki/Idea%E2%80%93expression_divide