I have seen numerous licenses for any kind of software such as the GNU GPL, BSD License, MIT License, and LGPL. What is the process for creating a new software license, such as "John Doe's generic license"?
- Open an editor.
- Write terms of license.
- Save file.
- Include in project.
Generally speaking, that's all there is to it. Seriously.
Don't believe me? Check out Phil Sturgeon's Don't Be A Dick license (as well as the WTFPL that inspired it).
That said, it's hit or miss whether software licenses are legally enforceable, even if a lawyer wrote them (at least in the US, and it depends almost entirely on the whim of the judge or ruling copyright authority). More generally, though, as the software author, you are already covered by your country's copyright laws (assuming you've taken the steps for your work to be copyrighted; in the US, that's simply actually making the work).
It boils down to what you want to accomplish with your license, above and beyond (or in lieu of) copyright laws. In the case of such licenses like Phil's DBaD license, it's largely a matter of the honor principle and mutual respect of one another.
If you want it to be legally enforceable (or at least have a chance of doing so), such as releasing a closed-sourced product, then you'll very likely want to talk to a lawyer. That way, you can make sure there aren't any glaring loopholes and can have it written in such a way that a judge/ruling party is more likely to rule in your favor in the event that someone does violate it.
EllisLab (the company behind CodeIgniter) has a great explanation of software licensing (and entire week of blogs on the matter, in fact), both from a legal standpoint, and from the standpoint of a FLOSS developer and the honor principle I mentioned above.
(Disclaimer: I'm not a lawyer, this isn't legally binding advice, blah, blah, blah. I'm just a developer who's had to tip-toe around the legal minefield that is software development and licensing. When in doubt, talk to someone who actually is a lawyer, ideally with a copyright, patent, and/or licensing focus.)
Answer the following questions for the user of your software:
Is your product open-source, i.e. can I get a copy of the source code?
- How can I use your source code? Can I freely copy it into my own applications, or do I have to link to your binary? If I use your code in my own application, is there a limit to how much of your code I can use? Do I have to include your license or attribution header at the top of any source files I redistribute that contain your code, or in the Help/About box of my binary?
What can I do with your product? Can I use it one one computer? Can I use it on more than one computer? Can I redistribute it or resell it?
If I use your product as part of another application I write, do I have to be open-source also?
How do you warranty your product? Are you legally liable if I have problems?
What are your redistribution terms? Can I redistribute your product as part of a product I write? If you provide source, can I modify your library and redistribute the modifications, and if so, what conditions do I have to meet?
Study other licenses, and see how they have answered these questions.
It is actually surprisingly similar to what developers do:
You give a lawyer (or the legal department in a large corp) a list of requirements for what the license permits and what it does not permit (e.g. the license is for one user only, it's temporary, you cannot use the software for some purposes, etc.) and they "translate" this into lawyer-speak, pretty much like we translate requirements into code.
For example, "the license is for one user only" is usually translated into the something similar to this: "FooCorp Inc. grants you a single, non-exclusive, non-transferable license to install and use FooSoftware for ...".
You might think this doesn't apply to F/OSS licenses, but it's more or less the same, except the requirements are different: you can find the simplest version of these requirements at http://opensource.org/docs/OSD.
But the lawyer part is essential and there's no point in trying to write a license by yourself (unless you're a lawyer with a lot of experience in IP-related and international law). Someone will just find a convenient loophole, which will allow him to use your product in a way he pleases (I'd go as far to compare this to exploits).
Of course I do not claim this explanation to be complete or even correct, but it's a rough sketch of the process, as far as software developers are involved (therefore I compare it to a programmer's work).
To answer your question, anyone can write a license - and it shows!
Those of us who use software to build things and actually try to respect each license are ready to gouge our own eyeballs out with a hot poker every time someone talks about making new one. There are already an uncountable number of software licenses in the world. 99% of them are a near duplicates of existing, more popular licenses, except not as well thought out.
One site I contribute to has a home-grown creative-commons non-commercial attribution type license, except it says nothing about derivative works. Are they allowed? Can they be distributed under the same license? Beats me!
If other people contribute to a project and you ever want or need to change the license, you need to get them all to agree to change the license, or you are more-or-less stuck with it forever. Some of them might become unreachable or even die. I am not a lawyer, but if you don't have a signed contributor agreement from everyone that lets you make decisions about your license, I think you are SOL.
It's really hard to write a good license. Even the best software licenses are full of holes. There are new versions of the Apache and GPL licenses periodically. Please, see if you can find a license which meets 90% of your needs and use it. The GPL Linking Exception or "Classpath Exception" is a great example of this. I'm a little worried about the statement the Hibernate people had on their site a few years, basically publicly mis-interpreting the GPLv2 to make it sound like it included the Classpath Exception. Is that the classpath exception? We won't know unless someone sues them.
It seems to me that getting sued is the most painful way to debug your license. If you use a license that people have sued-over already, there is a certain assurance that it works, and also a sense of how it works. Better yet, pick a license that has been to court in different countries. Did you think about how your license would be interpreted in other parts of the world?
If you base your license off an existing one, then people who care about fulfilling the terms of your license might not have to study it for years to figure out exactly what it means.
If at all possible, I would encourage you to devote your energies and talents to improving an existing license rather than writing a new one.
Sorry to be such a kill-joy. If I'm bitter, it's because I really read and try to respect people's licenses before I use their works.
Write down the terms, publish it with your software. That's it.
One question, however, is why do you want to? It is not unlikely that whatever conditions you wish to add are already present in another commonly-used licence.
This adds a preliminary step - check whether you actually have to create a licence.
It is also likely that some of the conditions you wish to enforce are flawed in some way; adding another preliminary step - read around about the "unique" terms you want to apply. Someone else is likely to have tried such terms, and found them unenforceable, or counterproductive in some way.