Saturday, May 11, 2013

The Software Developer’s Guide to the Donation Button

On March 8, 2012, in idevblogaday, by Steffen Itterheim
So you have this website going or some source code on github, and like to earn a few bucks. Donations, right? Hold on, there are a couple things you should consider before you add that Donate button!
UPDATE: If you prefer a concise, to the point summary of this post, you should read the follow-up post The 10 Golden Rules for a Donate Button.
In case you haven’t noticed, you won’t find a Donate button here or on my other websites. It may seem strange that the guy who never had a donation button of all people should write a guide to the donation button.
I consciously decided against having a donation button. You’ll find a number of reasons in this post, and maybe at the end of it you come to agree with me that Donate buttons are over-used, and the more developers offer them the fewer donations reach those developers who actually need and/or deserve donations the most.
I also wrote this as guidance particularly for individual indie or open source developers who are accepting donations or considering to do so, because donating to an individual is fundamentally different than donating to a (charitable) organisation or a software project (team) as a whole. You will also get some ideas on how you can improve your donation acceptance rate and which alternatives for voluntary compensation and appreciation exist.

Rule Number 1: Be a charity or a business. Never both!

I sell commercial products, both my own and third party products for which I receive a commission fee for each sale. I am self-employed, I make my living from those products and a few select contract jobs for people I know personally. It is fair to say that I’m running a business.
For me the question of whether I should ask for donations boils down to this: should a business be asking for and accepting donations?

Of course not. It’s somewhat odd, to say the least. A business that accepts money from others without offering anything tangible in return, I find that difficult to accept.
If you’re a business, you should aim to make your business work, period. I do a lot of things for no charge, like these blog posts here, Kobold2D, the Cocos2D Podcast, LearnCocosTV and general help on sites like stackoverflow.com.
That’s because I love helping people and enjoy doing all the free stuff. And I also find working on the free stuff motivating, it encourages me to try out new things, to push boundaries and learn from it. But I’m also doing these free things for one other reason: marketing. The free stuff results in better google rankings, in more readers stopping by, in interesting offers and opportunities. That’s what helped to get my book deal, more importantly it probably helped to sell a lot more copies than if I hadn’t been running this site.
Businesses spend a lot of money on marketing. I do too, but my investment is mostly time. I won’t accept financial contributions because the free stuff I give away pays back in numerous other ways.
This is something you should consider if you also sell products or benefit from the traffic on your site. Eventually you will have to decide: am I running a business here, or a charity? You shouldn’t do both at the same time because it is in a way like asking your users/readers to pay for your marketing expenses.

Myth: Donations are tax-free gifts

There seems to be a myth among some people that receiving donations is like receiving a charitable gift, and hence it is exempt from (income) tax. That’s wrong.
If you receive a financial donation, it is income and thus subject to income tax. This is because you are in all likelihood not a charitable organization! Talk to a tax consultant before you add the Donate button, as this may vary depending on country and your legal status. You may even have to write an invoice for each donation you receive to fulfill your country’s accounting requirements. This may very well not be worth the trouble.
As for the myth, I believe it may have come from donations to charitable organizations being tax deductible. But this is only true for the donor, and only when donating to truly charitable organizations, not to software developers.

Be clear: What or who is the donation for?

Most charitable organizations can’t tell you exactly what your money is being spent on. But you could. If you don’t, how are your donors supposed to know what you actually do with the money?
The matter here is one of trust and transparency: Will you add a new feature or write a new tutorial for every $200 you received, or will it be spent on food for your own survival? Will the donations pay for the hosting bills or your party drinks and drug escapades? Are you just going to accept donations without letting the donor know how the money helps?
I believe as long as you’re an individual receiving the donation, you should be fair to tell your donors that the donations are for you as an individual and thus each donation supports everything you do. Because that’s a fact, everything else is at least bending the truth.
If you imply that donations are for the project, that’s an incorrect statement. Your users like to believe that, you may believe that, but it’s not correct. You simply can’t have a Donate button for just that one free project you published, and say that helps just this particular project. If you’re an individual, the donations help you, period. Be honest about this important distinction.
I strongly recommend that you have donors understand that donations are given to you, and that in turn you strive to use the money in ways that best help the project. In fact, sometimes, that may mean buying some food to eat for yourself. The underlying issue is that you usually can not guarantee that the donations are spent solely on the project unless you strictly manage your personal life and the project as separate legal entities.

Donating directly to a project, the proper way

