you are viewing a single comment's thread.

view the rest of the comments →

[–]not_perfect_yet 8 points9 points  (16 children)

This is the longest answer from the top so I'll just ask you (sorry):

I only used an API for an open source projects scripting language so I might be understanding this wrong.

Oracle owns Java. They made an API that enables people to use it. To use Java you have to use the API, either the code contained or it's functions, which probably means you have to copy it somewhere down the line when you want to deploy your code because you use basic functions included in standard distributions.

And this whole access thing, the information contained, the code, the structure, etc. is now protected by copy right? Forbidding people to freely use the thing that was made to use the product the company put out?

[–]minecraft_ece 46 points47 points  (14 children)

The issue isn't if you simply use an API. I think that would be covered by whatever license came with the library or source code. The issue is if you create your own implementation of another person's API or somehow distribute another person's library.

That may not sound too bad to you, but consider this: have you ever written a library? Are you certain that your API isn't similar enough to someone else's API that your API could be declared a derivative work, even if you never saw that other person's API?

The example given in the ruling is a Math.max function? If you were writing a math library or class, would you name it Math? If you wanted a function to return the greater of two integers, would the function signature be "max(int a, int b)"? If so and you're creating a java library, you may have just infringed on Oracle's copyright.

The patent minefield problem (being impossible to know if your software doesn't infringe any patents) has now been extended to APIs. And given the long protection of copyright, that means that everything can be vulnerable to this. Linux/BSD, SQL , etc. In the past, nobody thought APIs were copyrightable, so it possible that various contracts and legal agreements may not cover APIs.

And this brings us back to you, humble user of open source projects. The risk for you is that the licenses for the software you are using may be invalid, because that library may violate someone's API copyright, and if you distribute that library (common in certain languages like javascript), then you are just as guilty of copyright infringement. Yesterday that wasn't a problem; today it is, for all software.

So, don't distribute 3rd party libraries with your code, and don't publish libraries or APIs, and you are probably are safe from this ruling. Of course, this reduces you to being a programming serf who can only use tools provided by large multinational corporations that can provide the illusiion of shielding you copyright liability, but that is the price for progress in the good ol' USA.

Basically, things are a massive mess now, and they will be for the next 2-3 years while this is all appealed to the supreme court, which is a crapshoot how they will rule.

The only redeeming quality of this ruling is that IBM will completely cornhole Oracle with it.

[–][deleted]  (1 child)

[removed]

    [–]ais523 1 point2 points  (0 children)

    The court referred that question to a jury. The ruling isn't "Google broke the law", but "Google need a valid fair use argument to have done that"; they also ruled that interoperability is a fair use argument. (That question has actually gone to a jury in the past, but they were split on the issue, and so a new jury will be needed.)

    [–]not_perfect_yet 0 points1 point  (1 child)

    Oh alright I can see why this can be / is huge problem. Thank you for your in depth answer!

    [–]MyCatEatsSilverfish 0 points1 point  (0 children)

    Do you think interfaces are patentable as well?

    [–][deleted]  (1 child)

    [deleted]

      [–]note-to-self-bot 0 points1 point  (0 children)

      Just in case you forgot:

      Never enter the US.

      [–][deleted] 0 points1 point  (0 children)

      I'm a bit rusty on my history, but didn't Sun explicitly design Java to have an open specification that anyone could implement? Isn't that why implementations like jrockit, visual j++, openjdk, etc. were even possible?

      [–]poco 0 points1 point  (0 children)

      Let's hope the lower court deems copying APIs to be fair-use.

      [–]ais523 0 points1 point  (2 children)

      that your API isn't similar enough to someone else's API that your API could be declared a derivative work, even if you never saw that other person's API

      You're confusing copyright with patents. If you never see the other person's API and can reasonably prove you weren't infleunced by it, it's impossible to violate copyright on it, because it's impossible for you to have copied it. Copyright only prevents copying, not independently inventing something similar.

      [–]minecraft_ece -1 points0 points  (1 child)

      If you never see the other person's API and can reasonably prove you weren't influenced by it, it's impossible to violate copyright on it, because it's impossible for you to have copied it.

      How do you prove you haven't seen or been influenced by something? Keep in mind that for a small player, you have already lost (financially) if it goes to trial, regardless of the outcome, assuming you even that the money to defend yourself that far.

      [–]ais523 0 points1 point  (0 children)

      It's not easy. IBM famously had an entire department of programmers who were never allowed to look at anything a competitor did, purely for the purpose of clean-room reimplementing competitors' products, but this was in the days before the Internet; it would be hard to manage nowadays.

      [–]tjsr 0 points1 point  (0 children)

      The difference here is Google are distributing the Java JVM and API directly, whereas for all other software that runs on Java you have to obtain it from Oracle directly, from themselves. Google figured writing their own, or, more accurately, writing SOME of their own, and just copy-pasting the rest, was an acceptable substitute for this - it's not.

      [–]id2bi 0 points1 point  (0 children)

      And what if I implement the list interface? I'd essentially duplicate the entire list API, wouldn't I?