Cuperino / QPrompt-Teleprompter

Teleprompter software for all video creators. Built with ease of use, productivity, control accuracy, and smooth performance in mind.
https://qprompt.app
GNU General Public License v3.0
361 stars 24 forks source link

NDI Output #41

Open jmggs opened 2 years ago

jmggs commented 2 years ago

The ability to have NDI output on the prompter. The SDK is free https://www.ndi.tv/sdk/

Cypris2010 commented 2 years ago

I Also would vote for this feature, if voting ist a thing here ;)

Cuperino commented 2 years ago

Thanks for the upvote. Including you, 7 people have requested NDI support.

Now, there has been a lot of discussion regarding NDI support over at our Telegram chat. I'll copy the most important messages here for everyone to read.

Telegram discussion

On January 18, 2021 Tomer asked

And about NDI. There is any interest in that?

@Cuperino in reply to Tomer

There's one issue with NDI tho, and it is NDI's License Agreement. I'm no lawyer, but in my interpretation of the license, I'm certain that it is not compatible with the General Public License (QPrompt's License), primarily because it requires me to impose a series of restrictions that the GPL doesn't allow; and because it limits the kind of derivative works that can be made, tho I think both licenses interpret the work "derivative" differently, so this might not be an issue. Either way, with the first aforementioned factor is enough for it to be incompatible.

There are workarounds that could be used to make use of Newtek's SDK. One of such workarounds consists of offering QPrompt under two different licenses. NDI support would be limited to the users who choose to use the compatible license. The license in question doesn't have to be a proprietary license, but it needs to be more lax in its requirements to defend the openness of the source code and it needs to enable me to impose additional restrictions on QPrompt's users.

I'm facing a similar situation when it comes to distributing QPrompt on Apple's App Store... The GPL license is not compatible with Apple's distribution requirements. The workaround to having VLC Media Player, which is also GPL software, available on iOS was to dual license it under the Mozilla Public License. I don't know whether the MPL would help in this situation. Nevertheless I doubt it would because I read on VideoLAN's forums that Rémi Denis-Courmont, one of VLC's developers, wrote NDI is "license-incompatible with VLC".

A "soft-copyleft" license could do the trick, I'm not sure. But I'm decided on not releasing QPrompt under any "soft-copyleft" license, because "soft-copyleft" doesn't require people making derivative works to share their changes to the source code, and I want those changes and improvements to be available to everyone who wishes to use them, including me.

The simplest, and safest solution in my opinion, is offering a version of QPrompt with NDI support under a proprietary license. This would normally not be an option for community driven open source software, as not all contributors would agree to this. That is not, however, the case with QPrompt. First, because I'm currently the sole copyright holder, and copyright holders decide how to license. Second, because for code contributions to become a part of QPrompt, their authors must give me license to re-license and sub-license their contributions however I see fit.

There are some limitations to using a proprietary license... Without going into much detail (unless you want me to go into more detail), I'm only able to offer QPrompt under a proprietary licenses for Windows, Mac, and Linux. Proprietary versions for iOS and Android are not an option at the moment. They could be, but I'd have to have to reach an expensive commercial license agreement with two separate entities (The Qt Company and KDE e.V.), who hold the rights to the libraries used to create QPrompt. Also, I think KDE e.V. may not be interested in reaching an agreement if the proprietary version were to offer functionality not present in the GPL version. Therefore, only Linux, Mac, and Windows versions of a proprietary version of QPrompt could possibly offer NDI support for the foreseeable future. Please let me know if you think this would be a problem.

In case you're having worries about QPrompt going proprietary, there's no need. QPrompt is and will always be free software. I do plan on monetizing it in various different ways, because I want to make its development self sustaining without relying on the development of a proprietary version. QPrompt itself will always be free software as defined by the Free Software Foundation.

If you're having worries about QPrompt never getting NDI support... It won't. I would include NDI support in a proprietary spin of QPrompt that I've been prototyping for a few months. This spin would focus on needs that don't normally extend outside of TV studio environments, while QPrompt focuses primarily on the needs of independent creators. The spin would not be free of charge, but I plan on pricing it competitively.

With regards to when said spin would be available, I will say: I don't know. Not soon. I haven't fully figured out how to replicate some of the basic functionality already present in QPrompt; the current prototypes have UIs that are almost completely different. Then there's the fact that the spin isn't as big of a priority as improving tablet support; although it could become one later on.

Juan Pablo Lorier in reply to @Cuperino

Hi Javier, I think that having support for Linux, Windows and MacOS is more than enough. About NDI, maybe you can take a look at ffmpeg and OBS ways to integrate it. Both are open so they had to go through this also to support NDI.

@Cuperino in reply to Juan Pablo Lorier

Looked into it Juan Pablo. NDI's lawyers did something very clever. All the header files used to incorporate the library are licensed under the MIT license. This creates a layer that separates the "Product" from the "SDK", enabling developers to make use of the SDK without incorporating third party proprietary code into their software. Open source software can then use this to avoid including proprietary code in their source code. This, and the SDK's License Agreement is why all of those open source programs require the user to provide their own copy of the SDK when compiling from source.

In other words, it is possible to add support for NDI and for QPrompt to still be open source under the GPL.

Keep in mind, not all distribution options will be able to incorporate NDI support because packaging QPrompt with the NDI SDK would make said package nonfree software. The key in those cases is offering both things in separate packages and having the option to install one or, if possible, both.

Here's a copy of NDI's License Agreement from the date of the chat.

Outcome

With each QPrompt release we have to create and test 9 different variations of the program for 3 different operating systems, two different architectures, and their various distribution methods, and this number is bound to continue growing. Because of this, I want to keep the number of distribution options as low as possible. Maintaining free and nonfree versions of packages would double the already high number of packages. An alternative is for QPrompt to be only available in only one of those variations on some platforms; nevertheless, that would mean the users of one platform would have advantages over the users in other platforms, thus this should be avoided.

Nothing is set in stone, but what I'm currently considering is making two versions of the program and fully supporting them on most systems and distribution methods. One of such versions would be nonfree and paid for, but not necessarily proprietary. This approach would help make QPrompt's development sustainable and facilitate compliance with the restrictions imposed by NDI's license agreement without necessarily adding additional inconveniences on users, such as having to compile the software themselves to enjoy NDI compatibility. Distribution methods that do not allow nonfree software would simply not deliver the nonfree versions of QPrompt.

Cuperino commented 2 years ago

To gain better understanding of the "free" and "nonfree" terminology, I suggest reading the following article:

Categories of Free and Nonfree Software https://www.gnu.org/philosophy/categories.html

Distributing QPrompt with NDI libraries included would make the distributed software nonfree software due to the additional restrictions I'm required to impose on users through the license agreement.

Cypris2010 commented 2 years ago

Thank you for the info.

In the case of OBS you need the NDI Tools to run the NDI-functions. Not the SDK. But I think that is meant.