To make a donation directly to a project, you would have to have a trust fund of sorts managed by a third party, where donors are able to obtain information about how much money is being spent for what and where or to whom.
To use some money from the donation fund you would have to get sign off from team members and/or select donors to be allowed to spend the money on whatever you proposed to spend it on. Basically that means treating donations not like income but as a fund from which project bills are paid and investments made exclusively for the project itself. If donations can’t cover all of the expenses, it is your responsibility to donate the remaining sum just like you were a regular donor.
Understandably this is only feasible if you have a trust fund and a fairly popular project because this adds a lot of management overhead.

Do you really need the money?

I’m sure no one wants to donate to someone if they don’t know whether the money actually makes a difference for the donee. Of course I also wouldn’t want the donee to disclose all of his/her financial information either. This issue can not be reasonably solved. Thus you should take a few things into account that most people know or can learn about you before adding the Donate button.
For example, if I know the donee works for a large company which presumably pays its developers well, and the free project is unlikely to generate significant running costs or may even be sponsored by the company, I may be inclined to view the Donate button as superfluous, if not greedy.
Then consider the other case where the donee has 4 children, no job and is struggling to make a living as an indie developer and spent the last two years pouring his/her heart and life-savings into the project. Would you be more likely to donate to that person compared to the one above?
And how can you be sure this heartwarming story is actually true?
Meaning: some people can afford to give away things for free and really don’t need any extra money. Other people are faced with debts and no job, yet still give great stuff away for free. The really difficult question is, why would an affluent person accept donations and why would another person in real need for money rely solely on donations?
Some projects are really dependent on donations, whereas other projects will continue to be maintained anyway, donations or not. If you don’t absolutely need the donations to keep the project running, or move it to the next level, or to keep yourself alive, you should not ask for donations. Because if you do, you’re in fact asking for voluntary payment and you contribute to the demise of the original meaning of donations, which is “helping people in need”. If you don’t really need the money but you like to earn more, then sell (more or better) commercial products.
Here I want to appeal to your common sense. As a donee, consider whether you really, really need to have a Donate button due to financial pressure. Because for donors it is way more difficult, if not impossible, to make that distinction. It speaks for itself that you should not encourage users to donate on false pretenses, for example by writing “This project depends on your support. Donate now!” when in fact the project generates very little to no running costs.
Personally I would much rather donate to a project which transparently publishes the donations received and the bills that need to be paid on a regular basis. Actually, I strongly believe this should be a mandatory requirement for donations. It would certainly help to drive the money where it’s needed most.

What if you do want to earn some extra cash?

I know the notion of many free software developers goes something like this: “I released it for free, I could as well add a donation button and make some extra cash. I don’t care how little.” And of course: “everyone else has a donate button, so why shouldn’t I?”.
There’s two issues with that thinking. First, donations are to support projects which otherwise could not exist, or not be as good as they are. If you want to make some money, sell something. And if you really don’t care how little you get, then you should be fine getting nothing at all – which means you honestly shouldn’t have a donation button.
The other issue is that surely some like to “play the lottery” whether they admit it or not. Even though you make very little from donations (speak: nothing), who knows, maybe some day some rich person might donate $10,000 just like that? If you don’t have that donation button, you void any chance to make that money.
Let me be clear, your chances at winning in the donation button lottery are infinitesimal. You only do it because of the sensation that you might win. If that’s your thinking you’re abusing the donation button in my opinion.
The better alternative is to allow your users to give gifts to you instead of money. It’s also more fun for both donor and donee. For example you could create a public Amazon Wishlist from which your users can purchase items that will be delivered to your address (without the donor getting to know your address). Or allow users to send you iTunes gift cards. Be creative!
I would feel much better receiving material gifts than if I would just receive the same amount of money. Maybe because it clearly signals to donors that the gift is for me as an appreciation for my own work, rather than the donor being under the possible assumption that my work would in any way benefit from the money or that I might actually benefit (partly) from the work of others. And it’s certainly more personal, because I express my needs or wants through the wishlist whereas the donor can imagine how the gift may be useful or entertaining to me. Finally, it is a gift in the true sense, you don’t need to pay income tax like you would have if you received a monetary donation.
Therefore, if you want to make my day, you can gift me one of the items from my Amazon Wishlist. I have items on my wishlist anywhere from €5 to €1.500. Surprise me! :)

Why even popular projects receive few donations

