Which License Should I Use?

M

mojosam

I've been watching the flame war about licenses with some interest.
There are many motivations for those who participate in this sector, so
disagreements over licenses reflect those agendas.

I don't have an agenda, at least not right now. I do plan on writing a
few programs.

These will be tools I need for firmware testing. They will be
relatively simple things like tools for breaking down data by its
structure for easy viewing, sending commands/macros over serial ports,
etc. Similar things exist, but they don't do everything I need. These
will also be excellent learning opportunities for me, since I'm still
pretty shaky on Python.

How do I decide on a license? Are there any web sites that summarize
the pros and cons? I guess I don't care too much about how other
people use it. These things won't be comprehensive enough or have
broad enough appeal that somebody will slap a new coat of paint on them
and try to sell them. I guess I don't care if somebody incorporates
them into something bigger. If somebody were to add features to them,
it would be nice to get the code and keep the derivative work as open
source, but I don't think that matters all that much to me. If
somebody can add value and find a way of making money at it, I don't
think I'd be too upset.

I will be doing the bulk of the coding on my own time, because I need
to be able to take these tools with me when I change employers.
However, I'm sure that in the course of using these tools, I will need
to spend time on the job debugging or tweaking them. I do not want my
current employer to have any claim on my code in any way. Usually if
you program on company time, that makes what you do a "work for hire".
I can't contaminate my code like that. Does that mean the GPL is the
strongest defense in this situation?

I'm open to suggestions as to which licenses to consider. However,
please try to keep the conversation to the decision process or what
sounds like it is best for this purpose. Let's keep the broader issue
of which license will bring about the fall of Western Civilization on
the other thread.

Ron Britton

(The gibberish on the next line really is my email address.)
nk67v8o02
at
sneakemail.com
 
M

Mike Meyer

mojosam said:
I will be doing the bulk of the coding on my own time, because I need
to be able to take these tools with me when I change employers.
However, I'm sure that in the course of using these tools, I will need
to spend time on the job debugging or tweaking them. I do not want my
current employer to have any claim on my code in any way. Usually if
you program on company time, that makes what you do a "work for hire".
I can't contaminate my code like that. Does that mean the GPL is the
strongest defense in this situation?

IANAL, but I don't believe the GPL helps in this situation. It places
conditions on redistributing the code; it doesn't force you to
redistribute modifieed code. Your employers could refuse to let you
take the code with you because they own partial copyright on it. They
couldn't sell it later because of the GPL on it, but that's not your
issue here.

I tend to try to get clients to agree that code that comes in from
outside can go back out under whatever license it came in on. That
makes it clear up front that the results go back to the community,
which means you can get at them.

If you deal with this issue, the license that best meets your
description are the BSD-like license, which have been called
"copycenter" licenses. They place no restrictions whatsoever on the
the further use.

<mike
 
R

Robert Kern

mojosam said:
I will be doing the bulk of the coding on my own time, because I need
to be able to take these tools with me when I change employers.
However, I'm sure that in the course of using these tools, I will need
to spend time on the job debugging or tweaking them. I do not want my
current employer to have any claim on my code in any way. Usually if
you program on company time, that makes what you do a "work for hire".
I can't contaminate my code like that. Does that mean the GPL is the
strongest defense in this situation?

Not at all. The code that you write on your employer's time probably
belongs to the employer (you'll need to read your contract and the
relevant state law or talk to a competent lawyer in your area for full
details). Just because you added that code to a GPLed project doesn't
mean that the added code would be released under the GPL. If your
employer had an interest in keeping you from using it after you left
them, they simply wouldn't release the code at all. They wouldn't be
able to turn it into a proprietary project using your GPLed code, but
they could prevent you from taking the added code with you.

Also, the employer may still own the copyright on software that you
write on your own time if it substantially relates to your job (as it
seems it does). Again, you will have to read your contract and the
relevant state law or possibly talk to a lawyer to find out. I am not
such a lawyer, and, of course, none of this is legal advice.

That said, assuming that you can release the code under an open source
license and given your lack of an agenda, the BSD license seems
appropriate. You may also want to read this Licensing HOWTO:

http://www.catb.org/~esr/faqs/Licensing-HOWTO.html

It's a draft, but it contains useful information. Also, Larry Rosen's
book _Open Source Licensing_ is quite helpful (and free!).

http://rosenlaw.com/oslbook.htm

--
Robert Kern
(e-mail address removed)

