Individual use-restriction license?
April 10, 2010 11:42 AM   Subscribe

Making-money-on-freely-distributable-software-filter: Software licenses that (like typical FOSS licenses) forbid restrictions on modification and redistribution of the software BUT (unlike typical FOSS licenses) permit individual contracts that restrict the particular recipient's use of the software?

If I write a program based on existing GPL'd code, I can ask people if they would give me money in exchange for me releasing the program. This works fine if they are willing to pay without getting to use it first, but if I understand correctly, I cannot give them a copy for a free trial and still expect them to have any obligation to pay me if they wish to keep using it.

This problem would be solved by the permission to sign a deal with the initial recipients of the code obliging them to either pay a sum of money after X days or refrain from using the software; this agreement should neither restrict their license to distribute the software to third parties nor in any way restrict the third parties' right to use the software.

I don't see this having any downsides compared to the common FOSS scenario in terms of the FOSS idea of software getting propagated and contributed to (since modification and redistribution cannot be restricted and the default status on usage is also unrestricted), but I haven't found any licenses that enable this, nor have I been able to find any discussion on such an idea.
posted by Anything to Computers & Internet (22 answers total) 2 users marked this as a favorite
 
If I write a program based on existing GPL'd code, I can ask people if they would give me money in exchange for me releasing the program. This works fine if they are willing to pay without getting to use it first, but if I understand correctly, I cannot give them a copy for a free trial and still expect them to have any obligation to pay me if they wish to keep using it.

Actually, you're misunderstanding this.

The GPL doesn't deal with money at all. What it says is that if you are licensed to use the software, you're also licensed to receive the source code. Furthermore, that if you've received a licensed copy of the software, and the source code, that you can pass it along.

What does this mean? You can charge a million bucks for a license, and refuse to give anybody a copy if they don't pay you a million bucks. You just can't do anything if one of those people gives a copy to his buddy. However, if somebody hacked your server and "stole" a copy, they would be illegally using it; you didn't license it to them.

So, you can turn your GPL'd program into nagware. But you have to give them the source code at the same time. Then they can easily disable the nag feature.

But here's another option: dual licensing. Offer for download a version of the software that is licensed under your restrictive 30-day-or-pay license. Then, when they pay, relicense the software to them under the GPL. But keep in mind that the GPL'd version can easily wind up in some apt repository somewhere, and you'll never see a sale again.

[In general, try to find some way to make money on value-add, not on software itself.]
posted by Netzapper at 11:54 AM on April 10, 2010 [1 favorite]


Netzapper: "Offer for download a version of the software that is licensed under your restrictive 30-day-or-pay license. Then, when they pay, relicense the software to them under the GPL."

You cannot do this, though, if you are using someone else's code under the GPL license as part of your program, which is the premise here. If the code is copyrighted by someone else and licensed for your usage under the GPL you must redistribute in a way that is compatible with the GPL's license, or get a different license from the copyright holder.
posted by idiopath at 12:19 PM on April 10, 2010


Response by poster: Netzapper: I know all that; the money issue is, however, implicit in how the GPL works in the case of derived works: I cannot distribute the code at all without granting GPL to the recipients, thus the only conditions (monetary or otherwise) I can place on their use of the software are the conditions I place on releasing the software.

I myself have never paid for any value-add services on free software, while the software itself is very valuable to me. I'm sure that it's a good money source in many areas, but I think there are many others where it's difficult to apply.
posted by Anything at 12:27 PM on April 10, 2010


It sounds a bit like what you want is something more like an Apache License or a BSD license.
posted by koeselitz at 12:40 PM on April 10, 2010


Obviously, BSD-licensed software allows what you seem to want to do; else Apple couldn't have based their entire proprietary operating system on BSD.
posted by koeselitz at 12:45 PM on April 10, 2010


Response by poster: koeselitz: I'd prefer not to use those since I wish the modification and redistribution rights not be removed.
posted by Anything at 12:47 PM on April 10, 2010


