LinuxQuestions.org

LinuxQuestions.org (/questions/)
-   Linux - General (http://www.linuxquestions.org/questions/linux-general-1/)
-   -   Is it possible to create a sandbox for a "half GPL" linux kernel module? (http://www.linuxquestions.org/questions/linux-general-1/is-it-possible-to-create-a-sandbox-for-a-half-gpl-linux-kernel-module-831408/)

dahweeds 09-10-2010 11:07 AM

Is it possible to create a sandbox for a "half GPL" linux kernel module?
 
There is a kernel module that connects a SCSI like hard disk to Linux computers, as well as windows and MAC. Some portions of the source code have a GPL license on them, but some remain property of the hardware inventor. The inventor does not agree to GPL the entire code, even just the Linux code. Consequently, the connection package falls behind, the existing users feel left out and the new opportunities fall by the wayside.

The confusing thing for me is that the company gives away the end product, (the compiled module and it's editable source code) but they won't let non-employees edit the official source to keep it up to date. Ultimately they only make money on the SCSI-like connection hardware. Several users have modified the existing package to keep it up with some distributions, but there are others that should be explored and new architectures to employ it.

My question is two parts part 1 is the real issue, part 2 is just for my curiosity.

1) Could I set up a sandbox that hides the non-gpl source code pages, but allows willing developers to join and modify the gpl sections and then compile the modules on different architectures?


2) I have trouble understanding the difference between working on this kind of kernel package for free and releasing the code. In other words, since the company gives away the end product, just as GPL developers do, why not just agree to the same requirements you would have if hired at the company, but do the development for free in the spare time anyway?



Thanks for any help with 1 and any insight about 2.

neonsignal 09-10-2010 10:45 PM

I think what you are saying is that the module contains two parts, both written by the same company, one part licensed under GPL and one part under a proprietary license.

First I should point out that none of this code can be derived from GPL code written by anyone else, since GPL code cannot be used in a released proprietary module.

Also, even if the entire module is written from scratch by the company, it isn't clear to me that it is helpful to release part of it under GPL. While this enables user modification and recompilation (assuming the proprietary license allows this), a distro modified module cannot be legally redistributed. This is because the GPL license and proprietary license are not compatible; the GPL license forbids redistribution under a non-free license, and the proprietary license forbids free licensing.

The way some manufacturers handle this is to completely separate the two parts; to have the proprietary section as a binary blob that is loaded at run time (ie, not linked with the GPL module). Some of the wireless cards are done this way.

Quote:

Originally Posted by dahweeds (Post 4093607)
1) Could I set up a sandbox that hides the non-gpl source code pages, but allows willing developers to join and modify the gpl sections and then compile the modules on different architectures?

Yes, you could apply a DRM style encryption to the non-GPL source and the compilation process, but I don't see the point. There aren't that many architectures; it would be better if the company just distributed binary blobs for the proprietary part. If the third-party developer can't view the source or change the compilation process, then it is almost guaranteed to fail on a new architecture! And as I pointed out above, if the proprietary section has to be linked to the GPL section, then the module is useless to developers as they cannot distribute it.

Quote:

Originally Posted by dahweeds (Post 4093607)
2) I have trouble understanding the difference between working on this kind of kernel package for free and releasing the code. In other words, since the company gives away the end product, just as GPL developers do, why not just agree to the same requirements you would have if hired at the company, but do the development for free in the spare time anyway?

There are a number of reasons, not necessarily good ones! Companies like to hide device driver code because it may expose details of their software or hardware that they wish to keep as trade secrets. And companies like to prevent changes to their source code, because they fear that failures caused by the third-party changes will reflect on them (whether in terms of reputation or support requirements).

dahweeds 09-11-2010 10:49 AM

Thanks, it is getting clearer
 
Thanks for the insights. It is getting clearer for me. You surely hit the nail on the head too. (At least it means my question was clear.)

There is a blob part of this module, and it is the part that needs updating. This is why I wondered about inviting users to work on it "for free" in part 2 of my question.

As for part 1 (DRM) I guess I was hoping for something a little simpler, where I could set the "blob" code in some folder that the compiler could use, but the users could not see. At least they could run the compilation after modifying the GPL parts then send any errors to the manager who could implement suggestions on the blob sources to make it work. Overall, I guess this is just impractical though and would be frustrating to users willing to help out.

Thanks for looking here, if there are any brilliant ideas to get the ball rolling on such bi-partisan development, please reply. Honestly the project is almost two years without active development to the blob part, so I worry it may go the way of the Commodore 64.

neonsignal 09-11-2010 08:22 PM

Quote:

Originally Posted by dahweeds (Post 4094442)
At least they could run the compilation after modifying the GPL parts then send any errors to the manager who could implement suggestions on the blob sources to make it work.

That sounds like what a paid employee might be asked to do! The usual arrangement would be to have the employee or contractor sign a Non-Disclosure Agreement (NDA). However, these cause problems in the free software context, because they work against the advantages of libre software.

You have to think about what motivates developers to work on a project. If you are willing to pay enough, many (but not all) developers will put up with restrictive contract arrangements. But if you want unpaid development, people are motivated in other ways (such as wanting to benefit others in their community).


All times are GMT -5. The time now is 07:59 PM.