views:

511

answers:

13

I've been developing GPL'd software for years, but now I need a more restrictive license.

This is for a commercial application, and I want to share my source code with the whole world, regardless of whether they've purchased the application from me or not. I also want to allow people to produce derivative works, but I want to prohibit binary distribution of both my original work, and that of any derivative work.

Basically, if someone has already purchased the original work, he/she can compile and use the original source code, or any derivative work. Otherwise, they can only study my source code, or that of a derivative work.

Does anyone know a license that fits my needs, or do I need to write my own?

Thanks,

UPDATE:

First of all, thanks everyone for the answers.

Let me clear up a few things:

  1. This application has not yet been released. So I'm not adopting a new license like XFree86, I'm trying to pick a license for a new application.

  2. I usually use the term "free software" instead of open source, so that's why I used the term open source here. The source will be "open" indeed, just not the way the OSI defines it.

  3. I'm all for GPL, and almost all software I've written before was released under the GNU GPL v2. But this one has to be an exception.

  4. I don't really care if people violate the license. I wouldn't dream of suing anyone for that, unless they're selling my software.

Now I'm not suggesting I've written a very special piece of software, but I just don't want people making money by stealing my code. But I also want the tech-savvy users to be able to modify the software anyway they see fit.

Oh, and finally, the application is written in a compiled language (Objective-C, to be precise *cough*iPhone*cough*).

+2  A: 

That wouldn't be an open source license. However, you can certainly have a proprietary license that says exactly what you intend. Many outfits that sell components do exactly what you're talking about, with the exception that they don't usually provide source until you've paid.

There's nothing stopping you from doing so, but I think that the reality of the situation is that once your source is available, someone will compile it (probably many people). How easy it'll be to prevent redistribution of binaries...???

Michael Burr
It's no question that it is possible to compile it - but for legal reasons you have to prohibit this by a license.
Anheledir
Definitely not open-source if you can read it but not use it openly. You will need a custom license.
Scott Alan Miller
A: 

IANAL, but I would suggest writing your own license for this type of thing. I have never encountered a license specific to compilation such as you mention. Take a look at a few licenses as a starting point that you can use as a template. If you're really serious about having something that would stand up in court, you will need some legal advice before publishing.

AdamC
+1  A: 

I don't think this would qualify as an "open-source" license under the Open Source Definition.

In general though, you should be able to show your source to people without them being automatically allowed to compile it. Just as long as you make it plain that you still reserve all rights, the compiled version would probably be considered a "derivative work".

If it's a great program, people will probably steal it. There's little you can do about that except sue them later (if you catch it). In general, showing your source off without releasing it as open source doesn't sound like a good idea.

Neall
+12  A: 

that's not OS, it sounds like shared source. Specifically, it's a lot like Ms-RSL.

From WikiPedia:

Microsoft Reference Source License (Ms-RSL)

This is the most restrictive of the Microsoft Shared Source licenses. The source code is made available to view for reference purposes only.[14] Developers may not distribute or modify the code for commercial or non-commercial purposes.

Javier
A: 

A opensource-license (per definition) wouldn't fit your requirements.

But you may have a look at the Microsoft Reference Source License - it allows to view the sourcecode but prohibit the distribution: http://www.microsoft.com/resources/sharedsource/referencesourcelicensing.mspx

Anheledir
A: 

It's hackish, but I've seen it done: distribute your code as a series of screenshots.

It's 'published', but not compilable.

But to get to the heart of your question, distributing source without allowing folks to compile it is distinctly NOT FLOSS-y.

warren
I would feel challenged by such a publication - perfect application for a OCR software. ;)But I believe it's the wrong way to make it "impossible" to compile but to make your attitude clear with a adequate license (as requested).
Anheledir
+1  A: 

Others have already told you that what you are describing is not "open source" as it is usually understood. There's nothing that prohibits distributing the source with a commercial license.

In fact (and as another example), atlassian, makers of jira, confluence and other gems, provide their source code once you've bought a license of their commercial products. You are allowed to change, patch and use this, but not to redistribute.

(I'm not associated with atlassian other than being a user of some of their products)

Olaf
+10  A: 

By the way, it will be wholly impossible to stop people from maintaining the last GPL version you released. If there are enough people who want to use your software, you should go into this venture with the expectation that a community will build behind the GPL version, its new maintainers will match you feature-for-feature, and you will be considered a pariah in those circles.

I don't mean this as a threat, but as the pattern I've seen develop around these actions in the past. XFree86 adopted a more restrictive license, a lot of contributors forked it into X.org, and XFree86 is now little more than a shadow of its old self. cdrecord begat cdrtools. SSH begat OpenSSH. Basically, the track record for free software switching to a restrictive license is littered with dead commercial projects. Are you sure this is what you want?

Alternatives: allow users to buy requested features and release them under the GPL. Provide installation and configuration service. Sell support contracts. Sell training. Any of these are much more likely to succeed than what you're proposing.

Just Some Guy
Very good analysis!
David Segonds
I think that's not the point.He is starting a new application and wants a restrictive license because it's a commercial project.So basically, there is no source to be forked because there is no existing code that has a different license
Tigraine
A: 

Please note, that a runnable version of Your source code might be seen as derivative work.

Differences between source code and executable version even vanish, if You write Your application in a language like Perl, Ruby, Python, etc.

Nevertheless, the license You are looking for is not an open source license and it appears to me that You want to share algorithms and implementation hints instead of the full source code of a product. In that case, just do so and publish algorithms along with an example source code.

This way, nobody can recompile Your product without Your permission (meaning: a copy of the complete source) and interested developers still can use Your algorithms and build upon it.

Black
+1  A: 

You can't ship code with a license and then tell people that you will not enforce the license. That'asking them to take an unacceptable legal risk. What's to prevent you from changing your mind? You should be up-front with the terms under which you are licensing the code.

The problem is that once you let source code out the door, it's very difficult to keep track of where it lands. No matter how you license it unscrupulous people may not do with it what you prefer.

One approach is to provide most, but not all of the code under a suitable OSI-compliant license (see opensource.org for a list of current OSI approved licenses). Some low-level library or kernel you deliver in object code form and sell it or whatever. Without the compiled kernel the code won't run. Users can still view the interesting parts of the code, they can modify it if they want. They could even redistribute it, but it would not work without the compiled, low-level kernel. The risk is someone could reverse engineer your kernel, but with a little cleverness you can make that hard. You can also deliver the kernel with a EULA that prohibits reverse engineering. Thus, you can take legal action against someone who does this. I think this provides you what you are looking for -- the ability to share code, but disallow others from turning it into a product for sale.

FYI: IANAL, these are just my personal thoughts on the matter.

mxg
A: 

You could implement some propriety build process, hence even if they have the source, it cannot be compiled without the propriety 'builder'.

leppie
A: 

Now I'm not suggesting I've written a very special piece of software, but I just don't want people making money by stealing my code. But I also want the tech-savvy users to be able to modify the software anyway they see fit.

So you want to allow changes, but you don't want to allow commercial usage?

Perhaps you are looking for something like a Creative Commons NonCommercial, and maybe NoDerivs license?

Zoredache
To be clear, the CC-NC (restricting the freedom to sell the work) and CC-ND (restricting the freedom to derive new works from the existing one) are clauses that result in a work that is firmly *not* free.
bignose
A: 

In a subsequent edit, you wrote:

I don't really care if people violate the license. I wouldn't dream of suing anyone for that, unless they're selling my software.

If you don't care whether people violate the restrictions in the license, surely that means your new restriction is irrelevant; the unmodified GNU GPL should be just as good for your purposes as it was earlier.

bignose