nih-plug icon indicating copy to clipboard operation
nih-plug copied to clipboard

Couldn't the vst3 export be replaced by DPF's Travesty custom vst3 implementation?

Open SeleDreams opened this issue 1 year ago • 17 comments

I noticed while reading the documentation that nih-plug relies on the official vst3 API for vst3 support which binds it to the terms of the gpl license when using the vst3 api. There however is a publicly available ISC licensed version of the vst3 api named travesty that was made for the DPF project, they also have a vst2 sdk https://github.com/DISTRHO/DPF/tree/main/distrho/src/travesty https://github.com/DISTRHO/DPF/tree/main/distrho/src/xaymar-vst2 (vst 2 doesn't seem to use ISC specifically but the terms are similar)

I think those could be useful for the project

SeleDreams avatar Mar 23 '24 20:03 SeleDreams

It's not the official VST3SDK that is the problem with requiring the GPL license, it's that nih-plug uses RustAudio/vst3-sys, which is under the GPLv3 (only).

Any VST3 plugin is using a copyrighted interface by Steinberg and requires you to license with them (which is free), or don't but they you're bound by the GPL. There is no VST3 binding that doesn't violate this copyrighted interface legally, so any VST3 library or interface is bound by the Steinberg rules (so either get a free license from them for proprietary use, or use GPL).

VST2 has the same rules except VST2 doesn't have a GPL option. The only way to release a VST2 plugin is to license through Steinberg, which is currently impossible as they discontinued VST2. They don't give out new licenses. Old licenses are still valid though.

Bottom line, this is a legal issue. Ultimately I think using RustAudio/vst3-sys is to restrictive in that they don't allow the proprietary Steinberg license to be used, which severely limits the usability of nih-plug at the moment.

basdp avatar Nov 20 '24 12:11 basdp

For reference this is the issue:

https://github.com/RustAudio/vst3-sys/issues/54#issuecomment-1473665299

and the solution proposed, if I understand correctly, has been implemented but hasn't been integrated to nih_plug yet:

https://github.com/coupler-rs/vst3-rs

dathinaios avatar Nov 20 '24 12:11 dathinaios

It's not the official VST3SDK that is the problem with requiring the GPL license, it's that nih-plug uses RustAudio/vst3-sys, which is under the GPLv3 (only).

Any VST3 plugin is using a copyrighted interface by Steinberg and requires you to license with them (which is free), or don't but they you're bound by the GPL. There is no VST3 binding that doesn't violate this copyrighted interface legally, so any VST3 library or interface is bound by the Steinberg rules (so either get a free license from them for proprietary use, or use GPL).

VST2 has the same rules except VST2 doesn't have a GPL option. The only way to release a VST2 plugin is to license through Steinberg, which is currently impossible as they discontinued VST2. They don't give out new licenses. Old licenses are still valid though.

Bottom line, this is a legal issue. Ultimately I think using RustAudio/vst3-sys is to restrictive in that they don't allow the proprietary Steinberg license to be used, which severely limits the usability of nih-plug at the moment.

Travesty is not a binding to the steinberg sdk. It is a reimplementation from scratch in an mit-like license.

SeleDreams avatar Nov 20 '24 12:11 SeleDreams

Travesty is not a binding to the steinberg sdk. It is a reimplementation from scratch in an mit-like license.

Still Steinberg considers the public interface of VST3 to be under their copyright and there has not been any jurisprudence to show if that holds in court. Safe to say that Steinberg's lawyers probably know what they are doing and if nih-plug wants to grow towards a high-profile Rust audio project (which it is quickly becoming), it is not in our interest to tickle their lawyers in the wrong spots...

