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 am trying to choose the right license for a project that I would like to release as open-source later this year but I am unsure as to what the most appropriate license would be. I was originally thinking of the GPLv2 license, but I don't think that it is what I am after.

I have been working on this project for over a year now (on and off) for my company. I figured that it would be great to give something back to the community and would like to release the project as open-source, but I want to retain full custody of the project. My company will be providing both free, commercial and community contributed content (perhaps with GitHub).

Here is basically what I am after:

  • Original source can be distributed and re-distributed (verbatim) both commercially and non-commercially as long as the original copyright information, website link and license is maintained.

  • License of original source cannot be changed.

  • Original source can be modified and distributed (commercially & non-commercially) for a specific application, but cannot be re-distributed without written consent from the original author (me). For example, a developer could change the source for their client, but they cannot redistribute that change. The developer may, however, choose to submit their modifications for integration into the original source.

  • Themes and extensions must be covered by an open-source license. It must be possible for any developer to modify, distribute and re-distribute all themes and extensions (commercially & non-commercially) should they choose to do so.

I am aware that it is unlikely that there is a license that will cover all of these points, but something along those lines would be fantastic. I have put a lot of hard work into this project and whilst I am happy to share it, I do not want to loose it to a big company who has loads of money to splash at it.

share|improve this question

migrated from stackoverflow.com Jun 6 '11 at 23:44

This question came from our site for professional and enthusiast programmers.

    
You need to hire a lawyer who can write such a liscense for you. Also, ou should make sure your company allows you to release this code you wrote on their time as you please. People have been screwed by this before. –  Chris Lutz Jun 6 '11 at 22:43
    
@Chris might need to have a custom license written if there isn't anything along those lines. Thanks for the heads up, but I own the company :-) –  Lea Hayes Jun 6 '11 at 22:45
    
@Lea - Well that solves that problem. Glad you're giving back to the open-source community. –  Chris Lutz Jun 6 '11 at 22:48
4  
A license with all those terms is not considered to be open-source. Merely making the code available to look at does not alone constitute to open-source. What you're asking for is a proprietary license which allows distribution of code for personal use. –  Mark H Jun 6 '11 at 23:00
    
@Mark I am after a license that allows people to download and use the code for whatever purpose they need (verbatim). They could change the original source to meet the specific needs of their clients, but they cannot distribute the modified version without written consent. They might choose to contribute their changes into the original source (push I believe). I want to encourage people to contribute to the project or write extensions that are bound by compatible open source licenses. I want to avoid people forking the project and leaving the original to die. –  Lea Hayes Jun 6 '11 at 23:53
show 1 more comment

5 Answers 5

up vote 3 down vote accepted

I would say the GPL (or AGPL) is probably the best license to cover most of those points. There's no existing license that covers all 4 entirely, and it's questionable whether you can actually enforce all those points, since they don't quite add up. For example, you want people to push modifications to you, but you still want the right to determine who can redistribute the work. This can only happen if you require that all committers hand over copyright of their modifications to you. This might dissuade some potential committers.

On you're third point, you are worried about other's redistributing, but you want people to submit their changes back. With the GPL, these are effectively the same thing - because distribution of modifications can be taken back into the main branch by you anyway. It is required that anyone distributing a modification does so in source form.

As for requiring that all extensions be redistributable, this conflicts with the idea of being used commercially (assuming you mean in proprietary software. It does not restrict commercial use though, provided the source is still distributed).

share|improve this answer
    
@Mark I would definitely want to attribute contributions with their rightful copyright. And the contributor is welcome to use their derived works, but they cannot publicly fork because I see that as highly damaging. I can see how this requirement makes the whole thing a lot more complicated. I don't see why someone should be able to take my project and steal my audience, but I welcome sharing and development. –  Lea Hayes Jun 7 '11 at 0:59
1  
If you look at existing GPL based projects - they very rarely get forked. This is because nobody gains anything by forking it - they can't suddenly close the code, or accept contributions under a different license. A fork is effectively a different development branch, and you can take any of that code back into the main branch. –  Mark H Jun 7 '11 at 1:03
    
Typically, the only time projects get forked is when there are issues with the management that prevent modifications being added into the main branch. If you want a real world example, take OpenOffice.org - now a dead community because it has been forked into LibreOffice. –  Mark H Jun 7 '11 at 1:04
    
