Linked by Thom Holwerda on Wed 2nd May 2012 22:32 UTC, submitted by PLan
Legal "The European Court of Justice ruled on Wednesday that application programming interfaces and other functional characteristics of computer software are not eligible for copyright protection. Users have the right to examine computer software in order to clone its functionality - and vendors cannot override these user rights with a license agreement, the court said." Bravo. A landmark ruling, for sure. If the US courts decide in favour of Oracle in the Google-Oracle case, Europe would instantly become an even friendlier place for technology companies.
Thread beginning with comment 516982
To view parent comment, click here.
To read all comments associated with this story, please click here.
Slambert666
Member since:
2008-10-30

Read what Galvanash wrote, you carrot!


Galvanash is misrepresenting the case, he basically says that the GPL never covered dynamic linking, and that is a radically different interpretation than for example the FSF has.

i.e. the problem in a nutshell:
1. if you cannot copyright the API, can you then copyright the files that express that API? and only that API? (ie. the header files).

2. If you cannot copyright either, then can I include only the header files from a GPL covered library in my non GPL (say BSD or proprietary licensed) project?

Reply Parent Score: 2

dylansmrjones Member since:
2005-10-02

You are misrepresenting the posts of Galvanash. Galvanash hasn't stated that GPL never covered dynamic linking. At the very least link to a post where it is the case.

1) There is no actual code in a header file (.h) itself - it simply defines the API but does not actually express it (that would be a .c-file or .m-file for Objective C). So no, header files are not copyrightable. Neither in european countries, nor in USA (at least the courts have said so, so far). But the code which implements the API (.c, .m, .cmm, .pas, .bas). This leads to the answer for question #2.

2) No, not according to copyright law, nor the GPL licenses. Only including the header files makes no sense, and you would know that if you were a programmer. An include statement does not mean that you are putting the source file or the header file among your source files. It is a compiler statement, which means that the compiler during compilation of your source will link against the said file, creating a digital work which includes the copyrightable code implementing the methods described by the header file. So, the answer is a strong and resounding NO! - at least not without violating copyright.

There is one 'but'. When using interpreted languages you as a developer do not control what the binary representation of your digital work will link against since there is no binary until the source is a run by the end user. You can certainly distribute source code which is non-GPL'ed but links to GPL'ed source code. You just cannot distribute the resulting binary product. With interpreted languages (or some plug-in based applications) there is no such binary product to distribute and the GPL may fail to activate. There is nothing new in that.

Reply Parent Score: 3

Slambert666 Member since:
2008-10-30

Do you even know what dynamic linking is?

There is no code from the library included in the final binary that is not in the header files (in almost all cases).

So are you saying that it is possible to dynamically link against GPL code?

Anyways GPL header files are normally full of copyright and license information, are you saying that GPL projects should remove this superfluous information since they are misrepresenting copyright and now breaking EU law by including it?

The obvious conclusion is of course that if an API is not copyrightable then it must be legally ok for a non GPL project to dynamically link against a GPL project, and on a side note, it must be legally ok to make linux kernel modules that are not GPL and distribute these (as non GPL code).

Reply Parent Score: 2

cfgr Member since:
2009-07-18

2) No, not according to copyright law, nor the GPL licenses. Only including the header files makes no sense, and you would know that if you were a programmer.

Yes it makes sense. That's what all these -devel RPMs are for. They are not source RPMs, they just contain the header files so that you can include them.

When linking dynamically, you do not include any actual source code (unless it's in those headers), so you do not need to have the actual source code installed. All you do is building a lookup table with unresolved symbols that's used by the linker at startup time to find and load fitting external libraries. It's easy to intercept that process and make the linker load different libraries with the same API. A typical example is valgrind, which hijacks standard calls such as malloc and free to detect memory leaks, but you never include any valgrind headers nor code at any time.

There is one 'but'. When using interpreted languages you as a developer do not control what the binary representation of your digital work will link against since there is no binary until the source is a run by the end user.

Nor do you when you use dynamic linking. It's only when you build a static binary that you pull in all the code to have a standalone executable.

Edited 2012-05-04 17:03 UTC

Reply Parent Score: 1

MollyC Member since:
2006-07-04

In C++, one can write the entire code for a library in .h files by implementing class methods directly in the class definition. .h files can also have stand alone inline functions, templates, and macros, all of which implement functionality rather than merely declare an interface to the functionality. Indeed, there are so-called "template libraries" where the "library" is just a bunch of .h files that implement templates, and there's no compiled binary at all. All of these things are actual implementation code, rather than just being function prototypes, and are indeed copyrightable. So it's wrong to declare that .h files are not copyrightable.

Beyond that, open any Win32 .h file, and you'll see "Microsoft copyright 2012" statement at the top (or something like that). Open a GPL .h file and you'll see the GPL boilerplate copyright info at the top. Even if the file only contains function prototypes. .h files have always been copyrightable.

Reply Parent Score: 2