There are feasible options around this (see the bindings generator idea from https://github.com/RustAudio/vst3-sys/issues/54#issuecomment-1473665299), but they are currently not implemented. I feel this is the right way forward, and other libraries (outside of Rust, at least that I know of) are following this road successfully. The new official C bindings make this almost trivial, I guess.

basdp avatar Nov 20 '24 13:11 basdp

There is juridprudence if you look at Mono and .NET. Mono was an open source reimplementation of the .NET framework under a permissive license when it was proprietary. And it was fully legal

Le mer. 20 nov. 2024 à 14:10, Bas du Pré @.***> a écrit :

Travesty is not a binding to the steinberg sdk. It is a reimplementation from scratch in an mit-like license.

Still Steinberg considers the public interface of VST3 to be under their copyright and there has not been any jurisprudence to show if that holds in court. Safe to say that Steinberg's lawyers probably know what they are doing and if nih-plug wants to grow towards a high-profile Rust audio project (which it is quickly becoming), it is not in our interest to tickle their lawyers in the wrong spots...

— Reply to this email directly, view it on GitHub https://github.com/robbert-vdh/nih-plug/issues/135#issuecomment-2488544094, or unsubscribe https://github.com/notifications/unsubscribe-auth/AD4UF4O6ODEO36IEDXEBU232BSC4BAVCNFSM6AAAAABSEOXUXCVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDIOBYGU2DIMBZGQ . You are receiving this because you authored the thread.Message ID: @.***>

SeleDreams avatar Nov 20 '24 13:11 SeleDreams

There is juridprudence if you look at Mono and .NET. Mono was an open source reimplementation of the .NET framework under a permissive license when it was proprietary. And it was fully legal

Since neither of us are lawyers and nih-plug doesn't employ any lawyers, I don't think we are qualified to have this discussion. With all due respect... Believe me, I would love this to be true too! And chances are you're right, but I don't think we are in the position to take chances...

basdp avatar Nov 20 '24 13:11 basdp

There is also the actual court case between Oracle and Google about Android.

Judge Alsup issued the final verdict for both these phases on May 31, 2012. While the jury had found for Oracle regarding copyright infringement of the APIs, Alsup determined that the APIs were not copyrightable in the first place:

So long as the specific code used to implement a method is different, anyone is free under the Copyright Act https://en.m.wikipedia.org/wiki/Copyright_Act_of_1976 to write his or her own code to carry out exactly the same function or specification of any methods used in the Java API. It does not matter that the declaration or method header lines are identical.[11] https://en.m.wikipedia.org/wiki/Google_LLC_v._Oracle_America,_Inc.#cite_note-NDCalCopyright-11

https://en.m.wikipedia.org/wiki/Google_LLC_v._Oracle_America,_Inc.

Le mer. 20 nov. 2024 à 14:13, SeleDreams @.***> a écrit :

There is juridprudence if you look at Mono and .NET. Mono was an open source reimplementation of the .NET framework under a permissive license when it was proprietary. And it was fully legal

Le mer. 20 nov. 2024 à 14:10, Bas du Pré @.***> a écrit :

Travesty is not a binding to the steinberg sdk. It is a reimplementation from scratch in an mit-like license.

Still Steinberg considers the public interface of VST3 to be under their copyright and there has not been any jurisprudence to show if that holds in court. Safe to say that Steinberg's lawyers probably know what they are doing and if nih-plug wants to grow towards a high-profile Rust audio project (which it is quickly becoming), it is not in our interest to tickle their lawyers in the wrong spots...

— Reply to this email directly, view it on GitHub https://github.com/robbert-vdh/nih-plug/issues/135#issuecomment-2488544094, or unsubscribe https://github.com/notifications/unsubscribe-auth/AD4UF4O6ODEO36IEDXEBU232BSC4BAVCNFSM6AAAAABSEOXUXCVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDIOBYGU2DIMBZGQ . You are receiving this because you authored the thread.Message ID: @.***>

SeleDreams avatar Nov 20 '24 13:11 SeleDreams

Sure, but many of us don't live in the USA, including Steinberg. Again, hope you're right, but this is legal area that is very sensitive to Steinberg.

basdp avatar Nov 20 '24 13:11 basdp

Just came across this thread. So, are you saying, @basdp, that if I write a VST3 plugin using nih - I can’t distribute it commercially in the binary form even if I have a license from Steinberg? And I have to make it open source?

dtitov avatar Dec 03 '24 01:12 dtitov

Just came across this thread. So, are you saying, @basdp, that if I write a VST3 plugin using nih - I can’t distribute it commercially in the binary form even if I have a license from Steinberg? And I have to make it open source?

Yes, technically that's correct, as you use vst3-sys which is only licensed under GPLv3.

basdp avatar Dec 03 '24 06:12 basdp

I don't get it. The nih-plug library (this exact repo) is distributed under the ISC License (https://github.com/robbert-vdh/nih-plug/blob/master/LICENSE). Is it even legal if it's using another library that's distributed under GPLv3? GPLv3 is copyleft and ISC is not...

dtitov avatar Dec 03 '24 19:12 dtitov

I don't get it. The nih-plug library (this exact repo) is distributed under the ISC License.

You are only using it if you create a VST plugin. Then you are under the GPL as stated in the README of nih-plug. If you export CLAP then you are under the ISC.

dathinaios avatar Dec 03 '24 19:12 dathinaios

Makes sense, didn't think about it. Thanks!

dtitov avatar Dec 03 '24 19:12 dtitov

I think the easiest way to create VST3 plugins using nih-plug without having to license them under GPLv3 because of the whole vst3-sys dependency would be to build a CLAP plugin instead and use clap-wrapper to wrap the CLAP into a VST3.

CrushedPixel avatar Jan 23 '25 19:01 CrushedPixel

I think the easiest way to create VST3 plugins using nih-plug without having to license them under GPLv3 because of the whole vst3-sys dependency would be to build a CLAP plugin instead and use clap-wrapper to wrap the CLAP into a VST3.

clap-wrapper uses the actual vst3 sdk when you build as vst so this doesn't change anything license wise. GPL is a viral license, so the moment you compile as vst3 with it, the gpl affects the output program

SeleDreams avatar Jan 23 '25 19:01 SeleDreams

GPL is a viral license, so the moment you compile as vst3 with it, the gpl affects the output program

It does change things if you have the license agreement with Steinberg that allows you to use the VST3 SDK under their proprietary license terms. Everyone and their mothers has this license agreement as Steinberg hands it out happily.

CrushedPixel avatar Jan 23 '25 19:01 CrushedPixel

I think the easiest way to create VST3 plugins using nih-plug without having to license them under GPLv3 because of the whole vst3-sys dependency would be to build a CLAP plugin instead and use clap-wrapper to wrap the CLAP into a VST3.

clap-wrapper uses the actual vst3 sdk when you build as vst so this doesn't change anything license wise. GPL is a viral license, so the moment you compile as vst3 with it, the gpl affects the output program

Not really, the clap-wrapper generates the bindings on the fly from the official SDK. This is allowed. See the disclaimer on the bottom of their readme:

The clap-wrapper project is released under the MIT license. Please note that using the clap-wrapper project to wrap a VST3 requires either (1) you use the VST3 SDK under the GPL3 license, and as such are open source or (2) you agree to the VST3 license to generate the wrapper.

basdp avatar Jan 23 '25 19:01 basdp