5 ms·
I think you misread it (so i updated the original comment). I meant that open source projects that reuse API declarations or parts aren't typing them themselve
by DannyBee 13y ago
I think you misread it (so i updated the original comment).
I meant that open source projects that reuse API declarations or parts aren't typing them themselves, they are copying those API declarations verbatim from somewhere.
Ray's point what if they didn't copy, it may not be an issue, but they all do copy.
Here's a related but not exact example of what typically happens that i actually happened to have open in another window:
https://github.com/andreacimino/gql4j/blob/master/src/main/java/antlr3/com/googlecode/gql4j/antlr/GQL.g https://github.com/andreacimino/gql4j/blob/master/src/main/j...
Notice the comments.
These are taken, verbatim, directly from the definitions in Google's GQL reference.
Because it's a parser, there are no declarations, only a grammar implementation (which, BTW, would also fall under this precedent).
However, you'll see the same thing in open source projects that do API implementations as well.
- dragonwriter 13y ago> Open source projects that reuse API declarations or parts aren't typing them themselves. And even if they were, if the originals were copyrightable, there's no copyright-relevant difference between "typing them themselves" and "copy and pasting", both are verbatim copying (and, even not doing a verbatim copy and merely doing a "derivative work" based on the existing API would be -- barring fair use or other explicit exception -- a violation of copyright if the API, as such, was copyrightable.)
- rayiner 13y agoThe reason I bring up the difference between verbatim copying and "typing things in themselves" is because I think the Federal Circuit was myopic in how it applied the merger doctrine, and I think the District Court got it right. The merger doctrine basically says that an expression is not copyrightable if the expression is inextricably merged with the idea. So I'm imagining a bunch of Java classes loaded into memory. They're objects, and they have methods, and those methods refer to methods in other objects. Creating this state of memory is functional, and definitely not protect-able. Now, the interface declarations, then, are just a description of this state of memory. A method has a particular name or a particular set of parameters but those are just a description of the functionality, and there is no other way to precisely describe that state of affairs. The closest analogue I can think of to an API is a phone book, and the names and addresses in a phone book are not copyrightable, although higher-level structure might be. I think the court got stuck on the verbatim copying and that prevented them from seeing things this way.
- pron 13y agoLeaving aside that GQL is a language, and thus not copyrightable according to this decision, this is licensed use! (AFAICT, GQL is Apache licensed). Google intentionally chose not to comply with the OpenJDK license, and claimed that the APIs aren't copyrightable, and therefore not covered by the license anyway. Do you have examples of FOSS projects copying code while not abiding by the license? Again, I really think you're taking this out of proportion. This decision does not affect you if your implementing an API in accordance with the license. Some people keep saying that this decision is bad for FOSS, but they can't come up with examples of FOSS that will be affected (there are probably a few projects, but nothing that will shake up the industry).
- DannyBee 13y ago"Leaving aside that GQL is a language, and thus not copyrightable according to this decision," Citation needed? "AFAICT, GQL is Apache licensed" This page (https://developers.google.com/appengine/docs/python/datastore/gqlreference https://developers.google.com/appengine/docs/python/datastor...) is not Apache Licensed. It's "Except as otherwise noted, the content of this page is licensed under the Creative Commons Attribution 3.0 License," Given they haven't complied with the license (no citation, no attribution), calling this a "licensed use" is quite a stretch. It's actually pretty clearly not a licensed use. "This decision does not affect you if your implementing an API in accordance with the license." Which open source projects rarely do ... Really, do you think the TOS of most of these websites or software allow you to make your own implementations? Are most of them who do get "licenses" being careful about actually following license requirements?
- pron 13y agoEvery major open-source project complies, or tries to comply with licenses. Tiny projects don't matter because no one will sue them (and no one uses them anyway). Even if a completely imaginary scenario takes place, all they'll need to do to comply is add attribution, or something in the same vein. There's no earthquake coming. As to copyrighting a language: The appeals court makes a clear distinction between the Java programming language (i.e., the commands/keywords that are free for everyone to use) and the APIs, and finds that only three of the Java APIs in question are basically part of the Java language, but "Google could have written its own API packages using the Java languages", which, as the opinion notes, "Google chose not to do". http://www.fosspatents.com/2014/05/oracle-wins-android-java-copyright.html http://www.fosspatents.com/2014/05/oracle-wins-android-java-...
- danielweber 13y agoI wonder if you could clean-room most of this. Person A reads the declarations and writes down what they do, without mentioning any function names or argument names. "This function returns the index of a character in a string." Person B takes person A's work and writes int findIndexOf(String s, char c); A team then writes all the functions to do what Person B wrote up. Now, at this point, what you have is something functionally the same as Java's String object. Do this for all classes. Call this bundle something like AlterJava. (Or YerksDiddy if you really worry about the name.) Then someone writes a tool that translates Java into AlterJava. It's an easy thing to put into the compiler chain. I'm skeptical of these "just hop through this hoop and you aren't breaking the law" ideas when other people make them, so feel free to tell me I'm missing something. EDIT minor edits
- rayiner 13y agoI was thinking of exactly this, and I'd love to hear an explanation of why it wouldn't work. I think Oracle's win here is pretty "thin" in that regard. You could attack the translation tool, but it's just a directory mapping Java names to AlterJava names. What those Java names happen to be called are, under Feist Publications v. Rural Telephone Service Co., uncopyrightable facts.
- jpollock 13y agoThe hardest part in any clean room implementation is finding people with no prior knowledge of the source to make the clone.
- danielweber 13y agoIs it that hard to find people who haven't looked at the Java source code?
- dctoedt 13y ago> I wonder if you could clean-room most of this. ... This was much discussed in the early days of the PC; if memory serves, it's basically the approach that was taken by the first successful cloner of the IBM PC BIOS [1]. [1] http://en.wikipedia.org/wiki/Phoenix_Technologies#Cloning_the_IBM_PC_BIOS http://en.wikipedia.org/wiki/Phoenix_Technologies#Cloning_th.... Also http://www.linuxinsider.com/story/33839.html http://www.linuxinsider.com/story/33839.html