Re: Licensing and pip questions

James Scholes

Looks to me to be prohibitively heavy-weight.
Heavy-weight, perhaps, depending on the size of the dependency tree, how many add-ons a user has with external dependencies, etc. But I'm not sure "prohibitively" is true. What dependencies do you need to include?

The problem with the approach you've suggested is that different add-ons will need to depend on different versions of external packages. So ultimately, a user will end up needing to download and store them regardless. I do think there is room for a dependency management system, and it has been discussed previously. But it is a non-trivial problem.


James Scholes

On 14/09/2020 at 2:48 am, Omer Zak wrote:
On Sun, 2020-09-13 at 23:42 -0700, Joseph Lee wrote:
Regarding licensing question, as some may say that add-ons are
derivatives of NVDA, they must be licensed under GPL 2 as NVDA itself
is licensed under GPL 2. One possible workaround could be stating in
your add-on file headers that the add-on is licensed under GPL, or
perhaps GPL 2 or later. Note that not all dependencies NVDA uses are
licensed under GPL, so one must be careful of that. More info can be
found in NVDA license file (NVDA menu/Help/License).
Thanks for the reference to the license file.
I remember seeing mentions of proprietary plugins/add-ons.
It is my understanding from reading the above that those plugins work
via the exception to GPLv2 which permits use of such plugins under
certain conditions.
So I understand that my own plugin has to be licensed under GPLv2, but
I'll be allowed to license few data files under GPLv3+ (they contain
materials from GPLv3+ licensed projects).

As for including external modules, you must include them manually as
part of your add-on (Resource Monitor comes with Psutil for this very
Looks to me to be prohibitively heavy-weight.
Did anyone request a NVDA feature which would work like the following:
1. NVDA runs inside a virtualenv.
2. When installed, plugins may request that certain modules be
installed from PyPI via pip.
3. A module in NVDA manages dependencies of modules installed via pip
in behalf of add-ons, and blocks uninstallation of pip-installed
modules unless all add-ons needing them have been uninstalled.

-----Original Message-----
From: <> On Behalf Of Omer Zak
Sent: Sunday, September 13, 2020 9:50 PM
To: NVDA Addons Mailing List <>
Subject: [nvda-addons] Licensing and pip questions
I apologize if the following questions are FAQs but I did not find
answers in any NVDA documentation that I know of.
I'll appreciate being pointed at answers in NVDA's documentation if
any, rather than getting direct answers to my questions.
1. What is the policy concerning licensing of NVDA add-ons?
Does NVDA require that all its add-ons be released under GPLv2+, or
am I allowed to release my add-on under GPLv3+ ("GPLv3 or later")?
2. I want my add-on to use a module from PyPI.
When developing, I can build a virtualenv and use 'pip install' to
install the add-on module in the virtualenv.
However, in end-user's NVDA installation I have no access to his
How to build my add-on to ensure that the end-user will have that
module in his system?

Join to automatically receive all group messages.