If your project is very popular you may find that donations don’t scale up as your project’s popularity raises. That’s because the thinking of its users tends to shift from “that guy/gal needs my help” to “he/she is probably getting more than enough already” and “others with more money who can afford to donate surely do so”.
You can only combat this by doing a fundraiser, which means you have to directly ask people to donate. You may find this quite difficult because you ask people to give you money while giving nothing in return (that they don’t already have). Others simply revert to complaining about how little donations they receive, which changes nothing. Unless you actively ask or encourage users to donate, little will change.
Especially for popular projects it will be very crucial to be transparent about how much money you receive from donations and how you spend that money to combat the “probably already making more than enough” expectations of your users. No one likes the feeling of possibly being ripped off by being tricked into spending money.
In any case, face the reality of donations: you can either continue to keep your hopes up, or actually do something to get more donations. And the methods are not unlike selling a product, which means you need to wear your business hat even if your project is completely free of charge. Since a number of projects out there are free exactly because the developer(s) didn’t want to bother running a business, they often also fail to generate any significant amount of donations. Case closed.

Does a large donation create huge pressure?

Consider that some day, someone donates ten or a hundred times more than the best paying donor thus far. The rich person mentioned earlier just donated $10,000 out of the blue. Now what?
Obviously that donor likes what you’re doing. Or made lots of money with it and just wants you to have a share. Next time that donor has a question, request, or what not you will be sure to answer quickly and do more to make the donor happy. Suddenly, you have a VIP user. Maybe you don’t really want that. Maybe that person even promises you more donations if only you add this or that feature. Maybe that person is a complete idiot (and rich) and you’d rather like to ignore him/her. Think about that, too.
Because even in the small scale accepting donations for free work can create a pressure problem as well as it can be a source of motivation.

Fair is fair…

Now imagine you build your project by utilizing other developer’s free projects, and some of those project’s authors are also asking for donations. You might unknowingly and unintentionally create a pyramid scheme, and as we all know only the person at the top gets all the dough.
For example, Cocos2D gets a lot of love, and some of that is because of integrating the Chipmunk and Box2D physics engines. However many developers don’t really make that distinction between cocos2d-iphone and the physics engines distributed with it, for them they’re simply a part of Cocos2D.
As a potential Cocos2D donor, would you consider splitting the donations so that the physics engine developers also get their fair share? As an actual Cocos2D donor who used the physics engines, have you also donated to either Box2D or Chipmunk as well?
Even I made that mistake in 2009 by donating the entire sum to Cocos2D while not donating anything to Chipmunk, which we also used in our game. This issue is embarrassingly easy to overlook, both for donor and donee.
Therefore, if you want to take donations and your work is in part based on someone else’s work who also accepts donations, the least you should do is to offer your users an easy way to donate to the other included projects as well. Or come to an agreement with the other developers and forward them a fixed percentage of all the donations you receive.
I’m not going to accept donations for Kobold2D partly to avoid this issue altogether. And of course Kobold2D is, as I said earlier, one of the free projects from which I benefit in other ways, and I would have created it anyway to satisfy my own needs. Maybe not exactly like that, but something very close.

What if you’re not working on this alone?

More often than not, you’re not the only person who has a part in the work you created. In that case as a donor I would want to know if and how the donee splits the donations among team members and contributors. Of course I would like to know this even more if I am or want to be a team member or contributor of that project.
I gave this a lot of thought in regards to Kobold2D contributions. It’s terribly difficult subject matter because you’d have to devise a scheme that values other people’s work to determine which percentage of the donations they should get. Once you start to have contributors, it wouldn’t feel right not to give them a fair share of the donations. At least from the money that’s left after all the running expenses are paid off.
Because paying others based on their contributions is so difficult, it’s no wonder that employers want you to work for them for a fixed income, plus maybe a bonus (paid only if the stocks went up 20% and there was a solar eclipse during the last fiscal year). Guess what? Public companies are one big pyramid scheme!
If you do take donations for the project and you want to encourage contributors, you better come up with a way to either re-imburse the contributors for their efforts, or make an extra effort to make sure that everyone knows how much and where donations are being spent. For example by publishing the running costs the project generated and the donations received on a monthly basis.
If you don’t do that you may end up with developers being reluctant to share their work or contribute to your project more than usual because they might not like the idea of you earning all the fame and money. Needless to say, if you were to also sell commercial products at the same time, it would certainly worsen this situation.
If you consider this, it may actually be better and easier not to accept donations if you intend to or expect others to help improve and maintain the project. At least until you can establish a trust fund or the necessary transparency regarding donations received and bills paid.

Begging for donations: don’t do it!

