Coding Horror

programming and human factors

Making Donations Easy

In my continuing quest for a decently full-featured graphics editor that hasn't succumbed to feature bloat, I recently installed Paint.NET for the first time. I'lll admit that I had low expectations based on the abysmal user interfaces I've experienced in other open source projects. Imagine my surprise when Paint.NET turned out to be.. well, incredibly freaking great. Not only is the UI actually friendly, modern, and easy to use, but the whole thing is so polished: the installer, the website, the tutorials and forums. It's the complete package.

But enough of my gushing about how great Paint.NET is. Last year, I declared December 1st "Support Your Favorite Small Software Vendor" day.

Check your hard drive, and I'm sure you, too, will find some bit of software written by a small software development shop, maybe even a single developer. Something you find incredibly useful. Something you rely on every day. Something you recommend without reservation to friends and peers. Something that makes using the computer that much more enjoyable. Or at least less painful.

Stop reading this post right now and buy that software. If it's not commercial software, don't let that stop you. Share the love by sending money to the person/shop/organization that created it.

This month it's MediaMonkey. Next month it might be ClipX, or Beyond Compare, or RegexBuddy, or TimeSnapper. It's time to stop floating by on the "free" version and give something back. If I can't come up with the scratch to spend a measly $20 a month supporting the very best work of my fellow independent software developers, can I really call myself a professional software developer? Can you?

As a Windows user, I work extra hard to avoid reinforcing all these negative stereotypes. I believe in the little guy writing cool Windows software. And by "believe in", I mean "pay". And so should you. Whatever operating system you choose to run, try to support the little guys writing the apps you use. We owe it to them. And, more importantly, we owe it to ourselves.

I've set a goal for myself, and I intend to stick to that goal. Whenever I encounter truly excellent software, I vote with my wallet. I pay them. Paint.NET is an open source project, though, and it can sometimes be difficult to figure out how to vote with your wallet when there's nothing to buy, and nobody to pay.

But look how easy the Paint.NET project has made it for me. The install dialog provides a gentle, unobtrusive link for me to "show my appreciation and support future development". That's exactly what I want to do.

Paint.NET install donation dialog

The donation page is similarly helpful, providing one-click PayPal donation buttons for common currency types-- along with the snail mail address if you're old school.

Paint.NET PayPal donation links

This is yet another way Paint.NET demonstrates that it is a thoroughly professional open source project. It raises the quality bar, particularly in the .NET ecosystem, where open source is often a second-class citizen.

Life is easier for commercial projects-- they have to ask you for money. But open source projects don't -- so they often have no provision for payment of any kind. That is a mistake. If I want to vote with my wallet, make it easy for me to give you my money. Set up a clearly marked donation page, and pre-populate it with brainlessly simple, one click methods to donate. If you don't want my money, that's fine too. Just tell me what charity I can donate to on behalf of your project.

I think it's hugely important to ask for donations on any non-commercial project. Not everyone can contribute time and effort. Help us help your project. Let us vote with our wallets.

(Speaking of contributions, yes, I am still planning to donate $10,000 to open-source projects in the .NET ecosystem. The money is set aside and earmarked. I'm sorry it has taken so long to set up, but I promise that it will happen by the end of the year.)

Written by Jeff Atwood

Indoor enthusiast. Co-founder of Stack Overflow and Discourse. Disclaimer: I have no idea what I'm talking about. Find me here: