Postmortem on Rack's GPL relicensing

Before VCV Rack 1.0.0 was released, its source code was relicensed from BSD 3-clause to the GNU General Public License v3.0. It’s actually more permissive than that. The license has a VCV Rack Non-Commercial Plugin License Exception so non-commercial plugins don’t need to follow the GPL, and it has a commercial licensing option so vendors can sell plugins without needing to follow the GPLv3. See Plugin Licensing for a summary of Rack’s license and LICENSE.md for the license text itself.

Thinking back on the full history of VCV, this is possibly the single most important change to Rack since its release in 2017. Here I will describe why that is true and why I encourage all plugin developers to consider relicensing their plugins to GPLv3 as well.

Why was GPLv3 chosen for VCV Rack?

The GPLv3 is the ideal permanent license for VCV Rack v1 and beyond because it reflects the VCV Mission Statement in the closest possible way. For context, I recommend to read the entire statement (it’s only 10% the length of this post), but the following sentence is the most relevant here.

VCV Rack will always remain free and open-source so that users and developers can freely explore their ideas.

For me, this means that it is important to find a software license approved by the Free Software Foundation and the Open Source Initiative, whose definitions I believe represent as closely as possible to most people’s personal definitions of “free” and “open-source” software, respectively. In particular, it is important for users to freely run VCV Rack for any purpose, and it is important for developers to review its source code, make changes, and redistribute those changes for their own or others’ benefit. (See FSF’s Four Freedoms and OSI’s Open Source Definition.)

The VCV Mission Statement then goes on to say

Since open-source software is equally expensive to develop as proprietary software, VCV must raise funds through alternative methods such as selling commercial plugins. Rack development scales proportionally to available funding, so VCV alternates between periods of funding, during which new commercial plugins are released, and periods of Rack development.

This means that VCV must protect its intellectual property in order to fund itself. A license that restricts malicious third-parties from creating off-brand versions of Rack is necessary to ensure that the community and its ecosystem of software do not become fragmented into multiple commercial endeavors, splitting the potential funds between each project. At the same time, we don’t want to restrict users of Rack who want to solve a particular problem by editing or sharing the source code such as a feature/bug that has not been added/fixed yet or a feature request that was rejected. GPLv3 fits the bill, and while it is a great open-source license, there aren’t many other good alternatives. The lack of other choices is a good thing actually, since having multiple common “copyleft” or “viral” licenses would make two open-source projects incompatible with each other simply based on the copyleft license they happened to choose.

Why did you use BSD 3-clause in the first place?

Every developer of a multi-year software project has many regrets of decisions made in the beginning of the project that they would happily go back in time to repair in order to solve current issues. Surprisingly, I don’t have many technical regrets of VCV Rack, since the architecture design and third-party libraries were mostly all well chosen from the beginning. Instead, my largest regret is the license I chose for VCV Rack and its plugins.

Before Rack was released, I wanted to use the GPL to ensure that all forks would also be open-source. However, doing this would have prohibited freeware and commercial plugins, and I knew these would be necessary for the platform’s success. LGPL was also considered, but this would have restricted proprietary plugins in other ways. It was eventually decided on the BSD license so that plugins could freely copy DSP and UI code from Rack’s codebase without dealing with explicit licenses.

Keep in mind that this license was chosen when VCV Rack had ~30 users among friends and other modular enthusiasts before public announcement. Little did I know that the userbase should shoot well past 150,000, I would hire 5 collaborators, and it would become my career for the next 10+ years.

In my defense, “hindsight is 20/20” as they say, and the final choice of “GPLv3 + VCV Rack Non-Commercial Plugin License Exception + commercial licensing” was nontrivial and required legal review that I didn’t have the means to do in 2017.

Case studies

No decision can be judged without evidence. Here’s a collection of events that would have benefited from the GPL being used from the beginning.

Friedrichs Audio

In early 2018, a few months after VCV Rack was released to the public, a plugin developer Matthew Friedrichs released an unlicensed port of Make Noise Maths for VCV Rack called “Floats” for $30 without asking permission from Make Noise. Even to those not well-versed in IP law, this was an obvious violation of IP.

Make Noise politely asked Matthew to cease sales of the infringing product. Matthew was rude during their exchange, did not remove Floats from his store, and took the bare minimum effort to remove just enough graphics to be “legal” but not “morally respecting” of the IP/brand he was still exploiting to make sales to customers who just wanted to try Maths. This further angered Make Noise, and it became apparent to me that a single plugin developer had the capability of poisoning the work of the 100+ talented developers and graphic designers who spend weeks creating their own original software and graphics.

