News for hackers. Stuff that matters.
Re:Google’s Supreme Court faceoff with Oracle was a disaster... by AnthonyMouse on Thursday October 08, 2020 @06:38PM (#24724694)
> As applied to Java, individual method signatures like min and max might not be copyrightable, but someone had to go in and organize those individual methods into classes, and organize those classes into packages. That act of organization likely implies that the Java API (taken as a whole) constitutes a copyrightable work, even if the individual method signatures are not.

The problem with this theory is that class and package declarations are still just recipes. There is a recipe for making chocolate chips. Then there is a recipe for making chocolate chip cookies where one of the ingredients is chocolate chips. It's recursive but it's not fundamentally different. Saying you can copyright a recipe for chocolate chip cookies because it's just organizing the recipes for chocolate chips and butter and brown sugar is pretty ridiculous.

Re:Google’s Supreme Court faceoff with Oracle was a disaster... by jacobkania on Thursday October 08, 2020 @06:55PM (#24724825)
You’re misunderstanding your cookie analogy. You can’t copyright a single recipe that contains components of other recipes, but if you had written a book titled “My grandmas chocolate chip cookies from scratch”, where the first recipe is for homemade chocolate chips, the second is for how to grind your own flour for dough, and the third is for combining the previous two into a cookie, then yeah you can copyright that particular set of recipes. But someone else can use any one of your recipes independently without worrying about infringement.

Think of it like you put in the effort to curate a collection of recipes that work well together, and that curation is what’s copyrightable.

I don’t know what will happen with the law, and if APIs like this will be deemed a “curation”, but it makes a lot more sense to me from that perspective.

Ex.

Anyone can have a `Math.remainder` function, but the curation of an entire `Math` library might be copyrightable, since the effort was in collecting all of the correct things that work well together, even if they aren’t individually copyrightable.

A mega-recipe containing other recipes would be like making a `Math.AddAndThenMultiply`, which even if someone else had created the Add and Multiply methods, you aren’t stealing their API curation of methods, you’re just combining logic/algorithms (ingredients) from multiple methods (recipes) into a bigger method (mega-recipe).

Re:Google’s Supreme Court faceoff with Oracle was a disaster... by AnthonyMouse on Thursday October 08, 2020 @07:01PM (#24724871)
> You can’t copyright a single recipe that contains components of other recipes, but if you had written a book titled “My grandmas chocolate chip cookies from scratch”, where the first recipe is for homemade chocolate chips, the second is for how to grind your own flour for dough, and the third is for combining the previous two into a cookie, then yeah you can copyright that particular set of recipes.

Suppose I want to compile the big book of all known recipes. Then it will contain every recipe in your book, in its entirety, as well as every recipe in every other book. But if I can put the entire contents of your book in my book then what is it that you're really claiming to protect? The order the recipes appear in the book, i.e. the order the classes appear in the file? Which isn't generally regarded as part of the API.

Re:Google’s Supreme Court faceoff with Oracle was a disaster... by meling on Thursday October 08, 2020 @07:57PM (#24725291)
With the recipe analogy, I would say that the API would be the books table of contents. The recipes themselves are the implementation. So the question is, should the book’s toc be copyrightable? That is, is it lawful to write another book with the exact same toc, but with different recipes/implementations...
Re:Google’s Supreme Court faceoff with Oracle was a disaster... by AnthonyMouse on Thursday October 08, 2020 @08:37PM (#24725519)
A ToC doesn't actually work like an API.

A ToC cares what order it's in. You can't move Chapter 4 to before Chapter 2 or the implementation has to change. By contrast, the order of functions within a class, or classes within a package, isn't really part of the API -- they're most often in alphabetical order, which is totally mechanistic, and changing the order doesn't change the API.

A ToC is also not a rigid formal specification (like a recipe), but that's the core of what an API is.

Re:Google’s Supreme Court faceoff with Oracle was a disaster... by thaumasiotes on Friday October 09, 2020 @12:39AM (#24726883)
> A ToC doesn't actually work like an API.

> A ToC cares what order it's in. You can't move Chapter 4 to before Chapter 2 or the implementation has to change.

This isn't true.

  Table of Contents

  Foreword.................i
  Introduction............ii
  Preface................xvi
  Chapter 1................1
  Chapter 2...............17
  Chapter 3...............30
  Chapter 4...............51
  Chapter 5...............58
  Chapter 6...............76
Compare:

  Table of Contents

  Foreword.................i
  Introduction............ii
  Preface................xvi
  Chapter 4...............51
  Chapter 1................1
  Chapter 2...............17
  Chapter 3...............30
  Chapter 5...............58
  Chapter 6...............76
Note that real-world tables of contents behave in the second way. It's not at all uncommon to see chapters listed in order, followed by other materials (commonly illustrations) which are listed last in the table of contents while being physically interspersed among the chapters.
Re:Google’s Supreme Court faceoff with Oracle was a disaster... by meling on Friday October 09, 2020 @04:50AM (#24728039)
To clarify what I meant. I don’t think the order matters. What would matter is the chapter and section titles... they are the package names and method signatures.
Re:Google’s Supreme Court faceoff with Oracle was a disaster... by sharkmerry on Thursday October 08, 2020 @07:05PM (#24724907)
I think OPs idea was where is the smallest unit. A recipe for chocolate chip cookies is a curated collection of recipes for each ingredients, chocolate chip being one.
Re:Google’s Supreme Court faceoff with Oracle was a disaster... by mumblemumble on Thursday October 08, 2020 @06:58PM (#24724851)
You seem to have misread what was being said, because you seem to be arguing against something that was explicitly stated to not be the case:

> individual recipes are generally not copyrightable, but if you compile a set of recipes and publish them in a cookbook, the cookbook itself becomes copyrightable.

(emphasis mine)

The law understands that the whole is more than the sum of its parts. And Java adds up a lot of parts. It's also an interesting model case because it's inherently so very open, without (particularly pre-Jigsaw) a clearly demarcated dividing line between "API" and "implementation." Alito's not unreasonable to suggest that a Supreme Court ruling in Google's favor might raise difficult questions about how copyright law applies to software in general.

Re:Google’s Supreme Court faceoff with Oracle was a disaster... by dragonwriter on Thursday October 08, 2020 @07:15PM (#24724978)
> Alito's not unreasonable to suggest that a Supreme Court ruling in Google's favor might raise difficult questions about how copyright law applies to software in general.

That's true, and while I have a very clear way I would like the Court to handle that personally, it's probably a good reason for the Court to look for an excuse to punt hard on copyrightability if it is open to them (and the procedural issue on fair use seems to offer that opportunity) and let the Circuit Courts (and I don't mean the Federal Circuit dubiously interpreting some regional circuit’s law) develop this issue more before resolving it at the Supreme Court level.

Re:Google’s Supreme Court faceoff with Oracle was a disaster... by AnthonyMouse on Thursday October 08, 2020 @07:09PM (#24724931)
> The law understands that the whole is more than the sum of its parts.

My point is that "the whole" is the implementation of the Java standard library and the API is really still just the recipe.

> It's also an interesting model case because it's inherently so very open, without (particularly pre-Jigsaw) a clearly demarcated dividing line between "API" and "implementation."

The line is clear even if the language puts them both in the same file.

  public class Foo {
    public static void Hello(String[] args) {
        System.out.println("Hello World");
    }
  }
"public static void Hello(String[] args)" is part of the API. "System.out.println("Hello World");" is the implementation of that function.
Re:Google’s Supreme Court faceoff with Oracle was a disaster... by mumblemumble on Thursday October 08, 2020 @07:23PM (#24725031)
You're drawing lines in places that best serve your position, rather than considering the whole landscape.

"Whole" in the sense of "the whole is more than the sum of its parts" is not generally understood to imply the maximal possible scope in any given context. It's simply meant to meant to talk about how the identify an aggregation (of no particular scale) relates to the identities of its individual components.

Similarly, the API/not-API distinction is one that has to be made in contexts beyond just the relationship of function signatures to function implementations. Foo was declared as a public class, but was it meant for public consumption? Or is it intended for internal use, and was only declared public because, for practical reasons, it couldn't be declared package-private?

Moreover, there are certainly rational distinctions that could be drawn, but that does not mean that they are legally relevant. The issue at hand really doesn't have anything at all to do with how programmers understand things. The law is not what we think is right, the law is what is written in the books.

Re:Google’s Supreme Court faceoff with Oracle was a disaster... by AnthonyMouse on Thursday October 08, 2020 @07:35PM (#24725107)
> "Whole" in the sense of "the whole is more than the sum of its parts" is not generally understood to imply the maximal possible scope in any given context. It's simply meant to meant to talk about how the identify an aggregation (of no particular scale) relates to the identities of its individual components.

Which is how I'm using it. An API that consists of two functions and one that consists of a billion functions have completely different scales but each whole unit has an API portion and an implementation portion. And the API portion is the recipe. It's a purely factual description of what the implementation is expected to do.

> Similarly, the API/not-API distinction is one that has to be made in contexts beyond just the relationship of function signatures to function implementations. Foo was declared as a public class, but was it meant for public consumption? Or is it intended for internal use, and was only declared public because, for practical reasons, it couldn't be declared package-private?

That doesn't affect whether the API parts of it are API parts, only whether the API is regarded as internal or not, which shouldn't be relevant to copyright. Internal APIs shouldn't be copyrightable either.

> The issue at hand really doesn't have anything at all to do with how programmers understand things.

It better, or you're in real trouble, because then all you have are meaningless zeros and ones.

Re:Google’s Supreme Court faceoff with Oracle was a disaster... by imtringued on Friday October 09, 2020 @06:50AM (#24728632)
An API is an invisible thing. It's not in the code. It has absolutely nothing to do with code. You can create an API without any code at all. Therefore copyright does nothing because there are ways of copying an API that do not violate copyright.

Compare it to x86. It's just an "API" as well. Someone can write a specification or reference listing all opcodes and even though that reference is licensed under MIT or GPL you are still not allowed to make your own x86 processor because there is an IP tool specifically designed for this case. It's called patents. Just because you are not violating Intel's copyright doesn't mean you aren't violating Intel's patents.

Google probably didn't violate copyright and probably didn't violate any patents. So it is pretty much clear cut. Oracle failed to patent its API and therefore Google is allowed to use it.

Re:Google’s Supreme Court faceoff with Oracle was a disaster... by mumblemumble on Friday October 09, 2020 @09:33AM (#24729741)
> you are still not allowed to make your own x86 processor

AMD, Cyrix, Transmeta

I'm 99% certain that, if Intel had legal grounds to keep them out of the market, they would have done so. I'm 100% uncertain what's different between that case and this one.

Re:Google’s Supreme Court faceoff with Oracle was a disaster... by nobodyandproud on Thursday October 08, 2020 @07:10PM (#24724937)
>Alito's not unreasonable to suggest that a Supreme Court ruling in Google's favor might raise difficult questions about how copyright law applies to software in general.

Which in of itself is a long avoided question that sorely needs to be addressed.

Re:Google’s Supreme Court faceoff with Oracle was a disaster... by gwright on Thursday October 08, 2020 @10:39PM (#24726188)
And should be addressed by the legislature, not the judiciary.
Re:Google’s Supreme Court faceoff with Oracle was a disaster... by nobodyandproud on Friday October 09, 2020 @12:42AM (#24726894)
Yes, but the judiciary gets to decide whether a tortured application of a law is absurd.
Re:Google’s Supreme Court faceoff with Oracle was a disaster... by imtringued on Friday October 09, 2020 @07:59AM (#24729002)
>The law understands that the whole is more than the sum of its parts.

No it doesn't. If that was the case then you could just do piecewise reinvention and then later on recombine the result.

Grasp the difference. Copyright prevents 1:1 copies, not against reinvention, patents do that.

Re:Google’s Supreme Court faceoff with Oracle was a disaster... by mantap on Thursday October 08, 2020 @06:47PM (#24724762)
Isn't that exactly what the article is saying about the justices worrying it could "undermine copyright of computer programs"? What is the difference between an API (interface) and implementation? The algorithm. And algorithms are not copyrightable.

A lot can be interpreted into the law when it is beneficial for everybody to do so. But interpretation has its limits. Some laws must be made explicit by the legislature.

Re:Google’s Supreme Court faceoff with Oracle was a disaster... by AnthonyMouse on Thursday October 08, 2020 @06:51PM (#24724787)
> What is the difference between an API (interface) and implementation? The algorithm.

Not the algorithm. The algorithm is essentially the recipe. The algorithm is merge sort, or depth first search. It's the contract the API gives you, more or less. "This function does merge sort." But there are unlimited possible implementations of merge sort and each one is copyrightable. And one implementation doesn't infringe the copyright of the other ones, even when they're the same algorithm, but you have to write your own. Copyright doesn't protect function, it protects works of authorship.

Re:Google’s Supreme Court faceoff with Oracle was a disaster... by mantap on Thursday October 08, 2020 @09:04PM (#24725660)
I don't agree that the steps of an implementation are copyrightable. Different versions of an algorithm are different algorithms. One merge sort algorithm may perform much better than another despite both being merge sort and having the same asymptotic complexity. You could patent a particular version of merge sort.

Copyright protects how code is written not what it does. And the how applies just as much to interfaces as implementations.

Re:Google’s Supreme Court faceoff with Oracle was a disaster... by AnthonyMouse on Thursday October 08, 2020 @10:49PM (#24726240)
> Different versions of an algorithm are different algorithms.

Splitting hairs like that doesn't change anything because it's still not the algorithm which you get a copyright on. It's the work of authorship implementing it.

But you can certainly produce multiple implementations of source code that are not only functionally equivalent in practice but actually generate identical machine code.

> Copyright protects how code is written not what it does. And the how applies just as much to interfaces as implementations.

The issue is that the interface is strictly the what it does part. Given the implementation, or the need for compatibility with one, the API is purely a factual description of the call spec. You can't rewrite it or it changes the what, which means there is no room to change the how, and the code correspondingly required shouldn't be copyrightable because it's purely functional and leaves no room for alternative compatible implementations.

Re:Google’s Supreme Court faceoff with Oracle was a disaster... by imtringued on Friday October 09, 2020 @08:01AM (#24729014)
Copyright protects your code as it is. The work itself is protected. Nobody can copy it and hopefully Google didn't copy anything.

It doesn't protect against reinvention because it's easy to bypass copyright through clean room designs which is probably what Google did.

Re:Google’s Supreme Court faceoff with Oracle was a disaster... by FartyMcFarter on Thursday October 08, 2020 @08:35PM (#24725513)
> "This function does merge sort."

This is not the most common type of contract in APIs. More like "this function sorts", or perhaps "this function sorts in O(N*log N) time". Sorting can be done with many different algorithms.

Re:Google’s Supreme Court faceoff with Oracle was a disaster... by imtringued on Friday October 09, 2020 @07:56AM (#24728983)
You can copyright recipes but it's functionally useless if you want to protect against reinvention. Someone can make cookies based on your recipe and then make them again without looking at the recipe and then finally write their own recipe and still not violate copyright. You could repeat this for every single recipe in the book and then create an almost identical book with exactly the same recipes in the same order. There would be some minor differences because your memory is off and you have some creative freedom to design the book any way you want. However you wrote that book yourself and therefore it is yours.

Is there still a way to protect your cookies? Yes, it's called patent law. It's explicitly designed to prevent reinvention.

Re:Google’s Supreme Court faceoff with Oracle was a disaster... by nodamage on Thursday October 08, 2020 @09:01PM (#24725643)
Perhaps I should not have used the recipe analogy as it might be causing unnecessary confusion. But I don't think the situations are all that similar. If an individual recipe is non-copyrightable because it describes a "process, procedure, or method" then a mega-recipe created by combining other recipes together will still be non-copyrightable for the same reason. That's not quite the same thing as curating a set of recipes into a cookbook and thereby exercising creativity in the "selection, coordination, and arrangement" of those recipes.
Re:Google’s Supreme Court faceoff with Oracle was a disaster... by AnthonyMouse on Thursday October 08, 2020 @10:07PM (#24726019)
> Perhaps I should not have used the recipe analogy as it might be causing unnecessary confusion.

It's hard not to use it when it's the one from the case law.

> That's not quite the same thing as curating a set of recipes into a cookbook and thereby exercising creativity in the "selection, coordination, and arrangement" of those recipes.

Exercising creativity can't be the hook if recipes have that and aren't copyrightable. You exercise creativity in choosing whether to specify chocolate chips or peanut butter chips or licorice bits etc.

APIs have hierarchy, but recipes have that too. You make butter from milk. You make cookies from butter. You make cookie crumb topping from cookies.

It's all already there in a recipe without reaching the result you want. You choose chocolate chips over peanut butter chips. You combine them with cookie ingredients to make cookies and brownie ingredients to make brownies. Selection, coordination, and arrangement. But the end result is still just a list of facts about how to make those cookies/brownies.

So why look at those things sometimes but not others? Because sometimes it applies to a work of authorship, but sometimes it applies to function, and you can't copyright function. So the functional part shouldn't count.

And that's what an API is. It's a formal functional specification. It's a list of facts about how to call those function implementations. It's the exact piece you don't get credit for.

Anything required for interoperability, is functional.

Re:Google’s Supreme Court faceoff with Oracle was a disaster... by nodamage on Thursday October 08, 2020 @11:04PM (#24726332)
> Exercising creativity can't be the hook if recipes have that and aren't copyrightable.

Sure, creativity is a requirement but it isn't the only requirement. But think about why a cookbook of selected recipes is copyrightable even if the recipes individually aren't.

> And that's what an API is. It's a formal functional specification.

The problem for Google is the Java API is also code, which is generally copyrightable. You seem to be saying that since this particular code happens to form a specification it should be treated differently under copyright law, but I'm not sure the court would find that argument very convincing.

Re:Google’s Supreme Court faceoff with Oracle was a disaster... by redwall_hp on Friday October 09, 2020 @09:50AM (#24729877)
Microsoft should get in on this, then. Because the Java and C# Math classes are virtually identical, aside from method case.