tags:

views:

165

answers:

4

I work for a company that does a lot of contract work for some large companies. We have a customer that would like us to modify GPL licensed code. The way I understand the GPL is that you can modify the code but as soon as you deliver it to an end-user then you have to open source it. If you use the code internally and never deliver it to an end-user it does not need to be open sourced.

My question is, if a company pays another company to modify GPL code and the first company only uses it internal to the company. Does the code have to be open sourced because the contractor delivered it to an end-user? Once the code is delivered does everybody have the right to ask for it?

+3  A: 

For GPL licensed code, anyone who is given access to a binary must be given access to the source code-- this applies to modified programs, if you give someone a modified GPL program's binary, you must also give them the source.

So, it needs to be released under GPL, but the GPL does not say how you must distribute the binaries, only that source must be distributed to anyone that the binaries are distributed to.

Edit: If the company is okay with it, you should go ahead and distribute the binaries and source

Jeffrey Aylesworth
+11  A: 

In GPLV3, the following language appears to exempt contractors under reasonable conditions:

You may convey covered works to others for the sole purpose of having them make modifications exclusively for you, or provide you with facilities for running those works, provided that you comply with the terms of this License in conveying all material for which you do not control copyright. Those thus making or running the covered works for you must do so exclusively on your behalf, under your direction and control, on terms that prohibit them from making any copies of your copyrighted material outside their relationship with you

Even without the above language, you can meet the terms of this or older GPL versions by providing (or offering to provide) source code to those people who receive the binaries. You need to extend the terms of the GPL to them, but if "them" is you and your customer, nothing has changed, the SW was already GPLed and they were already a party to the agreement. You are under no obligation to provide your work to the general public and nothing seems to change as a result of your relationship to the customer except for rights granted to you that you need not exploit if you don't want to.

To answer your exact question: the code does not "become open sourced" except in the sense that once they deliver it (under V1 or V2) to you, then you specifically have the right to publish it as you like. If they trust you not to do that (and why not, it doesn't benefit you to rock the boat) then no "open source" event happens other than in a legalistic sense. That is, the party that receives the code gets full source rights, but no one is ever required to offer it to the general public.

From the day your customer got the SW they were already required to (offer to) provide source to those who received binaries. If they never distribute binaries their modifications can be proprietary, and even if they do distribute the obligation can be satisified between them and the receipients. Obviously, with enough distribution someone eventually really will publish it.

So, technically, there are rights granted by the GPL (with the above GPLv3 exception) on transfers between your two companies, but they are abstract and do not involve the general public unless you want them to.

DigitalRoss
Great answer, this is exactly what I was looking for.
ssteidl
+1  A: 

The way I understand the GPL is that you can modify the code but as soon as you deliver it to an end-user then you have to open source it.

No. The GPL merely requires that those you distribute the program to have access to the source as well. You're under no obligation to provide it to anyone else in the world - but those you distribute it to are permitted to provide it to the whole world should they so choose.

ceejayoz
+1  A: 

What everyone else said about distribution being the important factor -- but on top of that, your contracts really should state clearly that anything produced specifically for your company is "work made for hire," so that copyright rests with you and not the contractors.

IANAL, but with a proper contract there should be no legal difference between code produced by a contractor and code produced by an employee. (At least for the "bespoke" business logic parts -- many savvy contractors will include clauses allowing them to keep ownership of reusable components or libraries they produce that have general utility.)

SFEley