On the Choice to Release Free* Software

*(as in Freedom)

Why Not?

STR-X was the first plugin I ever made, and the first one I ever released. I put it out as open-source since that seemed like the most logical option at the time. I had benefitted immensely from several open-source libraries, or free lessons and tutorials online about how to create plugins, and I felt the reciprocal thing to do would be releasing STR-X for free under an open-source license.

At the time, the GPL license was the only one I’d really encountered, and I didn’t understand much about what it meant, and why it is a special license in the world of free software.

When making PiMax, I realized it would be viable as a commercial plugin. And “commercial” means closed-source, and it might even mean some sort of DRM to deter piracy. These are the received notions we have about software, and the “reality” of making software as a way to earn a living. So initially, it seemed obvious that I should keep PiMax closed-source and proprietary. But this idea would eventually fester in the back of my mind: Why not open-source it?

There is this idea you can’t make money doing open-source software, or at the very least, that you have to put restrictive measures in your software to prevent people from copying it, or to prevent people from actually using it until they undergo the process of “activating” it. Merely having the software running on your computer is not enough to warrant the ability to use it – or, we’ve gotten used to this default attitude that software you’ve acquired is not “active” until you get permission from the developer. This whole system comes from a cynical assumption of the person using your software. You are assuming no one, or not enough people, will want to compensate you for your work.

Even worse, by implementing some form of DRM or copy-protection in your software, you are actively assuming that your users and potential customers are dishonest and happy to take advantage of you. And surely, there are a number of people who will use free stuff if they can and never think to pay for it, myself included. But this clearly imposes a default stance of hostility between you and your users. Not exactly the kind of “brand identity” you want to cultivate, eh?

The DRM Problem

I tried to use a simple and unintrusive licensing method, but I was too taken by the idea that I had to prevent copying between different computers. I implemented a method that would create a unique ID using some functions in the JUCE library, which are based on unique hardware or OS identifiers of your computer. When a license was activated, that unique ID would be checked whenever you ran the plugin to verify that the license was being used on the same machine it was activated on.

This didn’t involve any telemetry or logging of personal info, it was meant to be the simplest way to verify that a license wasn’t being copied directly between computers (i.e. one person sending their license to someone else), but rather had to be activated on each computer the software was being used on. This still led to a number of issues with legitimate licenses not being able to activate. Creating a unique ID for a single computer doesn’t appear to be a consistent way of identifying a single computer, since that ID was found to change when people updated their OS or replaced certain components in their computer.

But it’s also an additional step in the process of using the software that exceeds the agreements of the exchange which took place between you and the customer – you provide software, they pay for it – and this generates a unique ID known as a “license key”, an “activation code”, or a “serial” or whatever. You’ve already generated one unique ID which proves a purchase took place. Why do you need another, especially when your terms allow for using the license multiple times? It serves only to put a small stumbling block in the path of someone looking to pay for and use the product, and erodes trust between you and a customer.

You also increase the likelihood someone will look for a cracked version of your software (say if they bought a license but it failed to activate), and end up downloading some kind of malware from a shady website. If I’m this hypothetical customer, spurned by the cynical assumptions of a software company I was hoping to buy something from, I would gladly pay for a license without DRM. Even if I knew there was nothing technically stopping this software from being copied and run on some other computer without going through an activation process. And honestly, that show of good-faith from the developer makes me more likely to pay for something. Even better, if I could read the source code and potentially modify this software, this is now worth even more to me as a user.

Why Still Sell Licenses?

If you can read the source code and even compile it yourself without paying, and remove the check for a license key, why even bother asking people to pay?

Because I want to be compensated for my work, and I want to give people an easy avenue to do that. People have this notion that open-source software must be free–as in, not cost any money, or that receiving money in exchange for developing software must be done entirely voluntarily through donations. Why is this? What is it about the availibility of source code, released under a license which permits total freedom of modification, that dictates in our minds the idea that it must not cost money?

Software is difficult to subject to the economic rules that physical goods are subject to. Is software a physical good? Technically, yeah. But software can be duplicated perfectly an infinite number of times through the process of uploading and downloading. This poses a problem for the basic idea about a transaction: that you’re providing one finite good for another. With software, the good itself is not finite.

We can see that a similar economic proposition is made through selling software: that you are paying the developer(s) for their time creating the software, so you don’t have to spend your time doing the same. Whether or not you can read and modify the source code for that software should have no bearing on what sort of compensation the developer is seeking for their work.

There are some examples of software which is open-source, yet the developers charge for it, such as Ardour or Aseprite (open-source w/ non-permissive license).

Becoming a supporter via donations is an option, but may not be desirable for some. If you’re not convinced you’ll want everything we make, then making a one-time purchase for a single product you want is the most sensible option.

If you are compiling one of our plugins from source, the expectation is that you are doing so to contribute to their development, or to modify it somehow to better suit your needs. This is not in place to “trick” non-technical users into paying for something they could get for free if they knew how to compile source code. That being said, compiling a plugin is a perfectly legitimate way to use it if you can’t pay for it.

One More Reason

A couple important software libraries that we use involve a dual-licensing agreement. This is typically done to generate revenue for the provider of the software library if it’s being used in a commercial application, with the alternative option being a GPL license ostensibly for a non-commercial open-source project. Note the assumption that GPL projects can’t be commercial!

I don’t intend to sign any more proprietary licenses for software I use in development. Some are far too restrictive or immoral for me to consider signing. And beyond that, I want to implement my own solutions if an existing one would restrict my freedom or my users' freedom.

Fin

This is a sort of test. Not that it is temporary or that this decision will be reversed, but because I want to see what will happen and compare it with my expectations. I hope it proves to be viable, but I will continue in this direction regardless.