Dual licensing isn't going to be an option under the scenario presented above... because the OP will be writing a program based on existing GPL'ed code. Because of the nature of the GPL, his program (a derived work), will also be GPL'ed. If he were starting from scratch, he could choose another license, or dual-license the code (and of course, he could start with BSD or MIT licensed code, which explicitly would allow him to redistribute modified versions without providing source or granting further redistribution rights)

But, because his code will be based on someone else's (already licensed) work, he can't unilaterally change the license. (on preview, what idiopath said).

You are allowed charge a fee to distribute GPL'ed software (RedHat does this when it sells Enterprise Linux). However, anyone you distribute it to also has the right to receive your full source code, and also has the right to redistribute that GPL'ed code themselves, with or without modifications, and with or without a fee (Centos.org does this, when it takes RedHat's source code, builds a compatible Linux distro, and redistributes it for free)

In short, yes, you can ask your users to pay you at the end of a free trial period, and you might even have some buyers of your software. Any fees you collect from users will be due to good will alone.

That's because even your free-trial users will be allowed to modify, reassemble and publicly redistribute your code (they're guaranteed this under the GPL)... and at least one of your users will do this, quickly. Heck, I'd probably do it on general principal.

I've always liked Vim's ":help iccf" and ":help register" screens (where the author asks users to please donate to help Ugandan children, or to register the software to financially support further development).
posted by toxic at 12:49 PM on April 10, 2010


Response by poster: Also, my own preferences are not the only issue concerning BSD-style licenses for this purpose. In a scenario where I would like to modify someone else's GPL-licensed code and release it under such a trial-period agreement, even if I didn't care about my client's redistribution rights, I would in any case need to ask the original copyright holders if they would agree to relicense their code. I imagine that some would not agree to a BSD-style license but might agree to the kind of license I'm envisioning here.
posted by Anything at 1:14 PM on April 10, 2010


Best answer: Anything: “koeselitz: I'd prefer not to use those since I wish the modification and redistribution rights not be removed.”

Well, I wasn't recommending you use those licenses. I was recommending you use software with those licenses.

Sorry, but the question was a bit unclear, although I think I understand now. You're looking for a license to release your own software under that allows you to do your own monetization scheme you've described? And you want to incorporate GPL-licensed code into the program you're writing?

For the first issue, I'd say you should probably just take those licenses as a model and write your own. For the second issue, as you note, you'll probably have to get the original license-holder to relicense the code for you.
posted by koeselitz at 1:48 PM on April 10, 2010


I don't see how a license that does what you want could be FOSS in any sense. Let's say I use the software for a trial period and decide it's not worth the price. Now what? Am I free to modify and redistribute it? If so, I'd better be prohibited from redistributing it to anyone who hasn't made a similar agreement with you. That's not FOSS; that's a pretty normal commercial software situation, albeit one with a source-code license (forty or fifty years ago it was not uncommon to do that).
posted by hattifattener at 2:20 PM on April 10, 2010


Response by poster: Sorry, but the question was a bit unclear, although I think I understand now. You're looking for a license to release your own software under that allows you to do your own monetization scheme you've described? And you want to incorporate GPL-licensed code into the program you're writing?

Yes, both. Also, in the ideal case -- if such a license would be as useful as I think it might be -- other people would also adopt it for their own code. However, I can imagine coming across objections along the lines that it violates the spirit of FOSS, although I would disagree on the grounds that everyone who hasn't explicitly agreed to pay will get all the rights that they would under the GPL.

Another obstacle might that a client could quite reasonably ask why they would bind themselves to an agreement for a limited trial period on something that everyone else will end up getting for free. The answer of course would be that the software will not be released at all unless the developer gets such agreements for a large enough total sum of money.
posted by Anything at 2:45 PM on April 10, 2010


Response by poster: Clarification:

everyone who hasn't explicitly agreed to pay agreed to a limited trial period
posted by Anything at 2:50 PM on April 10, 2010