@Mark I think that you have pretty much summed it all up. I will seriously consider using GPL. I have sent the OSI an e-mail requesting whether my terms would constitute as "Free Software". If it does then I will have a custom open-source license written and submit it for review by the OSI. If not then I will have to use GPL or consider a proprietary license which is as open as possible. Thanks a lot for the discussion, it has been great! –  Lea Hayes Jun 7 '11 at 11:17
    
@Lea: "but they cannot publicly fork because I see that as highly damaging" << I think you need to re-evaluate your position. Forking is considered a feature in Open Source and Free Software. –  Jeff Welling Jun 7 '11 at 14:54
show 5 more comments

Hey, This weekend I was having exactly the same constrains that you want. After doing some research, I chose the MIT license for my open source project as well. I use the Open-source-license (OSL) flow chart to weed out the ones that I didn't wants. The only thing that might be a concern is that MIT license is less restrictive than GPL, but it allows people to sublicense. On the other hand, you want people let you know about a change for redistribution, so I think EPL is what you are looking for.

Good luck!

Open-source-license (OSL) flow char

share|improve this answer
    
+1 for the flowchart. BTW, I hope to see Mozilla License and LGPL in the tree –  OnesimusUnbound Jun 7 '11 at 3:28
    
thanks for the useful chart, I can see why you recommend EPL. –  Lea Hayes Jun 7 '11 at 22:10
add comment

Not sure if this matters for you but I think a licence that would do all those things, and more specifically:

but cannot be re-distributed without written consent from the original author (me)

might not meet the Open Source Definition. Check out the section about 'derived works'.

share|improve this answer
    
@Gary I can see where you are coming from. All I am trying to do is secure my investment in the project. I want to encourage development. This is a tricky one. –  Lea Hayes Jun 7 '11 at 0:06
2  
I would recommend you have a read of Eric S. Raymond's book: The Cathedral and the Bazaar, it contrasts traditional software production with open source and might be helpful with your decision. It's one of the reasons we have Firefox today :) –  Gary Buyn Jun 7 '11 at 5:16
add comment

See the CKEditor licensing model:

http://ckeditor.com/license

They use three ones: MPL, GPL and LGPL, and it seems that it satisfies everything.

If you want to retain the control of the project, Creative Commons seems to be the only way:

http://en.wikipedia.org/wiki/Creative_Commons_licenses

Use Share-Alike, Attribution - CC-BY-SA.

share|improve this answer
    
@Tomasz I need to make sure that it is impossible for somebody to download my project re-brand it and pass it off as their own. Basically stop them from stealing the show. GPL / LGPL would allow anybody to steal the show (unless there is another way of protecting that) I haven't come across MPL before so I will look into that. –  Lea Hayes Jun 6 '11 at 22:43
    
Updated my answer. –  Tomasz Kowalczyk Jun 6 '11 at 22:45
    
@Tomasz Thanks, I wasn't aware that share-alike attribution could be used for non-media (photos/text) –  Lea Hayes Jun 6 '11 at 22:48
    
You're welcome. Upvote / acceptance will be appreciated as well. :) –  Tomasz Kowalczyk Jun 6 '11 at 22:49
    
@Tomasz Just read on Wikipedia: 'Creative Commons does not recommend the use of Creative Commons licenses for software.' –  Lea Hayes Jun 6 '11 at 22:50
show 4 more comments

For fork-prevention, the QPL might meet your needs, but it has been retired for some time now, its restrictions made it very unpopular (and GPL-incompatible). I don't think any license could both meet all your requirements and be considered a proper open source license.


The GPL is IMHO your best bet, although it is both more and less restrictive than you require. But please add open source exceptions, a vanilla GPL is not appropriate for an open source project.

Where the GPL is too restrictive, you could add exceptions to grant additional permissions. See the GPL linking exception or the mentioned open source exceptions for how this is done. I believe you would need exceptions to allow commercial use (use and distributions with closed source code that is not covered under the GPL) under some conditions, but specifically not for themes/extensions, which you should clearly define.

I don't see a way to prevent redistribution of modified source under the GPL. The GPL reqires that the modified code to be covered by the GPL, of course.

share|improve this answer
    
The GPL doesn't allow adding exceptions for proprietary like you're suggesting. At best it could be dual licensed under GPL and a proprietary license. –  Mark H Jun 7 '11 at 0:34
    
The GPL linking exception has been used for many years and does exactly that. Why do you believe it's not allowed? –  Waquo Jun 7 '11 at 0:37
    
A linking exception effectively creates a new license, with most of the GPL conditions active. Those licenses don't fit the criteria OP is asking for (namely, being able to take and redistribute code without "giving back"). –  Mark H Jun 7 '11 at 0:43
add comment

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.