Hacker News new | ask | show | jobs
by stock_toaster 5153 days ago
I am curious that if apis are solidly found to not be copyrightable, would this have any impact on gpl3's 'anti tivo' exclusions and/or gpl vs lgpl linking exceptions?

It would seem to me that providing an api compatible 'shim' layer would then not fall under copyright if apis are not copyrightable. Although linking is clearly, in my mind, the creation of a derived work.

My understanding of the many facets of copyright law is not very extensive though, so enlightenment is definitely welcome.

2 comments

This has been discussed on and off over the years. Even if APIs are not copyrightable, it has been argued that using an API whose only implementation is GPL creates a derivative work. Clean-room shim header files sound like an admission of bad faith but they may be legally defensible.

     would this have any impact on gpl3's 'anti tivo' 
     exclusions 
When taking a GPL v3 implementation and distribute it, there is no license that grants you that right, other then the GPL v3 itself.

You are basically mixing here 2 different things: the implementation and the interface. GPL v3 affects the former, while APIs not being copyright-able affects the later.

     It would seem to me that providing an api compatible
     'shim' layer ...
As long as your software is distributed along with the GPL v3 module, then the copyright of the GPL v3 module applies and the only way to distribute that module is to respect the GPL v3 clauses, because again, no other license or law gives you the right to distribute that GPL v3 module, other than the GPL v3 license itself.

What you can do is to allow the user to install the GPL v3 module by himself. This works as long as the GPL v3 module is replaceable. For instance, say that your software uses an SQL Database and that the preferred RDBMS recommended to users is a GPL v3 licensed database. You could even provide scripts that automatically install/configure that database. This wouldn't mean that your software has to be GPL v3 compatible, because the database itself is replaceable and it is also not distributed directly with your software.

Another example would be for instance the usage of GNU Readline ... your software could use whatever Readline implementation it finds on the user's system through dynamic linking, and as long as it works with other implementations, then there is no hard dependency and you've got no problems.

However in the case of Tivoization, then direct distribution of the GPL v3 package is involved. And you simply cannot do that, no matter what API layer you've got between that package and your software.

     Although linking is clearly, in my mind, the creation of a derived work.
Not necessarily. Linking, either static or dynamic, is an artifact of the way we build software, being basically just a protocol through which different software components can communicate.

The context is very important here. Let's say that MongoDB would be GPL v3 licensed (with no exceptions), there wouldn't be any other implementations and your software couldn't function without it. Because Mongo's APIs are unique (not a standard, no third-party implementations), would this mean that your software is derived from MongoDB? Yes it would, simply because without MongoDB it couldn't function.

On the other hand, if your software relied on MySQL, would your software have to be GPL v2 compliant? No it wouldn't, because you could just replace it ... however, in the case of MySQL the actual client library that gets linked to your software is also GPL v2 and has its own unique API that's relevant to MySQL only, so in such a case you have to find a way to dynamically link to that client, such that your software can continue to function even if the MySQL client library isn't installed.

But even so, this is about "usage", not "distribution". The distinction is important here, because if you want to distribute MySQL alongside your software as a single package, then your software must be GPL v2 compliant, no doubt about it.

Btw, I'm not a lawyer, this is just my understanding of how the GPL works.

'' Because Mongo's APIs are unique (not a standard, no third-party implementations), would this mean that your software is derived from MongoDB? Yes it would, simply because without MongoDB it couldn't function. ''

According to the recent EU ruling your program is derived from MongoDB's API. But to prevent 'monopolization of ideas', MongoDB APIs are not under copyright so your software is not a derived work. In addition the ruling voids license clauses with conditions on how you run the software past normal use, so clauses like 'except you can't clone the API' or 'can only link with approved software' or 'have to publish the signing key' are unenforceable.

Since it's not a derived work and GPL linking restrictions are not enforceable, you simply accept the GPL and distribute the .so and source for that code along with your closed-source program and use it. You still have to publish your changes to the GPL code itself, like LGPL, but that's all.

This is the flip side of the API-copyrightability coin.