"In the fields of hell where the grass grows high
Are the graves of dreams allowed to die."
-- Richard Harter
 
G

Guest

Mike Meyer said:
IANAL, but I don't believe the GPL helps in this situation. It places
conditions on redistributing the code; it doesn't force you to
redistribute modifieed code. Your employers could refuse to let you
take the code with you because they own partial copyright on it. They
couldn't sell it later because of the GPL on it, but that's not your
issue here.

If they have the rights to the code, they can sell it, under the GPL or
any license of their choosing. In addition, if you GPL it, your employer
will be able to sell it, just like anyone else.
 
P

Paul Watson

mojosam said:
I've been watching the flame war about licenses with some interest.
There are many motivations for those who participate in this sector, so
disagreements over licenses reflect those agendas.

I don't have an agenda, at least not right now. I do plan on writing a
few programs.

These will be tools I need for firmware testing. They will be
relatively simple things like tools for breaking down data by its
structure for easy viewing, sending commands/macros over serial ports,
etc. Similar things exist, but they don't do everything I need. These
will also be excellent learning opportunities for me, since I'm still
pretty shaky on Python.

How do I decide on a license? Are there any web sites that summarize
the pros and cons? I guess I don't care too much about how other
people use it. These things won't be comprehensive enough or have
broad enough appeal that somebody will slap a new coat of paint on them
and try to sell them. I guess I don't care if somebody incorporates
them into something bigger. If somebody were to add features to them,
it would be nice to get the code and keep the derivative work as open
source, but I don't think that matters all that much to me. If
somebody can add value and find a way of making money at it, I don't
think I'd be too upset.

I will be doing the bulk of the coding on my own time, because I need
to be able to take these tools with me when I change employers.
However, I'm sure that in the course of using these tools, I will need
to spend time on the job debugging or tweaking them. I do not want my
current employer to have any claim on my code in any way. Usually if
you program on company time, that makes what you do a "work for hire".
I can't contaminate my code like that. Does that mean the GPL is the
strongest defense in this situation?

I'm open to suggestions as to which licenses to consider. However,
please try to keep the conversation to the decision process or what
sounds like it is best for this purpose. Let's keep the broader issue
of which license will bring about the fall of Western Civilization on
the other thread.

Ron Britton

(The gibberish on the next line really is my email address.)
nk67v8o02
at
sneakemail.com

As mentioned earlier, your employer may lay some claim to the result if
it substantially relates to your work.

Using your employer's equipment to develop or test the code might also
be an indication that it is a work for hire. Either that, or you
misused the company's assets for personal gain. Neither sounds very
attractive.
 
M

Mike Meyer

If they have the rights to the code, they can sell it, under the GPL or
any license of their choosing. In addition, if you GPL it, your employer
will be able to sell it, just like anyone else.

You're right - the GPL doesn't prevent them from selling it; it just
requires that they make source available to anyone they sell it to,
and prevents them from preventing people who buy it from giving it
away to anyone they want.

<mike
 
?

=?ISO-8859-1?Q?=22Martin_v=2E_L=F6wis=22?=

mojosam said:
How do I decide on a license?

If you want to look at this from a legal point of view,
I highly recommend reading Larry Rosen's book, Open Source
Licensing. It covers issue you would never have thought
of without studying law, and gives good advice (IMHO).

Regards,
Martin
 
T

Tom Anderson

How do I decide on a license?

You decide on what obligations you wish to impose on licensees, then pick
a license which embodies those. There are basically three levels of
obligation:

1. None.

2. Derivatives of the code must be open source.

3. Derivatives of the code and any other code which uses it must be open
source.

By 'derivatives', i mean modified versions. By 'open source', i really
mean 'under the same license as the original code'.

So, the licenses corresponding to these obligations are:

1. A BSD-style license. I say 'BSD-style' because there are about a
hojillion licenses which say more or less the same thing - and it's quite
amazing just how many words can be split spelling out the absence of
obligations - but the grand-daddy of them all is the BSD license:

http://www.opensource.org/licenses/bsd-license.php

2. The GNU Lesser General Public License:

http://www.gnu.org/copyleft/lesser.html

3. The GNU General Public License:

http://www.gnu.org/copyleft/gpl.html

The GPL licenses place quite severe restrictions on the freedom of
programmers using the code, but you often hear GNU people banging on about
freedom - 'free software', 'free as in speech', etc. What you have to
realise is that they're not talking about the freedom of the programmers,
but about the freedom of the software. The logic, i think, is that the
freedom of the code is the key to the freedom of the end-users: applying
the GPL to your code means that other programmers will be forced to apply
to to their code, which means that users of that code will get the
benefits of open source.

