4

There is a proprietary library whose API I want to re-implement, which is provided to the users with specification, and its use is limited by its license to internal evaluation (to develop programs that will be ran by that library) and independent implementation of the given spec (which means it should not derive from/contain any source code or binaries of the provided library).

Let's say, before deciding to make my own independent implementation, I searched the web and found some programs that seem to have already made such implementation, and are open source. My initial wish is to go ahead and fork them, but I want to make sure those implementations are indeed independent and aren't stolen from the copyright holder (directly or by decompiling the binary, which is easy for Java, for example). Is it possible?

2

This is something that has been decided in US courts at least, and has been discussed in several places here and here:

APIs are copyrighted but in some case using them can be fair use.

So whichever way you go and end up building some piece of software that implements this API you may end at some level infringing on the copyright. It does not matter IMHO if you got the API details from the API author or from some independent reimplementation (even if it was a clean room implementation): if there is a license that does not grant you the proper rights to do so, you cannot.

You could claim fair use, but this is a legal determination best done by a lawyer.

This is very unfortunate but this is it.

  • The license explicitly allows reimplementation. – feos Feb 4 '17 at 10:29
  • So is your question about verifying if the other open source implementation have not borrowed decompiled code from the reference proprietary implementation? – Philippe Ombredanne Feb 4 '17 at 18:15
  • > I want to make sure those implementations are indeed independent and aren't stolen from the copyright holder. Is it possible? – feos Feb 4 '17 at 20:25
  • @feos Eventually yes. Best would be to ask and talk the authors though. – Philippe Ombredanne Feb 5 '17 at 13:05
1

If you asked a couple of years ago, that would have been fine. Some US courts have explicitly decided that APIs are not copyrightable, and a lot of longstanding copyright precedent supports that.

However, recently, in Oracle v. Google, the Court of Appeals for the Federal Circuit decided that APIs are sometimes copyrightable. Now, that's only an issue if you find yourself in that court's jurisdiction, but... It's actually insanely easy for a plaintiff to sneak into that court, so for practical purposes, you probably need permission.

In the case of Java, specifically, since Oracle offers an Open Source version of Java, you can work from that. But to build off that example, Apache Harmony was an open source fork of proprietary Java, but they never had permission to make it -- so when Google copied it, they had Apache's permission, but not Oracle's. So Oracle could still sue, and did. You need to get permission from the copyright holder, not some random schmuck off the internet.

On the other hand, if the existing open source project is going strong, and the copyright holder hasn't sued them yet, it might be relatively safe to go ahead and fork that open source project. There's some risk of getting a cease and desist, but... Well, it's up to you if you want to take that risk or not.

  • Since, as I said, the license explicitly permits reimplementation, it wouldn't matter if APIs are copywritable or not. The fact that they haven't got sued, even if they did steal it, can be easily explained by the fact that the API I'm talking about hasn't been in use for years, and its target devices were J2ME phones. I'll be honest, this API was developed by Nokia, which doesn't seem to care about this stuff anymore. But I can send them a letter and ask to opensource that lib, since other parts of Java's J2ME emulator (PhoneME) is already GPL2. – feos Feb 7 '17 at 17:05
  • This is interesting. I obtained as many versions of the target lib binaries as I could find, and also all versions of the sources, and after decompiling I see that all of them are completely different. It gives the impression that even the official ones were some sort of re-implementation! – feos Feb 11 '17 at 21:29
  • I must have missed that the first time around -- if the license permits you to reimplement their APIs, you have permission to reimplement their APIs. Just make sure you're not using any of their real code. – Daniel Feb 12 '17 at 16:44
  • You've read the original question, right? It is, precisely, how do I make sure I'm not using their original code when I simply fork others' code. – feos Feb 15 '17 at 16:08
  • Oh, you mean, if you find random code on the internet that says it isn't copying their original code, but you aren't sure? That's a lot harder. you could just go through the random internet code and try to see if there are any telling comments hiding somewhere, but they might have removed those. You might ask the dude who wrote it for some kind of guarantee that he didn't copy it -- but most open source devs don't want to do that. You could offer to pay for a guarantee like that? Idk. – Daniel Feb 16 '17 at 16:44

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.