Giving it away

I give a lot of source code away on the web. I have done for several years. Often when I tell people about this they try to convince me that I should be selling the code rather than giving it away. They don’t need my code and are way more business savvy than me and they come up with all manner of clever ways that I could do this, but this is why they’re all wrong…

I’ve written articles and had code available for download on the web since about the late 90’s. I started by putting stuff up on my web site and writing stuff for CodeGuru. When CodeGuru was bought out and the new owners trashed it I moved to CodeProject.

Like the writing I do here, the articles that I write are mainly for my own benefit. I find that writing something up enables me to get it clearer in my head - the old ’talk to the teddy’ technique. Writing an article about some code and making the code available for download means I have to finish it: finished things rot less easily, so writing an article is like pickling the code. What’s more I end up with some docs that are aimed at people who don’t know the code, often when I need to use the code again I’m that person who doesn’t know the code.

So, given that writing about the code is a good way of preserving it so that it’s still fresh when I want to use it in the future, I’d probably write things up even if I never published them. In fact, I have a theory that organisations that want to encourage code reuse within the organisation should do it informally via a ‘CodeProject’ style web site (but that’s another story).

Putting stuff up on the web has lots of advantages: I get peer review, bug fixes, suggestions for future directions and loads of free testing. Lots of people take it and say nothing, some take it and send emails saying thank you and some send emails saying we like this, please quote for adding these features…

If people have already downloaded your stuff for free and they want you to enhance it and you give them a choice to have their changes done cheaper if you retain the IP then most seem to jump at the chance. After all, the rights for the new bits of work are just similar for the rights they already have for the stuff they downloaded for free. This is good for me, good for them and good for all the people who don’t even say thank you ;)

Of course some client’s don’t like the idea, so we draw up a more restrictive rights agreement and they pay more.

Whenever I tell the business savvy people about this they suggest that I make people register before they download; so I can spam them later, no doubt. Or suggest that I charge a very small amount of money for the code, or allow people to subscribe to my work, for money; like anyone would bother to pay…

I think they’re wrong because they’re focusing on trying to sell to everyone, whilst I’m focusing on trying to sell to only those who want to buy. In their world I restrict access to my code and sell maybe 3 units at X. In my world I let 300 people download the code for free and perhaps sell 1 unit for Y. As long as Y is > 3X then my way is better than their way. As an added benefit I may have helped 299 other people, 6 of those may have suggested ways that the code could be better, 2 might have sent bug fixes, 1 may have said thanks. Suddenly Y doesn’t even have to be > 3X anymore and I’m still better off…

My business savvy friends think that I have lost 299 potential sales because I gave the code away for free. I disagree; they’re not lost opportunities because it’s unlikely they would ever have paid anything for the code anyway. But they might tell their friends. Or they might use the code and then someone working for them may move on and need something similar done and be prepared to pay… Or they may not.

By posting code up on the web more people have a chance to see my code. If they like it they may want to pay me to write code for them, if they don’t like it they may tell me things that will help me improve. If they never see it then they’ll never know and I’ll never learn…

All of this talk about free stuff doesn’t mean that I’m some Open Source beard and sandals type (1st rule of blogging, be controversial and they will come… ;)) or that I’m against people paying for code. I have several plans for stuff I’d like to sell. None of the stuff I release is under GPL, it’s just free as in free beer, rather than free as in free speech. The reason for that is that often a GPL license will be enough to stop people being able to use the code. What’s the point of giving it away if people can’t use it? I give it away because I want people to use it so I put as few restrictions in their way as possible.

What I like most about my way is that I get to seed my market with code that I want to work on. I’m effectively saying to the world “this is what I want to work on, does anyone want to pay me to do it?” and much to my business savvy friends’ surprise, quite often the world says yes.