Coding Horror

programming and human factors

The Problem with Software Registration

As a person who has spent a significant part of his professional life getting paid to write software, I believe it's important for me to regularly pay for software, too. Our programmer salaries don't come from magical money trees. They come from customers laying down cold, hard cash for the software we've built. That's why every month I try to put into action what I described in 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.

As I encounter apps that I find helpful and use regularly, I go out of my way to support them by either donating, or registering and buying a license. It's just plain good karma. There's nothing more effective than voting with your wallet. As I see it, if you don't vote, you aren't entitled to have an opinion.

But here's what I find deeply troubling: often, registering software leaves me with a worse experience than not registering. Allow me to illustrate with an example.

I've been transferring our podcast files back and forth to via FTP, so I reinstalled SmartFTP. Now, I've used SmartFTP quite a bit over the years, but never bothered to pay for it. They've done a great job of regularly improving and enhancing it every time I use it again. That's exactly the kind of useful, living software project I want to support.

Until I register, I'm presented with this little nag screen every time I start SmartFTP. It's mildly annoying, but tolerable -- and it prominently features a convenient "buy me" button. Hey! That's what I want to do!

SmartFTP license reminder

I click that button and get whisked away to a website where I'm now confronted with a choice: home or professional?

SmartFTP product editions

Gee, I don't know. I'm conflicted. Now I have to think about what features I want, and how much I'm willing to pay for said features.

This is already starting to be kind of a drag.

I now feel like I'm being gamed. There's a name for this game, and unfortunately it's not something fun and cool like Grand Theft Auto IV -- this particular game is called capturing consumer surplus.

Let's do this. Instead of charging $220, let's ask each of our customers if they are rich or if they are poor. If they say they're rich, we'll charge them $349. If they say they're poor, we'll charge them $220.

Now how much do we make?

Notice the quantities: we're still selling the same 233 copies, but the richest 42 customers, who were all willing to spend $349 or more, are being asked to spend $349. And our profits just went up! from $43K to about $48K! NICE!

Any resemblance between this and Windows Vista Kenny Loggins edition is, I'm sure, purely coincidence. I finally decide I'm a "home" FTP user, whatever the heck that means. I suspect it's a sneaky marketing weasel synonym for "cheap bastard".

As a reward, now I get to play another game called fill out the giant order form. You've played this one before. Note that in this particular game, you can score bonus points for trying to route this form through your complex corporate payment system.

SmartFTP order form

After all that, I manage to pay. It's a sort of unavoidable flat tax on effort for any form of online commerce. Eventually, I receive this in my email inbox:

SmartFTP license email

Now I have three choices. None of which make a whole lot of sense on my initial reading. It looks like there's some kind of key file I'm going to need? I'll try the middle link to download it. I don't really want another executable of unknown provenance on my system. After downloading the license file, I use the help menu to install it:

SmartFTP license installation

Et Voil! In only sixteen fun and easy steps, I have registered this software and voted with my wallet!

But that registration is only the beginning of my problems:

  • I now need to keep track of a license file.
  • The license is probably tied to a particular computer, so if I reinstall the OS, or upgrade the hardware, that license might break.
  • If I lose my license, I need to remember my login credentials on the vendor's website to retrieve them.
  • My license is only valid for one year. When that year is up, I need to go through these motions and re-license the software yet again.

Now-- and here's the kicker-- multiply all this licensing pain by the number of applications and people in your organization.

Even for a solo user like me, it's bad. I have apps I've registered and paid for that I somehow never got license keys for, such as WinRAR. I have apps that I simply don't use because I'm too lazy to re-register them on my new install, such as EditPad Pro. I've long since lost track of what versions of which apps I have valid registrations for. You can imagine the kind of fun that awaits me at the end of any new system build, a virtual jamboree of re-registrations.

Now let's compare that with the process of "registering" the open source FTP tool FileZilla:

  1. Download FileZilla
  2. Donate $36.95 to the project

Oh, and step three? There is no step three! I never have to think about registration, licensing, or any of that other crap again. Ever!

There's no doubt that SmartFTP is the superior FTP client. I'm more than happy to register and reward them for their years of development work. But in the future, I think I'll be voting with my wallet for the registration process that makes my life easier, not harder.

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: