Can Free Software Be Profitable?

by Trevis Rothwell, January 2008


At first glance, free software licenses such as the GNU GPL appear at odds with writing software for a profit. I contend that licensing your work as free software does not make profit impossible, but rather, it is simply a business problem waiting to be solved.

Some folks seem to resign themselves to the idea that writing free software must of necessity be an altruistic activity -- something that a programmer does to give back to the community. While this is certainly a commendable activity (and one that I subscribe to both in word and deed), most programmers also would like to receive financial reimbursement for at least some of their work, and would prefer to get paid to program instead of taking on some other career.

Software Freedoms

The GNU GPL cites four freedoms that the user of free software must have. Let's start by looking at each of these, and see exactly where the problems regarding profitability lie. (These freedoms are copied from the GNU Project web server, current as of 2 January 2008.)

Let me first make it clear that these freedoms are good. The question I am addressing here is not how to eliminate these freedoms or find loopholes to sidestep the freedoms, but rather, how can we work within the framework of the GPL to make development of free software profitable for the authors?

Purchasing a License

There is nothing in the GNU GPL that prohibits the sale of free software. If you wanted to write some free software, package it up on a CD in a nice shrink-wrapped box, and sell if at Best Buy for $250/copy, that wouldn't violate the license. You may even find that you sell some copies of it. You might sell a lot of copies of it. Sell 4000 copies at $250 each, and you're a millionaire. You could put your earnings into some 5% annual interest investment and potentially never worry about money again.

On the other hand, the first person who buys a copy of your software would have every right to redistribute it free of charge over the internet.

The potential is certainly there for making a profit using this route. It's not vastly different from some shareware distribution schemes. Even so, some may prudently question this particular business plan, though, since once the software is legally distributed free of charge, users might see little reason to buy a copy from you.

Indeed, it is this form of business plan that seems to be the usual complaint when folks argue that you can't make money writing free software. To that end, we should explore some other possible avenues of profit as well.

Funding Features

Let's say that you do go ahead and release version 1.0 of your free software product. Maybe you sell copies of it, maybe you give them away, but however it happens, people like your software and you find yourself with a nice user base.

Odds are good that the first release of your software was not perfect in every way. There will be new features that users want, and bugs that users want fixed. The stereotype free software developer will altruistically add these new features and fix these bugs in his spare time. But wait! Don't we see a possible business plan here?

The user wants new features. The user wants bugs fixed. If these things are important to the user, then perhaps they will be sufficiently important that the user will pay for them.

In traditional software business, the "user" might be some Fortune 500 corporation that happily turns over $25,000 to a software company who will provide them with their desired new features and bug fixes. That's a great business model, and if you can get into such a position, then go for it. But most individual software developers tend to start out on a smaller scale, catering to individual software users.

Individual users can still pay money to fund new features. Let's say that you imagine that new feature X will take you ten hours in implement, and you would like to receive $1000 to implement it. One possibility is that you could find, say, 100 users who want this feature and are willing to give you $10 each to see it implemented. You could have a user community page on your website where users can vote for their most-desired improvements and donate money specifically for certain features.

Another possibility is that users could pay a subscription rate for software upgrades, whereby the users who pay the most have the most say as to what features get added. A user who pays $25/year carries a certain weight, while a user who pays $100/year carries four times that weight. In the end, even those users who pay $0 still benefit from the new releases of the software, but they don't have any say in what new features will be implemented.

Of course, the software ware itself could still be made available for download. The user is not paying for the software code itself, but is paying for usage of it. They are paying because it's more convenient for them to use the software running on your web server than it is for them to download it and run thete than from some other web site, and I suspect that most computer users feel the same way (if they even think about it at all). Consider someone downloading a patch for their Microsoft operating system. To ensure as much quality and security as possible, they would likely rather download the patch directly from microsoft.com than from lima-bean.com/~murray/ or whatever. Going straight to the source bodes well for getting the unaltered original.

For that reason, I'm not entirely sure how much we free software developers really need to worry about other folks undercutting our profits by redistributing the software. Such redistributions happen with commercial software as it is; the only difference is that with free software it's legal. Furthermore, it's potentially beneficial, even to the original programmer.

If you write some free software and sell it, and then someone else comes along and improves it and redistributes it, then, since the software is still under the GPL, you would have the right to get the improved version and incorporate the improvements back into your own version. You are still the original source, but now get to benefit from the work of others. Sound unfair? The GNU GPL allows for it. The goal of the GPL is not to restrict profit, but rather to ensure freedom to use, modify, and share the software.

Case Study: ArsDigita

During the dotCom bubble, Philip Greenspun and friends ran a business called ArsDigita. They produced software for running online community websites. Their business reached $20 million in annual revenue after an initial investment of $10,000. And their software was licensed under the GPL.

Their main business model was consulting and custom software development. This was at a time when online community software was new and exciting, and there weren't a lot of folks who were expert at writing it. This being the case, large companies who wanted this kind of software were willing to pay lots of money for Greenspun and friends to customize and enhance their code, and to help them run it. The code itself was made available free of charge for anyone to use, as was much documentation about how to write such software yourself.

They had no trade secrets. They weren't trying to hide what they were doing from anybody. On the contrary, they were excited to teach others how to do the same thing they were doing. And they still made a lot of money writing free software.

Is This the Only Way to Run a Software Business?

Many companies have been successful selling licenses for proprietary software. Depending on exactly what you're trying to do, running a business around free software may be much more challenging than running a business around proprietary software, simply because so much of the software industry is built up around proprietary software. Running a free software business is going upstream against the prevailing wisdom.

A profitable free software business is certainly possible, but it's up to you to decide if it's the kind of business you want to be in or not.


See Also: Selling Free Software at gnu.org
tjr@acm.org