I was just reading this article on PC World about the launch of GPLv3. I reckon it’s a decent article in that it actually bothers to explain the foundation of GPL (Richard Stallman’s software freedom principles).
One quote (from an engineering professor at MIT) gets it wrong though:
When something in the free software world gets improved, there’s no waiting to buy a new license, everything is shared with all users, so everyone benefits[…]
That’s just not true. GPL does not invoke an obligation to publish modifications. Of course, when the resulting work is distributed, the source code should also be made available to those same people. But that’s not quite the same. And there’s more to it. Let’s take the following example of how you could do business (that is, make money) while using GPL, perfectly in line with RMS’s ideas.
You develop software, and offer it for sale. Your customers get your product, plus the option of getting the source code to that product. So your customers have their freedom to look at and modify the code, and even redistribute it.
In practice, most customers wouldn’t bother with the latter as that wouldn’t be their core activity. But even if they do, provided you maintain your software, the stuff published elsewhere would always be an older version of the original, or an older version with modifications. Applying patches to a new version always needs testing so that’d by no means be a zero-effort issue.
A key reason a customer buys your product is that while they may be able to build it themselves, the amount of effort/time involved in development (including some additional research, testing, and so on) is more than they are willing to spend. So instead they spend some money on you providing the base product (which they then may modify if they wish). That makes business sense. And if they make modifications, chances are they’ll give them to you for inclusion in the main codebase. That saves them the patch merge hassle described above. They are technically not obliged to give you the mods, and you are not obliged to include them in your codebase. But both steps again make good business sense for both you and your customers.
As an additional revenue stream you can offer custom mods for the product. Customers could go elsewhere, but as original author, you are the implicit expert and obvious choice when a customer looks at someone to do extra work. In fact, because you have an existing business relationship with them, selling them something extra becomes much easier.
The same applies to supplementary/complementary products, and support. If you just gave away the product, you would not have a business relationship with all your users, and so selling any of that would be much more difficult (many have tried – and only some have succeeded).
And you don’t have to give away new versions for free either, you are quite entitled to charge some upgrade fee, or whatever other scheme might make sense for that particular product. And only those who purchase that new version from you are entitled to receive the source code for it. And that brings us back to the start of the example, and a very important point. You don’t have to make the sourcecode for a GPL licensed piece of work publically available, you just need to somehow make it available to those to whom you distribute the product. And as noted, they can in principle just stick the stuff on their website, but most won’t (but even if they do, this should not hurt your business).
The above example is perfectly Open Source using the GPL, but it’s not a completely public project. But does it need to be? Many tools and libraries are very specialised, in reality only the direct users (customers) would potentially participate. And they can. Sticking it on sourceforge wouldn’t help.
This business model is not a suitable solution for all products, but definitely for some. In a nutshell, you want to turn most if not all of your users into customers and thereby establish a business relationship with them. Think about it…
As for GPLv3, I’ll need to peruse it some more to see if I’d currently consider it for use in new or updated software instead of GPLv2. It looks like a lot of issues with the earlier drafts have been resolved, so that’s good.