robbert-vdh / nih-plug

Rust VST3 and CLAP plugin framework and plugins - because everything is better when you do it yourself
ISC License
1.78k stars 151 forks source link

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

Open SeleDreams opened 8 months ago

SeleDreams commented 8 months ago

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

basdp commented 5 hours ago

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.

dathinaios commented 4 hours ago

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

SeleDreams commented 4 hours ago

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.

basdp commented 4 hours ago

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.

SeleDreams commented 4 hours ago

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: @.***>

basdp commented 4 hours ago

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...

SeleDreams commented 4 hours ago

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: @.***>

basdp commented 4 hours ago

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.