Having said all that, you can only license software if you own the
copyright on it, and as has been pointed out, in this case, you might not.
Are there any web sites that summarize the pros and cons?

The GNU project has a quite useful list of licenses, with their takes on
them:

http://www.gnu.org/licenses/license-list.html

Bear in mind that the GNU project is strongly in favour of the GPL, so
they're perhaps not as positive about non-GPL licenses as would be fair.

This dude's written about this a bit:

http://zooko.com/license_quick_ref.html
I guess I don't care too much about how other people use it. These
things won't be comprehensive enough or have broad enough appeal that
somebody will slap a new coat of paint on them and try to sell them. I
guess I don't care if somebody incorporates them into something bigger.
If somebody were to add features to them, it would be nice to get the
code and keep the derivative work as open source, but I don't think that
matters all that much to me. If somebody can add value and find a way
of making money at it, I don't think I'd be too upset.

To me, it sounds like you want a BSD-style license. But then i'm a BSD
afficionado myself, so perhaps i would say that!

In fact, while were on the subject, let me plug my own license page:

http://urchin.earth.li/~twic/The_Amazing_Disappearing_BSD_License.html

I apply 0-clause BSD to all the code i release these days.
I will be doing the bulk of the coding on my own time, because I need to
be able to take these tools with me when I change employers. However,
I'm sure that in the course of using these tools, I will need to spend
time on the job debugging or tweaking them. I do not want my current
employer to have any claim on my code in any way. Usually if you
program on company time, that makes what you do a "work for hire". I
can't contaminate my code like that. Does that mean the GPL is the
strongest defense in this situation?

The license you choose has absolutely no bearing on this. Either the
copyright belongs to you, in which case you're fine, or to your employer,
in which case you don't have the right to license it, so its moot.
Let's keep the broader issue of which license will bring about the fall
of Western Civilization

You mean the GPL?
on the other thread.

Oops!

tom
 
S

Steve Holden

mojosam said:
I've been watching the flame war about licenses with some interest.
There are many motivations for those who participate in this sector, so
disagreements over licenses reflect those agendas.

I don't have an agenda, at least not right now. I do plan on writing a
few programs.

These will be tools I need for firmware testing. They will be
relatively simple things like tools for breaking down data by its
structure for easy viewing, sending commands/macros over serial ports,
etc. Similar things exist, but they don't do everything I need. These
will also be excellent learning opportunities for me, since I'm still
pretty shaky on Python.

How do I decide on a license? Are there any web sites that summarize
the pros and cons? I guess I don't care too much about how other
people use it. These things won't be comprehensive enough or have
broad enough appeal that somebody will slap a new coat of paint on them
and try to sell them. I guess I don't care if somebody incorporates
them into something bigger. If somebody were to add features to them,
it would be nice to get the code and keep the derivative work as open
source, but I don't think that matters all that much to me. If
somebody can add value and find a way of making money at it, I don't
think I'd be too upset.

I will be doing the bulk of the coding on my own time, because I need
to be able to take these tools with me when I change employers.
However, I'm sure that in the course of using these tools, I will need
to spend time on the job debugging or tweaking them. I do not want my
current employer to have any claim on my code in any way. Usually if
you program on company time, that makes what you do a "work for hire".
I can't contaminate my code like that. Does that mean the GPL is the
strongest defense in this situation?

I'm open to suggestions as to which licenses to consider. However,
please try to keep the conversation to the decision process or what
sounds like it is best for this purpose. Let's keep the broader issue
of which license will bring about the fall of Western Civilization on
the other thread.

Openness is your best protection here, as licensing the software can
only impose conditions on those who accept it under the license. It
cannot affect your employer's rights to work you performed while an
employee. Those rights are determined by applicable law.

The only way to ensure that you can take your own unencumbered copy of
code you wrote as an employee is to explain the position fully to your
employer and get their agreement, in writing and in advance, that they
are prepared to have you do so.

Simply assuming that because you have developed the code "in your own
time" you have sole rights to it, or even a right to redistribute, is
likely to lead to trouble and I would recommend against that course of
action.

Apart from that, as others have suggested it looks like a BSD-style
license would suit you best.

regards
Steve
 
S

Steven D'Aprano

I guess I don't care too much about how other people use it.

Then probably the best licence to use is just to follow the lead of
Python. For that sort of small program of limited value, I put something
like this in the code:

