I know that the MIT and GPL licenses are ‘compatible’, and so I can use them together in a project. I also know that GPL allows you to sell software, but requires that the source code be available on request. I believe the MIT license does not require this.

If I plan on using code that is dual licensed under MIT and GPL, how does this combination work? Do I have to follow all rules of both licenses, all rules of one, or what?

Specifically, I’m wondering if I can use dual-licensed code in a subscription-based webapp.

Unfortunately I can’t add a comment to the selected answer, but my understanding is that mipadi is correct. It is usually an either or option with dual licensing. A prime example is jQuery’s licensing option, which simply states that you may use either license.

Grant Skinner has a good blog article on the different types of Open Source licensing which may be helpful. G Skinner Blog You should also review the Open Source Initiative’s web site on licensing. OpenSource.org

If have copyright to all code (e.g. all community written code has been assigned to you) you can do pretty much anything.

For a web-app I recommend http://www.gnu.org/licenses/agpl.html. It requires that modifications to hosted/public web-app must be shared (where as you can modify and host publicly gpl software without releasing modifications, since you are not distributing the platform itself).

Then for subscription/commercial side you can sell your app however you like (e.g. very restrictive EULA you can think of). Or something simple like “you receive it under AGPL and you are not required to share your code as long as you have valid subscription paid”.

Just be careful how many rights you grant to commercial license. Once you give the source under MIT to someone, they can do the same to anyone else. Commercialise binaries, give source under AGPL. As copyright owner you can do anything =) (except for revoking GPL from published code).

If a piece of software is dual-licensed, it generally means you can pick which licensing terms you want to use; if you use code dual-licensed under the MIT and GPL, then your product can be released under either licensing terms. In this case, it’s a bit “weird”, since the MIT license is compatible with the GPL, so licensing something under just the MIT license means you could use it in a GPL’ed program anyway.

You’ll want to check the specific project guidelines, though. Sometimes, dual-licensed software has different licensing requirements, i.e., some software is licensed under both a commercial license and the GPL; if you decide not to pay for the commercial license, you can still use the code under the terms of the GPL, but your product has to be licensed under the GPL. (That’s probably not the case here, but you’ll want to check.)