Response by poster: hattifattener: Let's say I use the software for a trial period and decide it's not worth the price. Now what? Am I free to modify and redistribute it? If so, I'd better be prohibited from redistributing it to anyone who hasn't made a similar agreement with you.

No, redistribution would be free. The point would be to make agreements for a large enough sum of money before release, with a limited number of clients.

Anyway, given the lack of affirmative answers, I suspect the answer to the original question is that no, there indeed are currently no such licenses. I'd be happy to continue but I fear we're already on ChatFilter territory.
posted by Anything at 3:02 PM on April 10, 2010


We're not in chatfilter territory, I don't think.

What you want is to create your own license. I know Richard Stallman can sometimes seem like some kind of god, but it is possible. Look at how short those BSD licenses are - they're about ten lines long, and it's not difficult or tedious prose at all.

Seriously, I think you should roll your own here. And I think you could have some success at doing it.
posted by koeselitz at 4:44 PM on April 10, 2010


Copyright law prevents people distributing, or modifying and distributing your work. The GPL is a specific licence that grants you rights to a copy of the source code, and gives you the right to make further copies and modifications when you receive a copy of GPL-covered code; with the conditition than any further copies, complete or derived, are also covered by the GPL.

Obviously if you're basing you code on someone else's that's covered by the GPL, then your code must also be covered by the GPL - that's the condition you got the code under, and you're stuck with it.

You can sell your modified binary with any conditions you like, as long as the following remain true for users of the software, otherwise you're in violation of the GPL (th four freedoms)

0. The freedom to run the program, for any purpose.
1. The freedom to study how the program works, and change it to make it do what you wish. Access to the source code is a precondition for this.
2. The freedom to redistribute copies so you can help your neighbor.
3. The freedom to distribute copies of your modified versions to others. By doing this you can give the whole community a chance to benefit from your changes. Access to the source code is a precondition for this.

This is (part of) part 2 of the terms & conditions of the GPL;

All rights granted under this License are granted for the term of copyright on the Program, and are irrevocable provided the stated conditions are met. This License explicitly affirms your unlimited permission to run the unmodified Program. The output from running a covered work is covered by this License only if the output, given its content, constitutes a covered work. This License acknowledges your rights of fair use or other equivalent, as provided by copyright law.

You may make, run and propagate covered works that you do not convey, without conditions so long as your license otherwise remains in force.


Basically, the GPL *explicitly* prevents you doing what you want to do; it would violate freedom 0. Once you have given the users a copy of the code covered by the GPL, they are free to use it indefinitely without payment, and make copies, deriviative works and distribute them at will - without requiring your permission or payment.

Any contract you make them sign prior to the handing over of the software that would require them to cease use without payment makes you in violation of the GPL and you then lose ALL RIGHTS TO DISTRIBUTE that GPL covered code you're using.

The people that wrote the GPL code you're using explicitly wanted the 4 freedoms to apply; if you wish to remove any of them, including the 'free use' clause, then you're going to have to start from scratch, and your code definitely won't be classified as Free Software or be able to be covered by the GPL

Your only other options is to go back to all the original coders, and ask them to dual-licence it to you under a non-GPL licence.

Note, redhat don't sell binaries, as such (or otherwise you'd only have to buy one copy per business) - they're selling support services, timely updates via their dedicated servers, and some non-GPL material (such as the logos). That's why centos can take the same code, strip out the trademarked stuff, and give it away entirely legally.

TL;DR. What you want to do is against the terms of the GPL, and cannot be done as you describe.
posted by ArkhanJG at 4:55 PM on April 10, 2010


Though you could do ransomware - i.e. give me $X, and I will give you my modified GPL code, and you'll only get it once I have my money. That is legal under the GPL. That is however a one-off deal; once you've given them to code + source, they can copy it, give it away or use it indefinitely, as those are the irrevocable rights the GPL gives them - there's no way to do a 'trial' version first.

If you want something as you describe, it'll have to be a licence of your own devising, and you'll have to own copyright to all the code.
posted by ArkhanJG at 4:58 PM on April 10, 2010