Copyright (c) 2005 Steven D'Aprano.
Released under the same license as used by Python 2.3.2 itself.
See http://www.python.org/psf/license.html for details, and
http://www.python.org/2.3.2/license.html for the full text of the license.

I use that as a no-brainer licence: it is weaker than but compatible with
the GPL, and requires less documentation.

I will be doing the bulk of the coding on my own time, because I need to
be able to take these tools with me when I change employers. However,
I'm sure that in the course of using these tools, I will need to spend
time on the job debugging or tweaking them. I do not want my current
employer to have any claim on my code in any way. Usually if you
program on company time, that makes what you do a "work for hire". I
can't contaminate my code like that. Does that mean the GPL is the
strongest defense in this situation?

Not at all.

I am not a lawyer and this is not legal advice, but I suggest that your
*only* defence will be to get your employer to sign a legal agreement
acknowledging that you own the code. If you like, offer them a perpetual
royalty-free non-exclusive licence to use the code, and explain how using
your own code will make you more productive in their time.

If they refuse, then you must absolutely keep a cast-iron barrier between
what you develop in your own time and what you develop in theirs. To be
safe, I wouldn't even *use* that code in their time: if your productivity
suffers, that's their choice.

As an alternative, consider that who owns the copyright doesn't matter. If
your employer insists on keeping the copyright, get permission from them
to distribute the code under an open source licence. Then you can take it
with you when you leave, and still use it.

Unless you explicitly sign them away (and even that is legally dubious)
you still retain the "moral rights" to the code, even if copyright is
owned by your employer: you can still say "I wrote this".

Please note that merely putting the code under a GPL or other OSS licence
is NOT sufficient -- they must agree to let you DISTRIBUTE the code.
Merely being under the GPL does not make it compulsory to distribute the
code, and if you distribute software copyrighted by your employer without
their permission, the fact that is GPLed is not going to save you.

Getting permission to put it up on the corporate website might be
sufficient, but if it were me, I'd insist on an agreement allowing me to
take the code with me when I leave. (This is only necessary if your
employer owns the copyright.)

It need not be a complicated agreement: I recently signed a copyright
transfer agreement for some employees who left the company to start their
own company. The agreement was less than two pages long.
 
M

Mike Meyer

Steve Holden said:
Simply assuming that because you have developed the code "in your own
time" you have sole rights to it, or even a right to redistribute, is
likely to lead to trouble and I would recommend against that course of
action.

The employment agreement may state specifically that the company owns
such properties. There have been companies that explicitly claim all
software/inventions/etc that you produce while in their employee, even
if they had nothing to do with said IP. Some jurisdictions make this
illegal - but that doesn't stop the company from trying to convince
you they can do that.

But this cuts both ways - if you get them to agree in writing as part
of the employment agreement that the code isn't there, which Steve
suggested, then laws about "work for hire" are pretty much
irrelevant.

<mike
 
J

Jorgen Grahn

On 25 Nov 2005 11:30:46 -0800 said:
How do I decide on a license? Are there any web sites that summarize
the pros and cons?

I like this list:

http://www.gnu.org/licenses/license-list.html

It's from a GPL perspective of course, but pretty balanced I think.

Personally, I use the GPL or the Modified BSD license, depending on the
phase of the moon. And I do take software with me to work, but never in the
reverse direction.

/Jorgen
 
J

Jorgen Grahn

freedom - 'free software', 'free as in speech', etc. What you have to
realise is that they're not talking about the freedom of the programmers,
but about the freedom of the software. The logic, i think, is that the
freedom of the code is the key to the freedom of the end-users: applying
the GPL to your code means that other programmers will be forced to apply
to to their code, which means that users of that code will get the
benefits of open source.

.... which implies that one believes that every end-user has the potential to
become a hacker. That, I think, is at the core of the GPL, and RMS's
rantings are easier to understand if you keep that in mind.

But yes, let's not dive too deeply into all that here.
;-)

/Jorgen
 
M

mojosam

Thanks to everyone so far. You've helped a lot. (BTW, I read this
through Google Groups. Somehow they've gotten about 24 hours behind,
so I'm seeing your replies a day late.)

The biggest misconception I had was that the license could force the
code to stay open source. You're right. What I do on company time
belongs to the company. I guess I assumed there was a license that
forced them to release it.