It’s extremely important to our community that VCV is never known as a pirate’s cove of ripped-off Eurorack modules to outsiders, so it was necessary for me to fix this hole. The hole was finally patched when Rack was relicensed to GPL. After that point, in order to release a commercial plugin for Rack, developers must now obtain a commercial plugin license from VCV, which requires following the VCV Plugin Ethics Guidelines. Although these guidelines are required for commercial plugins, they are merely a recommendation for open-source plugins, which is okay with me because an infringing non-commercial plugin has much less capability of stirring negative feelings than a for-profit one, and if these guidelines were a legal requirement for open-source plugin, Rack would no longer be open-source (as defined by FSF/OSI). Since Rack v1 was released, I’ve seen no more conflicts between VCV plugin developers and Eurorack manufacturers.

Matthew has recently re-released Floats for Rack v1 under the GPLv3. The GPL still allows him to sell it, but it also requires him to provide his source code and build scripts to any customer who requests it. It would be nice if an existing Floats customer could do this and post the source code online, simply to prove that Matthew is legally abiding Rack’s license.

miRack for iOS

miRack for iOS is a proprietary fork of Rack v0.5-beta by Vitaly Pronkin released Sept 2019.

Due to it being proprietary, it goes against my long-term wishes for my source code to be shared free of charge and under the same open-source license. His use of my source code is technically legal because I used the BSD license between Rack v0.3-v0.6, as explained in an above section. However, I do not believe that his use is moral, because Vitaly was fully aware of my intentions behind licensing the first “stable” release of Rack under the GPL to prevent proprietary forks. But I’ll file this under “it’s my fault for not knowing this would happen and not relicensing earlier.” There will always be questionably moral people in the world that will take advantage of things like this.

When miRack was released, I immediately noticed blatant commercial infringement of Fundamental panels from Grayscale. I hired Grayscale in 2017 (as a contractor, not an employee) and continue to pay him lots of money to design new VCV plugins and components. All third-party commercial plugin developers happily do the same, so Vitaly should follow the license like everybody else. By not doing that, he is committing intellectual property theft. Vitaly prefers to “infringe first, apologize later” (although I don’t actually remember an apology), which is absolutely unacceptable behavior in any industry, especially software. I took this very personally, as it demonstrated his malicious intent using someone else’s property, rather than his willingness to work with VCV to produce a quality product.

Had he contacted me beforehand, this would have been a completely different story. Instead, I had to contact him afterwards with a polite email, resulting in increasingly defensive and occasionally rude responses from him (especially toward Grayscale, whose graphics he copied). From that point forward, instead of doing what’s right by apologizing and immediately removing the infringed material (although not violating in the first place would have been better), he continued to show no interest whatsoever in negotiating appropriate license fees with Grayscale. This would probably have been microscopic quarterly payment for an $8 product, so the issue is more about his lack of willingness to cooperate rather than money. Instead, he continued to argue over email until we simply had to “time-window” the issue as we have already wasted enough hours on it.

I don’t know if Vitaly and Grayscale have resolved this issue by now, but what I do know is that Vitaly did violate Grayscale’s license for commercial gain (which the CC BY-NC-ND 4.0 explicitly prohibits) and should follow whatever demands Grayscale requests as compensation, within reason. Would Vitaly have owed Grayscale $10 or $1,000 for license fees? I don’t know, but it’s not about the money but rather the lack cooperation as I mentioned earlier. If Grayscale requests for him to cease using Fundamental content (i.e. source code + graphics), Vitaly should comply, and I believe this is not just a reasonable, but generous demand. If you walk into a store and steal some merchandise, you can’t go around saying “But I have a right to keep shopping here!” Like I said, if it’s only a $5 sandwich or a $500 TV, it doesn’t really matter because it’s not about the money but the respect or cooperation. The store won’t be happy and you’ll need to comply with their demands, within reason. The following words are too strong for this situation, but I can’t think of another way to say it: Once you become outed for a criminal act, you lose a lot of rights you didn’t know you had.

Anyway, I’m sick of talking like a lawyer in these last two paragraphs and all those email exchanges. This interaction broke all of my trust with Vitaly for any future collaborations, and I find it difficult to see how his platform will benefit from him being an “enemy of VCV”. I absolutely feel that iOS users deserve a solid VCV Rack port (more on this in the next section), but it is unfortunate that the “hero” you got wasn’t someone who had any respect for the project from which it is derived.

