3 ms·
I am a software engineer and it is certainly NOT open and shut for me. APIs are code definitions just as are interfaces, custom types, classes, and so forth. I
by austincheney 6y ago
I am a software engineer and it is certainly NOT open and shut for me. APIs are code definitions just as are interfaces, custom types, classes, and so forth.
I don’t think APIs should be treated differently than other code only because you need it to be so for your convenience. If APIs should be treated differently they need to be defined separately and licensed differently. Other languages and platforms makes this very clear by externalizing most APIs from the language and then adding support for the API to the language as though it is a foreign technology, because it’s definition and license are separate.
- andrewjl 6y ago> externalizing most APIs from the language and then adding support for the API to the language as though it is a foreign technology That's true, but only in the case for the language's standard library. But what about the API of the language's top-level constructs? A class must have an initializer, for instance. Or protocol / interface has the notion of required as well as optional methods. Why is the latter (language APIs) not copyrightable but the former (standard library APIs) is? What is the substantive difference between them?
- austincheney 6y agoYes, there must be some few primitive APIs within a given language. An example is base types and their most essential methods for internal constructs that aren’t meant to be exposed. Unfortunately, Java is just such a perfect for this legal fight. It is proprietary and exists in this nebulous universe of wanting to make everything Java. It’s like Microsoft of the 90s.
- imtringued 6y ago>Other languages and platforms makes this very clear by externalizing most APIs from the language and then adding support for the API to the language as though it is a foreign technology, because it’s definition and license are separate. What? No. Most modern languages do the opposite. Usually everything is defined directly in the standard library and syntax is often merely sugar to call specific functions in that standard library or to refer to specific definitions in that standard library. Primitive numeric types like int, short, long are no longer hard coded directly into the compiler. Instead they are defined in the standard library and the compiler is just employing optimizations where possible to make them behave like primitive types. Although Ceylon is dead I like to use it as an example. Almost everything was defined in the standard library. Even keywords in java like public, abstract, static are merely just annotations in Ceylon that were defined in the standard library.