10 ms·
There's a fundamental difference between: Blackbox testing -> API Specification -> Implementation and Copy API Specification -> Implementaton In the first c
by treis 9y ago
There's a fundamental difference between:
Blackbox testing -> API Specification -> Implementation
and
Copy API Specification -> Implementaton
In the first case, you will come up with something similar but ultimately original. In the second case you are blatantly copying someone else's work.
- Ajedi32 9y ago...I don't really see what the difference is. In both cases Google would end up with exactly the same API specification. There's no room for them to come up with an "original" API, because if the API they end up with is not an _exact copy_ of Oracle's, then software written for Oracle's Java implementation would not be compatible with Google's Java implementation (and vice-versa).
- treis 9y agoIt is effectively impossible to take something as complex as the Java API, do black box testing, and come up with an exact copy. Google's API being slightly different is ultimately the point. The process yields a new original work even if it ends up being 99% the same as Oracle's API.
- Ajedi32 9y agoThe 1% that's different being... what? Bugs? Like I said, any differences in Google's version of the API would, by definition, be interoperability problems that need to be corrected. To make that more concrete: if Oracle's string concatenation function is called `String.concat` and Google's is called `String.append`, then code which calls `String.concat` isn't going to work with Google's implementation, and code which calls `String.append` isn't going to work with Oracle's implementation. It doesn't matter if the APIs are "similar" or not, they have to be _identical_ in order for code written for one system to be interoperable with the other.
- treis 9y agoThe 1% will be things like String.methodNoOneUses or ObscureClass. Even if they aren't identical they will be close enough for 99.999% of the programs people write.
- foota 9y agoHow do you propose they do this black box testing?
- treis 9y agoWrite code, run it through the compiler and create specifications based on what you observe.
- monocasa 9y agoAnd once again, you'd end up in exactly this legal situation since the names are visible via reflection, but somehow aren't functional as viewed by the court. That's one of the most important issues with this ruling; it effectively bans even black box reimplementations.
- hcknwscommenter 9y agoIt is not copyrights problem that obeying the law might be difficult.
- michaelmrose 9y agoSo bugs nobody files then? Why do you think this is a useful distinction. Either APIs aren't copyrightable or we should pass a law that says they aren't immediately.
- hcknwscommenter 9y agoBecause? You want the world to work that way? Well, it doesn't. APIs are copyrightable.
- hcknwscommenter 9y agoSo? The proper response would have been for Google to either pay the license or develop their own write once use anywhere software. Instead, the took the shortcut of copying someone's hard work.
- Ajedi32 9y agoBy that logic WINE shouldn't be allowed to exist either, since it copies Windows' API. Copying APIs is strictly necessary for interoperability. Allowing APIs to be copyrightable encourages monopolies by legally prohibiting newcomers' software from being compatible with their competition. It'd be like if Microsoft were allowed to sue Google Docs and Libreoffice for making their software able to open Word documents. (Except in this case the "documents" are source code.)
- hcknwscommenter 9y agoI'm not sure how WINE works. But I just don't see that being the case. All WINE has to do is capture the API calls and transform them into a different WINE API call that ends up performing the same function and then proceed with zero copyright issues.
- lmm 9y ago> All WINE has to do is capture the API calls and transform them into a different WINE API call that ends up performing the same function How can it "capture" the calls without knowing what it's capturing? It has to know that there's a windows API function called "CreateWindowEx" that takes particular parameters, otherwise how could it possibly "translate" it? And the fact that CreateWindowEx takes particular parameters is precisely the API. Of course the implementation of that API will be different in WINE, just as Google's implementations of the Java API are different from Sun's (aside from the 9-line rangeCheck which is a separate issue). In fact it would be fair to describe what Android does as "capture the API calls and transform them into a different Dalvik API call that ends up performing the same function".
- Ajedi32 9y ago
- wvenable 9y agoPeople who reversed engineered the IBM BIOS had the API specification -- actually they had the entire source code. They didn't just fire random interrupts at the BIOS and see what it did. But what they did do was take that specification and describe it the detail necessary for completely fresh implementation.
- hcknwscommenter 9y agoNot true at all. It was a clean-room reverse engineering job. Yes, they could have looked at the API, but they did not. More specifically, they erected an information wall between those who had the API specification and those who did not, and used the results from those who did not.
- wvenable 9y agoOne team looked at the API and source code and everything and used that to develop the specification for the "clean" team to implement. That's the point. Collectively they didn't start with nothing.