In summary, always ask permission (and obtain it) before using someone’s IP, even if you have a feeling they’ll say “yes”. It’s extremely simple and I can’t imagine doing otherwise, and in fact 99.9% of humans understand this concept. But you (as an IP creator) must be defensive against the other 0.1% by laying out a careful legal framework for your IP, because focusing on the moral aspect has zero effect on the 0.1% that don’t care at all about it.

Why hasn’t VCV developed its own iOS port?

I’ve received this question a lot from people saying “You said you couldn’t do it yourself, so you’re jealous that someone figured it out!” Well no, I never said that—I said it’s “not planned” (see Will Rack be ported to iOS or Android?). But that’s beside the point. Here’s why we haven’t planned “VCV Rack for iOS” yet.

Porting VCV Rack to iOS as a minimum viable product that runs at all would require $1-3k development costs. This is what miRack is. Looking back at the above FAQ answer, miRack has solved ~3 of the 7 issues. Those are the easy ones, the low-hanging fruit. The difficult bullet points are business- and licensing-related issues, which I doubt miRack can address properly or at all, especially after all the drama.

If I delivered miRack as the long-awaited “VCV Rack for iOS”, customers would be disappointed, and perhaps even angry, that most usability features and plugins would not work on a product with the VCV brand. If a customer purchases a plugin such as VCV Parametra, VCV Spectra, or even one of the fantastic third-party plugins like SV Modular Synthetic or Stellare Modular Creative Suite, they should not suddenly find that it doesn’t work on the iOS version. Since miRack is based on Rack v0.5, it includes no development progress after 2017. Keep in mind that Rack v1 was almost entirely rewritten after Rack v0.6. A real “VCV Rack for iOS” would always be up-to-date and closely follow the desktop version release cycle.

For this reason, I feel that a Rack port to iOS worthy enough for the name “VCV” would cost $20-60k or more. Currently, VCV is hard at work developing Rack for DAWs, a VST version of Rack, and several more virtual Eurorack modules, so we cannot afford this time cost right now. This is why VCV has not yet developed an iOS port and why we do not consider miRack to be “VCV Rack for iOS” (so I ask users to please refrain from calling it it that and use its correct name “miRack” instead. Vitaly would appreciate that as well.)

KlirrFactory

I apologize in advance to Hagen for putting him in this category, but sometimes we need a positive example of how a negotiation or use of IP should happen.

In July 2019, KlirrFactory released Valley Audio Plateau for VST, based on Valley Audio Plateau for VCV Rack, for $25. I asked Dale Johnson (Valley Audio) of his thoughts on this, and he said that Hagen Ueberfuhr (KlirrFactory) asked him for permission for his use of the source code and is even sharing a profit fraction. Both parties say they are satisfied with the result of this collaboration.

Since Valley Audio v0.6, which KlirrFactory’s VST plugin is based on, was previously licensed under BSD 3-clause, KlirrFactory does not legally need to share profit, or even ask for permission. But what emotions would result if KlirrFactory only chose the legal bare-minimum route by creating the port without his permission or profit share? This hypothetical scenario would be avoided if Valley Audio had originally been released under the GPL. KlirrFactory (or anyone else) would then not have the legal right to use the code in a proprietary product for $25 without permission. He would be required to ask for permission, and if Valley Audio wanted a profit share, they would need to agree on a commercial license deal, just like any other copyrighted software. And of course, the GPL wouldn’t restrict its “free/open-source” status, because anyone would still be able to use, review, modify, distribute, etc. free of charge.

Valley Audio has since been relicensed to GPLv3.

Why you should license your open-source plugin under GPLv3

VCV Rack has grown to be among the most popular synthesizer platforms for creating music and sound design for films, live jams, and personal entertainment, and its open-source nature is undoubtedly becoming gradually more valuable (financially) to many other areas of the music tech industry.

The algorithms in your plugins can very well be taken advantage of in someone’s commercial product, such as a VST or hardware module. Using other people’s code is what drives the software industry, but this should be done in the form of collaboration, not freeloading. If someone wants to expand your DSP algorithms, they should do so in a way that is collaborative by sharing the source code back to the world. Or, if they want to use your source code for a commercial or proprietary product, they should be required to ask you for permission, so you can decide how to handle their particular situation. Perhaps you can even use the opportunity to request license fees to repay some of the hours spent developing the open-source software, so that the licensee gives back financially in exchange for not giving back their source code. The GNU General Public License encourages collaboration in many ways, and collaboration is normally the reason programmers write open-source software in the first place.

