north-road / slyr

A Python ESRI lyr/style file converter/extracter/parser
211 stars 40 forks source link

What license? #41

Open spatialillusions opened 6 years ago

spatialillusions commented 6 years ago

What license is this code released under? At the moment I can't find any information about that. Would be really nice if it was released under MIT or Apache for easy reuse in other projects.

nyalldawson commented 6 years ago

Oops :open_mouth:

All classes which use QGIS libraries will be GPL v2 or later (I think they are already marked as such). The rest I'm tempted to just do something ultra permissive like WTFPL

CAM-Gerlach commented 3 years ago

Hey @nyalldawson , thanks for everything you do for the QGIS community! Any progress on adding a license?

This may seem like a legal technicality, but having helped out resolving licensing issues for several large open-source Python projects (e.g. Spyder), dealt firsthand with enterprise users for which license ambiguity was a serious concern, and currently finalizing a forthcoming Python PEP that per community consensus will require all PyPI projects to formally declare an open-source license, this has become simply declaring a license now can save you and your users a lot of grief in the future. The situation gets exponentially more complicated if other contributors are involved prior to a license being added, so the sooner this is dealt with the easier it is for everyone.

The problem

Not providing a formally declared LICENSE.txt (or equivalent) creates significant legal problems (disclaimer: IANAL & TINLA), such that users conscious of this and enterprises/orgs/governments that care about open source license compliance (the primary audience for this plugin) will not be able to use it freely as you intend, along with other issues:

The solution

All of this can be easily avoided by simply adding a LICENSE.txt (or equivalent) with an OSI-approved license, after getting written/documented okay from substantive contributors (currently just @marioba ; a comment on this issue is sufficient).

GPL considerations

If it wasn't for the GPL, or you are fine licensing your own code GPLv2+, this would be the end of this comment :smile: However, if dynamic linking to GPL code is considered to trigger the GPL (which is the FSF's position and which you imply above, but is a legal gray area and some GPLed software explicitly allows), then the entire derived work as a whole must be licensed GPLv2+. You are free to license your own contributions (including any files which explicitly link to GPLv2+ code) under any GPLv2-compatible license including permissive ones, and if they are used independently from the GPLv2 code (or dynamic linking is determined not to constitute creating a derived work), then that permissive license would apply instead.

However, this does add extra a non-trivial amount of legal and practical complexity though and there is no easy and battle-tested method of doing this, so you'll want a clear motivation for doing so (e.g. other tools are likely to want to re-use portions of the code to decode ArcGIS files, without relying on QGIS or any other GPL libraries).

Problems with PD-like licenses and the WTFPL

I do caution against public-domain-like licenses in general, and the WTFPL in particular, as for software their issues make them less freely usable in practice than common very permissive licenses (MIT, BSD-2, ISC):

Recommendation

The simplest approach, which only requires adding one stock file, is to just license under the GPLv2+. However, if you do want to release your contributions in isolation under a permissive license, if maximizing the number of people able to permissively re-use your code while minimizing worry about the legal technicalities is important to you, I'd suggest the MIT License; its widely accepted and used, compatible with everything and is permissive as it gets, as the only practical requirement it imposes is distributing a copy of itself with the code.

How to implement

  1. Click this link to open a PR against this repo to add the GPLv2

  2. Get @marioba 's approval and merge it

  3. If just licensing GPL, you're done. Otherwise, you have to consider how to indicate to users and contributors that the code in isolation is also licensed under a permissive license...which is where it gets a little more complicated.

  4. Add a copy of the MIT (or whatever) license in the root in a file calledNOTICE.txt, including a brief description of what it applies to

  5. Explain clearly in the README, that you are releasing your code under the MIT/etc license (or whatever license you choose), but the package as a whole is GPLv2+

  6. Optional, but recommended: add an appropriate header (I can suggest the one we use for Spyder) to any files you wish to license individually as MIT (e.g. the ones that don't link directly to GPL libraries)

Thanks, and let me know if you have questions or I can help in any way! Thanks again for everything you do!