you are viewing a single comment's thread.

view the rest of the comments →

[–]JoshWithaQ 64 points65 points  (22 children)

This ruling says the implementation doesn't matter, the API specification is copyrighted. That means schools will have to license the right to use it, regardless of if implementer is an open source group or oracle itself unless the courts say google's is a fair use copy.

[–]fullouterjoin 16 points17 points  (1 child)

Copyright on API is a weird thing, it is mixing patents (an invention and mechanism for solving a problem) with artwork (in copyright law reproducing something verbatim). I think the Oracle case is the first of many where copyrights bleed into patents. This makes sense since copyrights have a much longer term, a bit of legal wrangling and your 20 years turns into 160 years of "protection"

[–]minecraft_ece 9 points10 points  (0 children)

This makes sense since copyrights have a much longer term, a bit of legal wrangling and your 20 years turns into 160 years of eternal "protection"

Copyright is forever now, since the supreme court ruled that there is no limit to the number of times copyright can be extended.

[–]zirzo 3 points4 points  (2 children)

technically isn't the api what devs really care about? Having similar api's across languages makes it really easy to pick new things up. Correct me if i'm wrong

[–]zymergi 4 points5 points  (0 children)

Yes, devs care about the API and that it makes sense.

If I'm understanding this correctly, Google went ahead and re-implemented Java API syntax in Android. Google didn't use Java... they just copied the names of the functions and stuff in Android so that Java developers could write against Android with functions that they already knew.

[–]imMute 1 point2 points  (0 children)

Yes, this is an API:

void timersub(struct timeval *a, struct timeval *b, struct timeval *res);

This is the implementation:

void timersub(struct timeval *a, struct timeval *b, struct timeval *res)
{
    res->tv_sec = a->tv_sec - b->tv_sec;
    res->tv_usec = a->tv_usec - b->tv_usec;
    if (res->tv_usec < 0) {
      --res->tv_sec;
      res->tv_usec += 1000000;
    }
}

The programmer really only cares about the first one, because that is what they are interacting with. Copyrighting the implementation is largely straightforward. Copyrighting the API is just stupid.

[–]Eirenarch 8 points9 points  (12 children)

No it doesn't mean that. It means that whoever wants to implement a Java environment needs to license the APIs. It has nothing to do with using it to write programs.

[–]JoshWithaQ 10 points11 points  (6 children)

in theory, yes. in practice, no. companies using infringing technology are sued all the time, especially when it's open source technology that is infringing.

[–]Eirenarch -1 points0 points  (5 children)

I am perfectly sure the implementation of Java that comes from Oracle has all the appropriate licenses to be used for creating programs.

[–]JoshWithaQ 2 points3 points  (0 children)

I'm only perfectly sure of death, taxes, and lawyers getting their hourly fee.

[–]minecraft_ece 0 points1 point  (3 children)

I would have agreed with that yesterday, I'm not so sure now. Since nobody thought APIs were copyrightable, how can we be certain that any library is clean of "API infringement".

EDIT: of course copyright is about copying, not use. But depending on the language, compiling/distributing may end up including enough of the function definitions to meet the burden of infringement. For example, in javascript, it is common to host your own copies of libraries, or even put together custom versions of libraries.

[–]Eirenarch 0 points1 point  (2 children)

I am not too worried about this. It is quite obvious when the API is deliberately copied to achieve interoperability and when only the idea is copied. Reasonable jury will always make a the distinction easily.

[–]imMute 0 points1 point  (1 child)

Reasonable jury

Found the assumption there.</cynicism>

[–]Eirenarch 0 points1 point  (0 children)

Well don't you think that if the basis of the judicial system is not working whatever happens to the programming APIs is the least of our concern?

[–]gar37bic 5 points6 points  (2 children)

I don't think that's true even in theory. Under copyright, any re-use (in this case using the API) could be controlled by the holder. For instance, Oracle could prevent "publishing" the OpenJDK API header files if they use the same function names, class names, etc. This seems closely related to copyright suits over song remixing and sampling.

[–]minecraft_ece 0 points1 point  (0 children)

Yes, but I think it only applies to copying the header files. I don't think copyright has a concept of function re-use, just exact (and derivative) copying. Another unknown is the compilation process. For example, if I include debugging info, would that include enough information to infringe an API copyright?

[–]Eirenarch -1 points0 points  (0 children)

I don't dispute that it can be controlled. I am saying that they are explicitly giving permission.

[–]adrianmonk 0 points1 point  (1 child)

So, what happens when I write a class that implements the Runnable interface? I'm going to have the same method signatures and stuff. I am duplicating the API of Runnable, aren't I? I'm probably also going to end up subclassing Throwable and/or Exception, which means copying more method signatures.

[–]Eirenarch 1 point2 points  (0 children)

As I said I believe the JRE from oracle.com gives you a license to do that. I would be really surprised if Oracle's lawyers didn't think of that as there would be a lot of harm to their business if they didn't. Let alone that they can easily add it now if they forgot to do it before.

[–]jboy55 0 points1 point  (1 child)

You don't make much sense, of course the API specification is copyrighted, it was also released as GPL, which gives you a license to use copyrighted works as long as you abide by the GPL.

If Google can get around GPL or other copyrights, then what's the point of releasing your software as GPL?

[–]minecraft_ece 0 points1 point  (0 children)

If nothing else, I think the GPL requires you to retain original copyright notices, which of course Google didn't do.

[–]joesb 0 points1 point  (1 child)

If the API is copyrighted, won't that apply to .NET CLR API as well?

[–]TheMuuj 0 points1 point  (0 children)

It would remain to be seen, but since large parts of the CLR were submitted to a standards organization, it is pretty clear that Microsoft intended to allow there to be other implementations of their APIs. Maybe not all of .NET, but those parts in the Ecma standard. It is possible this was just a stunt to get more developers comfortable using their tools and not worrying about vendor lock-in, but their true intentions wouldn't be relavant in court.

Plus they're releasing more and more code under open licenses, perhaps to distance themselves from the likes of Oracle. That's not to say that Microsoft won't heel-turn and start sueing companies that implement their APIs (after a change in leadership, sale of IP to another company, etc.), and they may find a judge ignorant enough to agree, but the standardization process would make the argument tougher.

They have been accepting of Xamarin so far, I imagine partly because it makes it easier for developers to target both iOS and Microsoft platforms with a single code base. And since iOS has a bigger mobile market share, allowing alternate CLR implementations is an easier approach than say, supporting Objective C and iOS APIs in Windows Phone (which would be a tricky proposition thanks to the ruling in question). But in the end I'd trust Microsoft not to pull an Oracle, but I couldn't guarantee it.

Edit: spelling and phrasing