Today, I will lead by example by finishing relicensing all VCV-developed open-source plugins to GPLv3. This includes Fundamental, VCV-Recorder, VCV-Prototype, AudibleInstruments, Befaco, and ESeries. All future open-source plugins and patches will also be licensed under GPLv3.

How do I license my plugin under GPLv3?

Download gpl-3.0.txt to your plugin’s root folder. You may rename it to LICENSE.txt or link to it from another LICENSE.txt or LICENSE.md file along with the following description.

All **source code** is copyright © <year> <your name> and is licensed under the [GNU General Public License v3.0](gpl-3.0.txt).

Or, you may add the following text to the top of each source file in your repository.

<one line to give the program's name and a brief idea of what it does.>
Copyright (C) <year>  <name of author>

This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with this program.  If not, see <https://www.gnu.org/licenses/>.

The goal is to make it absurdly easy to spot the license of your source code so there is no potential confusion. If someone infringes on your source code, they often use the “it wasn’t clear enough” argument. You don’t want them to be able to do that within reason.

Remember to update the .license property in plugin.json.

How should I license my graphics?

VCV recommends to use one of the Creative Commons licenses for your plugin’s graphic assets.

For example, the VCV Component Library and VCV Fundamental panel graphics are licensed under CC BY-NC-ND 4.0. This license prevents other parties from using your graphics in commercial products without your permission.

Once you select your preferred license, add the license to your LICENSE.txt, LICENSE.md, or README.md file. You may use the following text as a template.