I don't see this having any downsides compared to the common FOSS scenario in terms of the FOSS idea of software getting propagated and contributed to

There is a huge downside: what you're proposing is no longer Free software. As ArkhanJG pointed out, this violates both the spirit and the letter of the GPL.

However, that's not to say that software released under the GPL can't have a usage timer that causes it to stop working after 30 days unless a license file/key is purchased. It just means that if the user is sufficiently bothered by that restriction they can comment out that part of the code and recompile (and give away that recompiled version.)
posted by Rhomboid at 5:24 PM on April 10, 2010 [1 favorite]


Response by poster: I do know that what I'm asking for would violate the GPL. That is why I'm looking for a different license.

ArkhanJG: Your only other options is to go back to all the original coders, and ask them to dual-licence it to you under a non-GPL licence.

Note my earlier comment:

In a scenario where I would like to modify someone else's GPL-licensed code and release it under such a trial-period agreement, even if I didn't care about my client's redistribution rights, I would in any case need to ask the original copyright holders if they would agree to relicense their code.
posted by Anything at 6:42 PM on April 10, 2010


No, redistribution would be free. The point would be to make agreements for a large enough sum of money before release, with a limited number of clients.
Do you mean this is more like a contract software job? A number of potential users would agree to give you money, you'd produce a (GPL'd?) product for them, and then they'd be obligated to pay you? After that point, the code would be free and you'd derive no more (direct) revenue from it?

Because once I have a copy of the software and am free to redistribute it, then there's no way for you to require money from the people I redistribute it to. (Otherwise I'd only be free to distribute it to people who'd signed an agreement with you, in other words, "not free"; and we devolve to the "non-FOSS, but source licenses are available" model I alluded to in my earlier comment.)

If you mean the software-to-spec kind of situation, sure, you can use any license you like for that, including BSD or GPL. I used to make a living that way, more or less. You just need to get all your customers to sign contracts before anyone gets the code.
posted by hattifattener at 9:39 PM on April 10, 2010


Response by poster: hattifattener: Yes, everyone would have access to the product and I could require no money from anyone except those who've both signed the agreement and use the product past the trial period. It would be different from a contract job in that the clients would only have to pay if they end up deciding to keep using the product.

In other words, I take all the risk, and while I may end up getting screwed (e.g. everyone but the original clients like the product), I should have the advantage of having a wider group of potential clients and having to spend less time negotiating the terms. I could mitigate the risks by writing a really good product and finding a set of clients that I would not expect to want to give up using it.
posted by Anything at 10:51 PM on April 10, 2010


Response by poster: (Also instead of a software-to-spec kind of scenario I might have a finished product that I go around pitching to potential clients before I release it, but that's beside the point.)
posted by Anything at 11:29 PM on April 10, 2010


I see. That makes a lot more sense than what I thought you were trying to do. In that case, it seems to me you could do this with any kind of software license, probably including GPL. You'd basically have a contract where they would pay you on accepting the product, and the contract's penalty for them canceling would be that they'd agree never to use the codebase you were developing (even if it was GPL). Your contract with your customers would be a separate thing from the license attached to the actual code. Presumably you'd need to pay a lawyer to write that up in an actual enforceable way (or tell you that you can't...).

I think the biggest problem would be that this would give customers an incentive not to sign the agreement and just wait for someone else to accept it and redistribute it. I suppose that all open-source-for-hire projects have this problem, but ISTM that your setup exacerbates it a little, because that penalty clause would be a new, and therefore scary, kind of risk. Maybe you could offer it as an alternative to a more conventional time-and-materials or fixed-price-per-milestone type of contract.

Or, depending on the market, I guess that having input into the code's design and specifications (presumably paying customers have more influence than random prospective nonpaying users) could be enough of a benefit to avoid the freeloader problem.
posted by hattifattener at 11:35 PM on April 10, 2010


« Older Who is this woman?   |   Tips for a really good travel bag? Newer »
This thread is closed to new comments.