Some Donation buttons are surrounded by pleas for money, some more subtle than others. In some cases the impression is given that without donations the donee will eventually be forced to abandon the project. Don’t ever write bullshit like that! I have no sympathy for developers who think they can use the threat of project abandonment to get more (or any) donations.
For one, if your project is worth anything, someone else will step in and take over anyhow should you feel unable to continue the work. Also, if you’re desperate enough to encourage (read: molest) potential donors it gives a bad vibe to your project, yourself and your attitude which could very well be the final nail in the coffin for your project.
If you do require money to continue the project, then donations may not be the best thing to do. Instead start selling something. Selling products is a lot more rewarding financially, and likely in other ways too. There’s always room to do both a fully functional free version and a commercial version or product. Heck, you could even use the money to kickstart the project, and then eventually give it away for free if you like.
If your project is worth anything, monetizing it commercially is the fastest and easiest way to ensure that both you and the project continue to live on. If you can’t or will not commercialize, then simply don’t beg. Explain, encourage and be transparent. That’s the only way to increase donations.

Make commercial products, not Donate buttons!

Finally, you have to consider that your donate button may simply be an easy way out. It is not rare to hear developers say that income from donations is so little already, they see no way how the project is going to make any money in the future.
In some cases it’s an expression of under-appreciating one’s own work. As in “it’s not good enough to ask money for it”. But in fact, once you’ve added that donate button, you do ask for money. The only difference is that hardly anyone ever pays because it is voluntary. Once you start making (attractive!) commercial products, you can easily make a lot more money than through donations even with the most niche product.
It’s just that for many developers selling a commercial product is somewhat scary, so they simply fall back to using the safe default: the donate button. And then they judge the commercial viability of their project based on donations they receive. That is so wrong on so many levels.
Then there’s others who do level up from the Donate button, but then end up selling a product for less than $10. Disappointment arises. It is not a secret that you make a lot more money with a lot fewer sales if you increase your product’s price, preferably somewhere in the $50 to $200 region. Not only do you make more money per sale, it’s also easier to convince individual customers to make the purchase and you spend less time on support incidents not only because you have fewer customers, but customers who pay higher priced products are generally happier with their purchase (it’s a human psychology thing).

I donate some lessons learned …

Personally, I don’t see the need for a donation button for any of my work. I do a lot of things for free, which indirectly helps me to earn money in other ways. I take pride in that most of my work is truly free, and I couldn’t be happier about it. At the same time, you don’t have to feel bad if you keep seeing the donate button on my websites, but don’t donate.
If you don’t buy any of my products either, that’s alright. If that means my business eventually crumbles, it was entirely my fault, not yours. Nothing you could have done to prevent it.
Donations can often project the fear of running out of business (or the project running out of steam) towards its users. If you can help it, you shouldn’t expose your users to that fear of potential loss, or worse, attempting to monetize the fear. Most of that is in the wording and how you ask for donations, not that you do. And if you don’t say anything next to your donate button, you might as well just remove it altogether.

My thoughts on donationware vs commercial products

Commercial products and companies get more trust exactly because they’re operating for profit, which means they’re in it for the long haul. Interestingly, if someone starts selling a product, people are more trusting that the product will be supported longer and better, and the product will be of higher quality compared to a project available free of charge.
Small teams and individuals working on free projects have to put in a lot more effort to earn the user’s trust, and some users will always be inclined to rather buy the competing commercial product even though it may be more limited.
I’d appreciate it if we all could leave the Donate button solely to charitable organizations and individuals who really need and deserve donations due to the financial pressure they’re experiencing. In our field than means specifically software developers who struggle to make a living and still spend a lot of time on their free projects, particularly if they’re generating significant running costs, and who are transparent about their need for and use of donations.
In all other cases, I’d much rather buy a commercial product that I like, because receiving something valuable from a purchase is inherently more satisfying than giving money away and not knowing what the money actually does. Alternatively, give me the option to purchase a gift for you, instead of just sending you money.

I won’t donate unless …

By the way, if I buy your product, you’re free to buy drinks and drugs with my money. I don’t care. But if you ask for monetary donations, I’d like you see you do your due diligence because I surely will not donate to a project that is not clearly in financial trouble just as much as I won’t buy a product which doesn’t satisfy my needs or expectations.
Meaning, I will not donate to a project or individual until, at the very least, the amount of donations received are publicly disclosed. Do one better and let us know how much working on and running the project costs you, too. Without that, donating money is like buying a product without a product description.
And keep in mind that setting goals for donations encourages users to donate if they know how much money is needed, how much has been donated so far, and it requires an explanation how the money is helping. I’ll be a lot more likely to donate if I love the project and know what the money will do and how much I am contributing to the goal. In contrast, open-ended donations with no additional information are discouraging, and perhaps even disrespectful not just to donors but other donationware developers as well.
I think it’s time we hold the Donate button to a higher standard. Do it right, or don’t do it at all!

No comments:

Post a Comment