I've been having a discussion about licensing and open source software. Basically - the other guy is saying that licensing is easy, if you're going to build a product you can use an (any) open source project and make money by selling that code.

My issue is that say I create a website or app with a project that uses a GPL license the restrictions aren't so straight forward - correct me if i'm wrong on each of these scenarios:

1 - i create an iPhone app using GPL code and put that app into the appstore - the code must be freely available to people buying that app.

2 - i create a website that my client hosts - they must have access to the code.

3 - i create a website as SaaS that my client "leases" but does not own - though it is hosted on their infrastructure - they must have access to that code

Am i right on each of those assumptions?

Are there any other issues i should be aware of under any other licensing terms for other licenses?

I don't really intend this to be a bashing answer, but these are the reasons I do not personally use Qt. There are plenty of good things to say about it -- namely that the API works most of the time, and that it does seamlessly bridge platforms. But I do not use Qt, because:

In some cases, it just doesn't look like native programs look. Designing a single UI for all platforms inherently is not going to look right when moved from machine to machine, for various visual styling reasons. For example, on Mac machines, split bars are usually relatively thick, and buttons are small and rounded with icons. On Windows machines, split bars are typically narrow, and buttons are more textual, with more square designs. Just because you can write one UI for every platform does not mean that you should for most applications.
Qt is not just a link-able set of C++ libraries. The build system being used requires the translation of certain files into extra source files, which makes the build process much more complicated when compared with most other libraries.
As a result of (2), C++ IDEs and tools can flag Qt expressions as errors, because they do not understand Qt's specifics. This almost forces use of QtCreator or a textual only editor like vim.
Qt is a large amount of source, which must be present and preinstalled on any machine you use before compiling. This can make setting up a build environment much more tedious.
Parts are mostly licensed under the LGPL, which makes it difficult to use single-binary-deployment when one needs to release under a more restrictive or less restrictive license.
It produces extremely large compiled binaries when compared with similarly written "plain old native applications" (excepting of course applications written for KDE).

