   About the GNU GPL, MIT License, PHP License, Creative Commons, and others
  I'm interested in releasing source code (the entire source code, including images, database schemas, css, js, etc) for some of my PHP web applications. However, I need some advice on which license I should use and the pros and cons of each. All of my web applications are already running online, if that's important. Also I'm putting the downloads for the source on my personal website, so it's accessible to everyone. Which license should I use though? I know that there are many of them and I can't seem to choose one. However, my criteria for a license is that: 1) Even if I release the source code, I can still legally have my own web applications running online. 2) After releasing the source, I can still create future versions of my applications and not be legally oblidged to release the source. 3) I don't want companies to use my code for commercial purposes without my consent.4) I don't care if people change/edit the source, setup the web application on another web server on another domain, etc. as long as I still receive credit.Sorry if I sound a bit stupid -- I'm not very experienced with this type of stuff. But really, which license should I use? I prefer a more permissive one than a restrictive one.   
  It sounds like a variant of the MIT or BSD license may be applicable. There may be others -- you can browse many of the standard ones at this site.The only sticking point is bullet (3). You are generally able to modify the terms of the license agreement, so you could for example remove the clause from the MIT license about being allowed to sell copies of the software. However, you will probably want to get a lawyer to review your changes and advise you about them, as you could easily leave a loophole in the license by trying to change it yourself.This topic is more appropriate in the Business forum, so I will move it there.   ;  The MIT/BSD type licenses are pretty optimal IMO. They basically say "Do what you want with this stuff, but credit me when you redistribute [modified copies of] my stuff.This makes it usable by anyone, and companies can use it legally as well; which might pay off when one such company decides to uses your stuff and one day releases an improved version of it.The GPL license in contrast forces everyone using so licensed code to open source their modifications. It is/was a good choice in the context of the Free Software Movement, but now that Free Software is established (in large part because of the GPL; but also because of BSD/MIT licensed Free Software), it feels opressive (= not really free) to me.   ;  As far as I know, most open source licenses do not forbid commercial re-use of code.  You may be able to adjust the terms of some of these licenses, but how do you expect to enforce it if everyone can see your source code already?  The horse may already be out of the barn on #3.   ;  What I like about the GPL is that no one can legally make my stuff unfree. Personally, I really lack the motivation to help ppl make money (make money with my code and I get null?) or proprietary stuff (they profit in some form from my stuff, but how do I profit from theirs? i.e. sharing?) for nothing in exchange but fame, except when I am paid (or otherwise relevantly profit) for that.Give and take and vice versa, is more important to me than having my code as widespread as possible. If it makes you happy, okay. But me, not. (and yes, I also have a "proprietary day job" where my interest in friendly code sharing is null, so I know what I talk about)   ;Quote:3) I don't want companies to use my code for commercial purposes without my consent.In that case, do not use MIT/BSD. These allow third parties to take your code, modify it and sell it without your permission. GPL is stronger in that the sense that any changes to the code must be made available to you but it still allows commercial use.IANAL, but It seems you want something similar to the Microsoft Shared Source License. This is not a "free" license in the strict sense of the work (it places restrictions to what third parties can do to your code) but I think it covers all points 1-4.Keep in mind that you can relicense your code at will, but:(a) you generally cannot change a license retroactively (i.e. the new license will only affect newer revisions of the code), and(b) you must be careful with committing external contributions to your code. You can change the license of contributions you do not own, you must either get those contributors to agree to the license change or you must require copyright assignment before using their code.   