nvaccess / nvda

NVDA, the free and open source Screen Reader for Microsoft Windows
Other
2.04k stars 625 forks source link

Consider relicensing NVDA as GPL3+ #11548

Open codeofdusk opened 3 years ago

codeofdusk commented 3 years ago

Is your feature request related to a problem? Please describe.

Describe the solution you'd like

Hold a referendum to move NVDA to GPL version 3 or later, similar to Dolphin and Wikipedia.

Describe alternatives you've considered

Keep NVDA at GPL version 2, using inter-process communication instead of linking to interface with libraries licensed under incompatible terms. I imagine this will have performance and/or maintenance costs.

feerrenrut commented 3 years ago

A lot of development work to provide reasonable performance and low maintenance costs can be done in the time it will take to gather the approvals required to re-license NVDA. Given you haven't actually explored the problems involved, investigating using a separate process is the pragmatic approach.

We would first have to decide if we really wanted to move GPL 3, other notable projects such as the Linux kernel refuse to use GPL 3.

While it would be far from ideal, we could move espeak into a separate process also.

Another alternative: Look for or create a GPL2 (or compatible) implementation of the Myers diff algorithm, there is one in xdiff I found quickly: https://github.com/git/git/blob/b06d3643105c8758ed019125a4399cb7efdcce2c/xdiff/xdiffi.c#L54

feerrenrut commented 3 years ago

Rather than re-license, we could add an exception for required libraries: https://www.gnu.org/licenses/gpl-faq.html#GPLIncompatibleLibs

In order to do this we would need the permission of of all copyright holders. I'm not sure we want to go down this path, but we could ask copyright holders to assign copyright to NV Access https://www.gnu.org/prep/maintain/html_node/Copyright-Papers.html allowing NV Access to make changes as necessary. This would likely be a long process, and judging by the results of other projects, it's unlikely that all contributors can be contacted. Other projects seem to have reached a point where "enough" of the code copyright has been assigned.

I don't think we should do this to be able to introduce one particular library. But it is a discussion worth having in a more general sense. Could you please update the initial description to make it more general?

codeofdusk commented 3 years ago

Rather than re-license, we could add an exception for required libraries

This concerns me, as we might need to contact all copyright holders repeatedly to add exceptions. Switching to GPL3+ would solve the incompatibilities with DMP and Espeak (in particular) and allow more open-source libraries to be used in general.

Any reason why NVDA was licensed as GPL2 (not GPL2+)?

feerrenrut commented 3 years ago

This would be called a Contributor License agreement an example of one: https://cla-assistant.io/discourse/discourse

One simple way of doing this is with: https://cla-assistant.io/

feerrenrut commented 3 years ago

This concerns me, as we might need to contact all copyright holders repeatedly to add exceptions.

@codeofdusk it seems you missed this bit:

but we could ask copyright holders to assign copyright to NV Access

IE with a CLA as per my last post.

XLTechie commented 3 years ago

For years, I have wondered the same thing as @codeofdusk: why was NVDA licensed originally under GPL 2, when even at that time GPL 2 was already pretty long in the tooth, and alternatives were available?

Having that well understood might enable this discussion to progress more effectively.

feerrenrut commented 3 years ago

Any reason why NVDA was licensed as GPL2 (not GPL2+)?

GPL3 was not created until 2007. However I suspect the current wording of the license (GPL 2 only vs GPL 2 or later) came from following Torvolds approach with Linux and other software. There are some good reasons to carefully consider whether to allow GPL 3, but Torvolds will do a better job of explaining than I. We would need to consider carefully if these reasons applied to NVDA, and I'm not sure we are willing to do that now.

CLA's from contributors would allow us to make that decision later. It would allow us to add library exceptions, move to GPL3 or choose a different license if it turned out that GPL 3 was not appropriate.

LeonarddeR commented 3 years ago

If a license switch is considered, I think the possibility to dual license should also be taken into account.

LeonarddeR commented 1 month ago

Update: Started https://github.com/nvaccess/nvda/issues/16633 instead