At one place I worked, they had to delay the release of the product by
a few weeks, because they discovered that they had included an open
source (don't know which license) module. They had to pull it out and
recode it themselves (I know the other thread covered the subtleties of
whether even that was kosher, but let's ignore that here). I think the
problem there was they believed that if they included the module, they
would have had to release the source code to the entire project. I was
kind of hoping for something like that.

I would have to talk to a lawyer to be sure, but right now, I think I
can argue that anything I do on my own time belongs to me. I'm
technically a consultant right now (even though I'm spending 40
hours/week with the one "client"). I can take on other clients, as
long as they don't directly compete. This means they're hiring my
expertise. If I bring my own tools, that's part of my expertise. I do
recall there was a clause in the contract that anything I did on their
time belonged to them. For my next client, I should definitely include
a clause about rereleasing open source changes.

Anyway, staying away from the lawyer issues, if anyone has additional
thoughts to add to this, please keep the conversation going. People
are raising some good points.

Ron Britton
nk67v8o02
at
sneakemail.com
 
R

Robert Kern

mojosam said:
I would have to talk to a lawyer to be sure, but right now, I think I
can argue that anything I do on my own time belongs to me. I'm
technically a consultant right now (even though I'm spending 40
hours/week with the one "client"). I can take on other clients, as
long as they don't directly compete. This means they're hiring my
expertise. If I bring my own tools, that's part of my expertise. I do
recall there was a clause in the contract that anything I did on their
time belonged to them. For my next client, I should definitely include
a clause about rereleasing open source changes.

You're in something of a gray area, but one that has seen a lot of
litigation. Although you are "technically" a consultant, you are
probably considered an employee with regards to the "work made for hire"
doctrine. You should probably have a chat with a lawyer soon (I am not
one! TINLA!).

As Steve Holden said, being open with your client and putting an
agreement in your contract is probably the best way to ensure that your
work will belong to you or, failing that, continue to be available to
you under an open source license.

--
Robert Kern
(e-mail address removed)

"In the fields of hell where the grass grows high
Are the graves of dreams allowed to die."
-- Richard Harter
 
B

Ben Finney

Jorgen Grahn said:
... which implies that one believes that every end-user has the
potential to become a hacker.

To become, or *independently engage another person as* a hacker
without necessary further contact with the copyright holder.

The same freedom you get with, e.g., any complicated machine. You can
open it up yourself, or you can persuade a third party to do so,
without the necessity to get the maker involved.

It's not necessary for every single user of such machines to become
hackers of those machines; they still all get the benefit of the
freedom for anyone they choose to hack on it.
 
M

mojosam

First thing first, you need to find out if you are an
"employee", not in the normal sense, but legal sense.

You're right. I know there has been a lot of case law to come down the
pike over the years, due to all sorts of issues. One of my friends is
a cab driver. His contract says that he is an independent contractor.
Yet his state (Oregon) has three criteria that have to be met. One of
these is he has to set his own hours. He doesn't; the cab company
tells him when he works. This fails the independent contractor test,
so the cab company is legally exposed if any of the cabbies wants to
press any employment-law issues.

So there are too many variables and unknowns, and it varies by
jurisdiction.

I started this thread under the mistaken hope that there was some sort
of license that would force the code to stay open source. Although
that isn't realistic, it doesn't change the fact that I should choose a
license that best fits my needs.

I will consult a lawyer about these issues. Also, if my
client/employer won't let me keep my code, I'll just have to keep my
code away from them. Maybe I can find a commercial tool and tell them
that they will have to buy that.

Ron Britton
nk67v8o02 at
sneakemail.com
 
B

bonono

Yup, these independent contractor test doctrines bite both way and in
your case, it is not in your advantage, usually.

I would suggest that whatever tools you want to make to enhance the
work(even it is inspired by your current task), don't use it on this
employer/client, at least not on their premise(including property say a
notebook provided by them) and must not let anyone know that you use it
to help you do the work about them.
 
A

Andrew Koenig

I will be doing the bulk of the coding on my own time, because I need
to be able to take these tools with me when I change employers.
However, I'm sure that in the course of using these tools, I will need
to spend time on the job debugging or tweaking them. I do not want my
current employer to have any claim on my code in any way. Usually if
you program on company time, that makes what you do a "work for hire".
I can't contaminate my code like that. Does that mean the GPL is the
strongest defense in this situation?

It probably means that the only reliable defense is to get a written release
from your employer. If you want to be more confident about the situation,
consult a lawyer.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
474,210
Messages
2,571,091
Members
47,692
Latest member
RolandRose

Latest Threads

Top