All **graphics** in the `res` directory are copyright © <year> <your name> and licensed under [CC BY-NC-ND 4.0](https://creativecommons.org/licenses/by-nc-nd/4.0/).

Why do you take licensing so seriously?

In general, licensing for a project that employs a few people full- and part-time must be taken very seriously. Since VCV is an emulation of the hardware modular synthesizer concept, it is particularly important that it doesn’t become known as a product built upon mass-infringement of other individuals’/companies’ hard work.

Licensing is also important to ensure that VCV stays in business for the next 10+ years. If VCV does not cover its legal bases, it can be run out by an infringer, which is beneficial to no one but the infringer. Maintaining a stable plugin API while adding features is a difficult task that is vulnerable to fragmentation. If an infringed product begins diverging from VCV Rack’s API, all plugins become incompatible, and the platform will be too confusing for users to manage.


I’m happy to answer any questions below.

42 Likes

Well done, Andrew. I’ve lost count of the times I’ve had to explain the GPL (and its importance) in its various versions. Your message here is an excellent presentation of its virtues to open-source projects such as VCV Rack and Ardour. Thank you.

2 Likes

I asked him for the source code immediately after the license change to GPLv3 and he responded with a complete source package within minutes.

6 Likes

Okay good to hear, I’ll take your word for it.

3 Likes

Are the big issues being alluded to in this sentence due to the Apple App Store/in-app purchase model? Basically, would Apple basically be forcing users to buy additional modules again via in-app purchases and take their own cut in the process? Just curious if that’s the big roadblock. Or if you could work around that by installing all plugins on install, and simply unlocking the ones tied to a user’s VCV Rack account.

Ideal-state for an iOS port of course would be exactly as you describe: whatever is on my VCV Rack account would be what was activated on the iOS version when I switched over.

1 Like

I answered Vitaly on his thread here which is no longer available. Thank you Andrew for your statement, which reflects all my thoughts and I am no dev, but I think , I have a good functioning morale compass.

2 Likes

The GPL protects Ardour from itself being commercialized in a non-reciprocal format. Its various plugin formats (LADSPA, VST, LV2) do not have such infectious clauses. Similarly just because GIMP or Krita are protected under such reciprocity agreements, sidecar content such as brush packs (or again external plugins like Python scripts) are not infected. This is pretty distinct from Andrew’s intention with VCV.

The biggest problem here is not that Rack itself was relicensed, but it was done so along with the SDK. And paired with the launch, with no apparent warning that such a change was intended for quite some time. That’s a pretty big poison pill.

There is also continous speak of new features that will be completely walled off and proprietary, up to and including an entire build of the core that is going to be closed. Considering he was willing to poison pill everyone once, I really can’t say I have faith he won’t do it again.

:woman_shrugging:

1 Like

In that paragraph, I took Andrew to be talking about what would have happened if miRack (same code) were to have been released by the VCV team as a VCV product. AFAIK the plugins couldn’t be included “since miRack is based on Rack v0.5, it includes no development progress after 2017.”

I haven’t received a poison pill. You just speak for yourself. I absolutely support Andrew‘s decision to move to GPL.

6 Likes

https://mifki.com/blog/a-public-statement-on-the-hostile-actions-of-wes-milholen-grayscale-towards-mirack-project/

Unless the miRack dev misrepresented (eg. altered) the transcripts, (likely story) This does NOT look like Andrew communicated an honest account of what happened.

I’m just an outside observer, new to VCV — so maybe I’m missing some relevant details, but on first impression - it makes certain people involved with this look like reactionary, blowhard troublemakers — the kind of petulant behavior that people are so burned out on in American politics today.

You assumed the very worst cynical motives and intent with someone who was clearly doing everything they could to rectify something that was obviously a simple human mistake/oversight. Alleging criminal intent? Really, Andrew?

This is exactly what Wes wanted - escalate the situation until it created a fracture in the community — and you certainly helped him throw that poison in the pot he was stirring.

5 Likes

I haven’t heard anything about the core being closed but aside from that, as far as I can tell, you are annoyed that you had to do some work for your previously working plugins to work in the future?

I would have thought that there is always potential for changes like this to happen in the transition from beta to release.

You said yourself that you are new to VCV and that you might be missing relevant details. Are you trying to help de-escalate? If so, please consider putting your point in less judgmental terms.

4 Likes

The issue here is miscommunication, at least that’s the way I see it. The good part is you can always give it another go - calmy, professionally, and try to reach consensus. It’s not like either side had evil, ill intent towards each other or community.

3 Likes

For me to believe that IP was taken wrt Fundamental panels… I’d have to believe that there was an actual design being ripped off… Let’s be honest here… His panel designs aren’t that visually unique… with the exception of possibly the VCV logo; there is nothing really that stands out as design that screams “IP”.

Anybody with a vector graphics program and a couple of graphic design school credits could have done the same.

My suggestion is that you hire another contractor to be public relations…

2 Likes

unsubscribe

2 Likes

Don’t fall for the hype. To start with… Vitaly sent several exceedingly verbose emails yet only a few lines of his correspondence made it into his blog post. Ever heard the term “lies of omission” before?

I think that private correspondence should remain private, so I’m not going to be posting emails, but there are two sides to every story.

That’s exactly the impression that someone would want to create if their goal was to make it appear as if Andrew and I are somehow in the wrong for the simple act of asking this guy not to use our work for commercial purposes. Mission accomplished, I guess.

Is this is your Disqus account?

Again, you didn’t read the full email threads. There’s a reason Vitaly didn’t post everything.

Actually I’d say that reactions like yours are exactly what Vitaly wanted. I have no motive for creating any sort of fracture, but Vitaly has a clear motive for doing so. If plugin developers don’t let him use their work for free, he would have no product to sell, so he needed to pull this stunt to give himself plausible deniability if/when plugins are removed.

Let’s say someone contacts Vitaly and says: “Remove my plugins, I don’t want anything to do with miRack.” What happens then is that Vitaly has to pull those plugins from his app, which will break existing patches and potentially create unhappy customers who ask for refunds. This is probably the reason why he refused to remove the Fundamental plugins in the first place.

That’s a bit like saying the Nike logo is just two curves, so it doesn’t qualify as a trademark.

10 Likes

The fact that the person being attacked here has been blocked from posting seems a bit troubling.

4 Likes

Simplicity and good looking at the same time is not so easy to achieve… and even if it would be, it doesn’t make it ok to make profit over one’s people work.

@Vortico thanks for the detailed post, the OSS licenses are such a mess really it’s not easy to figure out which one to choose for a project and why. I think you made the right choice, regarding on how derivative projects can hurt a community. I’ll gladly release my upcoming plugins under GPLv3.

2 Likes

No one is being attacked here. The point of this post is to summarize the positive effects of Rack’s GPL license, using examples in the past of how the GPL would have prevented a lot of negative drama and emotions.
Vitaly and discussions about miRack are banned from all VCV communities because every thread will result in endless arguments that will lead to nowhere.

6 Likes

I’m just sayin’… hard to have communication in good faith when the person being spoken about has been silenced. I’m not a huge fan of censorship.

Ok, if not an attack, then certainly an attempt to speak for someone else who isn’t present. It’s not a good look.

3 Likes