In reply to markk5.

You're misunderstanding. Code is of course copyrightable. What's at question here is whether or not a description of that code and possibly the layout or organization of it is also copyrightable.

The court's example uses Java's max() function. It basically looks like max(a, b) where a and b are two numbers. The function returns what the maximum number is. It lives in a place named /java/lang/Math.class and is named java.lang.Math.max().

Now, is that little description I just wrote copyrightable to the extent that, if you go and implement your own version of it using entirely your own code, but still conforming to what I just stated, then I can sue you for doing so and act to prevent you from doing it?

The specific implementation is of course protectable by copyright law. No question about it. But if I create some code and then somebody else creates another piece of code designed to *look* like my piece of code and work with other code that was originally designed to be working with my code instead, should I be able to prevent them from doing it?

For open source projects in general, this matters quite a lot. A significant number of open source projects are written to behave and function like other, closed source, code. The Windows Sharing service is known as SMB (for Simple Message Block). An open source version of this is known as Samba, and it implements the ability for Linux machines to share files with Windows machines, to implement Printer sharing, things like that. Microsoft didn't create Samba. Microsoft didn't tell other people how to create Samba. People reverse engineered how Windows did it, then implemented their own code to behave the same way, and thus talk those same protocols. This sort of reverse engineering is commonplace in the open source world.

You don't usually get to choose what APIs you use to communicate. You have to interact and be compatible with other people's code too. Which often means writing code to behave a lot like their own code does, using the same names, and the same types of functions, even though you write the code entirely yourself.