The other day, I began ripping some CDs with Grip, a CD player and ripper for the GNOME desktop. Grip has a remarkable interface -- three nested layers of tabs! I also tried Sound Juicer, a newer application with a simpler interface. I began to wonder if GNOME (and free software in general) was gravitating toward better usability and fewer "pro" apps, and if that meant maybe it was time to make a distinction between free and commercial software by writing simple apps for free and specialized apps for commercial gain. There are several reasons why this could work:
- Free software is typically written to "scratch an itch." Since specialized software tends to have a small target audience, there is a smaller probability that it will face competition from free software (as is seen from the fact that there isn't much free software around for specialized domains).
- Since the user will need to spend time to learn the interface of the app, they are more likely to be willing to pay for it, since the value of the time required to learn all its features (at least a few days) is worth much more than a few tens of dollars.
- Specialized software typically forms an important part of users' business strategy. Therefore, it is likely that they will want to purchase support for it, if it is available.
- For non-commodity software, it is possible for developers to listen to the needs of individual users and incorporate feature requests. Users are willing to pay for this privilege.
Bootstrapping commercial software
So far, so good. Specialized software can get written for Linux, and people can make money off it too. Why is it, then, that the culture of $30 commercial software is practically non-existent on the Linux desktop? It's a Catch-22: the software doesn't get written because authors think there are too few users who want it, and they wouldn't buy it anyway; Linux users often don't look for commercial software because they are used to not findng it, and even when they do, they tend to associate commercial software with poor quality and untrustworthiness.
I'm focusing on Linux here because several Windows applications already exist for most categories. Second, for desktop apps where a large part of your code is the user interface, it's a lot of extra work to make your app cross-platform. Third, what we have in mind are mostly single-developer projects, and few hackers have experience developing on both Linux and Windows (let alone Mac OS or any other platform you might want to port to). Fourth, cross-platform apps aren't as appealing for the user: they don't have native look and feel, or are difficult to install, or both.
How do we go about writing and selling Linux desktop software? Here's how:
- A commercially minded individual developer or a small company (say GNimbleCorp) writes GNiftyApp, a simple barebones GNOME application that meets the needs of 90% of the users for whatever task it performs. It is GPL-licensed.
- GNimbleCorp also releases GNiftyApp Pro, a specialized application. GNiftyApp Pro is proprietary software. You can purchase a license, including support, for $30 (as an example). LGPL licensing of the GNOME libs makes this possible.
- GNiftyApp is good enough to be shipped by major distros, and gains a large user base.
- GNiftyApp has an "Upgrade to GNiftyApp Pro" item in its help menu. This is free advertising. Users of GNiftyApp feel that they can expect a quality product because of their experience with the free version. They also trust GNimbleCorp because it has shown it is a good open source citizen by GPLing GNiftyApp. A small fraction of users buy the Pro version, ensuring a revenue stream steady enough to employ a full-time developer or two on GNiftyApp and GNiftyApp Pro.
Assuming ballpark figures of 20 million Linux desktops, a 2% probability of an installed app being used by a given user, 10% of users of GNiftyApp having specialized needs, 25% of users with specialized needs actually shelling out the $30 for the Pro version, and a two-year upgrade cycle, the revenue works out to $150,000 per annum. Not bad for a single developer garage shop, huh? Most of those figures are somewhat pessimistic estimates. The 2% usage probability is sufficiently low that a large number of application domains qualifies, perhaps a hundred. More popular apps have a proportionately larger monetary value. Currently deployed and popular GNOME apps are in the best position of all.
The central thesis is that having your app shipped by major distros offers an enormous business opportunity in the form of a free advertising medium that is currently largely unnoticed and completely unutilized. The fact that Microsoft doesn't ship third-party apps with Windows means that a corresponding business model for Windows relies on an extra step of the user downloading and installing a package even to use the free version of the program. This significantly mitigates the advantage of Windows having a larger installed base. Therefore, commercial software for the Linux desktop shoud be about as successful as commercial software for Windows.
Widespread adoption of this business approach would annihilate the number one problem facing Linux on the desktop. More commodity free software gets written, more specialized software gets written, and the two enjoy a symbiotic relationship. And the developers get paid, keeping the ecosystem healthy. What's more, it is likely to start a snowballing positive feedback cycle of more apps gaining more users, who demand more apps....
This is a radical idea, and not everyone will like it. Below I propose several possible problems with the model, along with solutions that should be acceptable to anyone who uses free software out of pragmatism rather than ideological considerations.
Would distros ship it?
Why not? After all, the app they would ship is GPLed. Commercial distros, more than anyone else, would appreciate the GNimbleCorp's right to make money with free software. While they are within their rights to rip out the "Upgrade to GNiftyApp Pro" menu item and ship GNiftyApp, they are unlikely to alienate developers by doing a nasty thing like that for no tangible benefit.
What about core GNOME apps?
This is a slightly trickier question. Obviously GNOME would like to avoid controversy, so for apps in the core GNOME desktop, it is perhaps best if the app put a discreet "a more advanced version, GNiftyApp Pro, is available for $$" somewhere in the help contents rather than mess with the menus, or the developers could put a link to the Web site in the help menu and advertise the Pro version there.
What happens when there's competition? That is, if GNiftyApp and GNeatoApp do the same task, then how does the distro decide which one to include? There's a lot of money at stake!
The obvious answer is that the distro should just apply the usual selection criteria that it uses without considering the monetary consequences (which do not, after all, affect the distro itself).
How do you protect the user from being ripped off? What if the authors of GNiftyApp deliberately refuse to put in features (even those that are useful to a majority of users) in the hope increasing sales of GNiftyApp Pro?
The GPL has built-in protection against such abuse; if people feel that GNiftyApp's authors don't have the users' best interests in mind, GNiftyApp will be forked.
Licensing issues GNiftyApp, being open source, would receive patches from other hackers. Some of this code will go into GNiftyApp Pro. What about licensing?
GNimbleCorp should make it clear that for all patches submitted, the author agrees to assign copyright to GNimbleCorp if the patch is accepted. This should be acceptable to patch authors: the copyright transfer requirement applies only if the patch is accepted, in which case the code remains free because GNiftyApp is GPLed.
Is proprietary the only way?
Of course, GNimbleCorp could choose to GPL GNiftyApp Pro as well, and make money through support alone.
In closing, a note to KDE fans. All I have said might be possible with KDE too. It is just that GNOME's approach of keeping apps as simple as possible and LGPL licensing makes it clear that a GNOME ecosystem would work.