Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

I'm looking for an open source license which grants me additional privileges.

Features:

  • Anyone can freely modify, fork, use the code, as long as they make their source changes publicly available. They can use it in other open source projects, but not in closed-source projects. (similar to, say, GPL v3, with strong emphasis on contributing back)
  • Only I and entities I specifically designate can use the code as part of a closed-source application. I am also exempt from the duty to publish the source code changes. (exemption from GPL duties).
  • In return for my work, I do want the freedom to benefit from other's contributions (by using the project in my closed-source work), even if they fork the code.

I'm not trying to forbid the commercial use, just to allow myself more flexibility to use the code, while still contributing to open source. I don't want to burn myself by being legally forbidden from using the libraries I wrote in my commercial projects.

Large companies use such dual licenses to maintain an open source project, while also selling the premium version.

Which licenses of this type are available? What caveats or obstacles exist?

Is there any read-made license for this situation? Consulting lawyers is not an acceptable option at this point in development.

share|improve this question

2 Answers 2

A license is never going to stop what you can do with your own code. It's your code, after all. The license is only about what you grant other people to do with your code.

Having said that, a license like GPLv3 + a proprietary license seems like what you want. For a proprietary license, I would consult with a lawyer and get one drawn up professional. Either that, or simply negotiate with third parties a different open source license. For example, you might choose to grant them an MIT-style license (depending on what they plan to do with your code anyway).

Update

If you still want to accept contributions from others, while still having all the rights to your own code, then you can maintain two separate forks of the project. One which is just your code, and a separate fork that contains contributions of others. You'll do your normal development in your own branch and every now and then, "flush" those changes into the "public" fork.

My personal opinion is that all of this ends up being rather complicated. Most of the open source code I write is licensed under an MIT-style license, because I find it's just easier.

share|improve this answer
    
The issue is not with my code, but with modifications others may contribute once I make the library open source. I want to avoid it becoming tainted and off-limits for my commercial use. –  dbkk Jan 14 '11 at 6:20
1  
@dbkk: You don't need to accept any changes. –  Loki Astari Jan 14 '11 at 6:42
1  
@dbkk - You don't own the contribution of others, and you cannot decide how they are licensed beyond what the authors wish. You can ask contributors to sign over copyright of any code they add to you, after which you can redistribute it how you want. There's a few projects that do this, for example, the mono project requires it so that they can re-license it to developers who might be too bound by the LGPL it is usually licensed under. –  Mark H Jan 14 '11 at 7:33
    
+1, the counsel of an attorney is always good advice. –  greyfade Jan 14 '11 at 7:44
    
@sparkle: having said that, you're under no obligation to accept contributions of others. I've updated my answer with a solution to the problem of how you accept submissions, but still be able to use your own code in your own (proprietary) projects. –  Dean Harding Jan 14 '11 at 8:17

I found an article helpful in giving me some insights in the different licensing possibilities, mind you it is from 2006 and I don't know if a lot has changed.

The article bases a choice on four decisions you need to make:

  • Decision 1: Do you want to relinquish any control over how your code is used and distributed?
  • Decision 2: Do you want to allow people to use your code in non open-source programs?
  • Decision 3: If somebody uses your code in their program and sells their program for money, do you want some of that money?
  • Decision 4: If somebody uses [and distributes -22jun/ebb] your code and improves it (fixes bugs or adds features) do you want to make them give you the improvements back so you can use them too?

You can find it here

share|improve this answer

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.