Providing a Closed Source License Upon Request?
goruka writes "As a citizen of the open source community, I have written several applications and libraries and released under the BSD license. Because of my license choice, I often run into the situation where a company wants to write software for a closed platform using my code or libraries. Even though there should be no restrictions on usage, companies very often request a different license, citing as a valid reason that the creator of such platform has special terms forbidding 'open source software' in the contracts forced upon the developer. So my question is, has anyone else run into this situation, and are there examples of such licenses that I can provide? (Please keep in mind that I'm not a US resident and I don't have access or resources to afford a lawyer there.)"
As long as the software/library is written completely by yourself, you're free to pick any license -- or dual-license it.
You can have your program both licensed under BSD, and also offer the same code/library as closed-source for $xx at the same time, with different conditions and fewer restrictions.
An example of other software that uses the dual-licensing approach is MySQL: for more information see http://www.mysql.com/news-and-events/newsletter/2003-11/a0000000220.html
It's actually not uncommon. My current employer has a "no open source allowed without explicit approval by the legal dept, which takes an eternity and is a royal pain, so don't do it unless there's absolutely no alternative" policy. I am not kidding.
One of my previous employers had the same policy. This is not at all uncommon.
A few years ago a company found some of my code on the web. The code was released under an apache-like license. They contacted me because they wanted to buy it, but with a couple of minor modifications and under a different license. Essentially very similar scenario as the situation the OP found himself in. I agreed, made the modifications, and sold the original product plus the mods to them under a different license. I think it was cheaper for them to get the modifications they wanted, and the license they liked than develop the same code themselves.
As for me, I felt that nobody besides that company would have probably wanted those modifications anyway. That's probably not entirely true, but I convinced myself of that so that way I did not feel like I was totally selling out :) The Open Source community probably did not miss much by me not releasing those mods. I treated the modifications as "work for hire", and since I never released them, I avoided most of the possible legal difficulties. The original product stayed under the same license, of course. That company is now one of the 5 largest software companies, so I presume the practice is not unusual.
Jobs? Which jobs?
Some companies will register the software purchased as an asset, and that is the procedure they must follow. They need a contract that specifies the license terms. There also has to be someone they can complain to, or contact to make improvements, or at least explain some code so they can make improvements (if you allow that). This is their procedure for operating business responsibly and that's fine.
Also as someone else mentioned, they might have to have their legal department, or paid external lawyers, analyze carefully an open source contract for viral bits. If they can write the contract for you it is easiest but make sure it contains what is shown below. Or you could use a template on the web.
People here telling you to tell them to buzz off if they won't accept BSD, etc. are not in business, and that's what is scary. Open source programmers need to be able to make a living in order to support doing their open source work, so a company asking you for a commercial liscense for that exact work you have already done is fabulous! Unless you have a job where you are paid to write open source software, this is ideal I should think. More like that and you wouldn't need to do other commercial work, right?
A commercial liscense costs money; no real company buys software for $1. The code may be exactly the same as the free version, it is okay to charge money for it.
All you need to do is make it easy for your client to purchase the a non-exclusive liscense to your product. This is actually an opportunity for you. You can make some money now, have a possibility for a support contract or more commercial work in the future, and you can say the code is used in a commercial product, which speaks of its quality.
Things you should specify (off the top of my head - maybe you can find some more information elsewhere):
Your (or your company's) name and address, and theirs. At the bottom, your name and the person on their side, with signatures.
Disclaimer of your liability: That the software is provided on an as-is basis and you the vendor have absolutely no liability for any defect in it, nor for any losses that may ensue through its use, or its legality in some jurisdiction, nor it is intended for illegal uses, or use in mission critical applications, etc. There is plenty of boilerplate around you can find that says this. (Assuming they are just buying something of yours and they aren't hiring you to create something for them. If they were, you'd have to guarantee against fatal-level defects, and that it meets a carefully agreed-on specification. Things like behavior in a cluster, usability on a certain architecture, 64-bit, Y2K or security related vulnerabilities would then require you to maintain it. You should add in it that any work to make improvements or repair bugs will be charged separately.)
The price. Charge them a reasonable price for it, this is a commercial license and you can include some support with it. If you include 10 hours support for free then maybe $1000 is okay, or more it depends on what the amount of code is of course. Charge for additional work you do at a certain hourly rate too if you want. Maybe you could discuss that here. You could sound them off about the price verbally. Priced beyond a certain threshold will make the decision get booted up higher.
The deliverables. Usually they need something physical. Make a CD with a nice label, write a short instruction manual, and print it out on paper (also included as a PDF or text file inside the CD). The CD and manual are physical assets that they can put in the vault and have available for software audits.
Your responsiblity to support them. You may be tempted to say support is free forever, but don't do that, it costs you your time and they want value. Say limited support for a short amount of time and if they want it you can make some separate consulting or support contract with them.
If they are paying you then you can afford to provide them with support to get up and running, or to discuss wit