5

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.

Lea Hayes
  • 1,033
  • 1
  • 10
  • 17
  • 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. –  Jun 06 '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 :-) –  Jun 06 '11 at 22:45
  • @Lea - Well that solves that problem. Glad you're giving back to the open-source community. –  Jun 06 '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 06 '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 06 '11 at 23:53
  • Another option to consider is to Dual-license your code. Use an appropriate open-source license for public distribution and then have another license for commercial distribution. The last part of my answer http://programmers.stackexchange.com/questions/76528/preparing-to-release-code-as-open-source/76532#76532 mentions this and points at some other resources which might be useful. – Mark Booth Jun 07 '11 at 10:03

5 Answers5

12

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

Armando
  • 1,746
  • 1
  • 10
  • 19
6

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'.

Gyan aka Gary Buyn
  • 2,775
  • 19
  • 17
  • @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 07 '11 at 00:06
  • 2
    I would recommend you have a read of Eric S. Raymond's book: [The Cathedral and the Bazaar](http://www.catb.org/~esr/writings/cathedral-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 :) – Gyan aka Gary Buyn Jun 07 '11 at 05:16
  • -1 for this answer, since it doesn't answer the question the OP asked, even after the OP clarified. – Kartick Vaddadi Jul 11 '16 at 03:36
3

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).

Mark H
  • 2,470
  • 1
  • 19
  • 12
  • @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 07 '11 at 00:59
  • 2
    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 07 '11 at 01: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 07 '11 at 01: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 07 '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 07 '11 at 14:54
  • @Lea: From what you've said, I think you may not be clear in the differences between Free Software and Open Source software, they are not one and the same and the OSI does not decide which software is 'Free Software', they administer Open Source licenses. You may be interested in contacting the Free Software Foundation instead -- they have an IRC channel you can ask in, FYI. – Jeff Welling Jun 07 '11 at 14:57
  • @Jeff I think that I am definitely missing something. So there are "free licenses" and "open source licenses"? Thanks I will try the IRC channel. – Lea Hayes Jun 07 '11 at 18:31
  • @Mark @Jeff is it possible to release a project under GPL but put heavy restrictions on the branding of the project. It is possible to fork, but not possible to fork with the same branding? I just need a way to secure my release of the project so that people consider my company the official project home. Is there a particular strategy that I could adopt along with GPL to secure my investment? BTW, the OSI confirmed that the above is not compatible with open-source. – Lea Hayes Jun 07 '11 at 22:09
  • @Lea - yeah, the GPL section 7 allows you to add additional clauses for branding, to force that anyone who forks the project does so under an alternative brand. – Mark H Jun 07 '11 at 23:51
  • @Mark I think that a combination of GPL section 7 + open-source wiki + large proprietary online learning resource that is non-copyable (except for personal offline use and use by schools/unis) would suffice. Thanks again Mark, you have been really helpful, I appreciate it. – Lea Hayes Jun 08 '11 at 00:48
1

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.

  • @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. –  Jun 06 '11 at 22:43
  • Updated my answer. –  Jun 06 '11 at 22:45
  • @Tomasz Thanks, I wasn't aware that share-alike attribution could be used for non-media (photos/text) –  Jun 06 '11 at 22:48
  • You're welcome. Upvote / acceptance will be appreciated as well. :) –  Jun 06 '11 at 22:49
  • @Tomasz Just read on Wikipedia: 'Creative Commons does not recommend the use of Creative Commons licenses for software.' –  Jun 06 '11 at 22:50
  • This does not mean that it is not used. As someone reminded here - if you need to be 100% sure, ask a lawyer. From my [programmer's] experience you'll be fine with CC. Other copyleft licenses require you to "free the code for everyone", which is not suitable for you. –  Jun 06 '11 at 22:53
  • Creative Commons shouldn't be used for software, because it doesn't define what work it is covering. (It makes no reference to code/object files or anything). It also does not cover licensing of any patents that may be used in the software. – Mark H Jun 06 '11 at 22:58
  • This is very good point - I'm not a lawyer, so I've answered this with my knowledge. As I said - if you want to be 100% certain, ask lawyer, not programmer. –  Jun 06 '11 at 23:10
  • MPL and LGPL seem way to permissive for Lea's needs. – Waquo Jun 07 '11 at 00:21
1

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.

Waquo
  • 2,541
  • 21
  • 11
  • 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 07 '11 at 00: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 07 '11 at 00: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 07 '11 at 00:43
  • @MarkH When you say the GPL doesn't allow adding exceptions, what prevents me from creating a new license by copy-pasting the GPL and then adding exceptions? – Kartick Vaddadi Jul 11 '16 at 03:36