Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

License Compatibility with GPLv3/AGPL #166

Closed
ghost opened this issue Jun 18, 2017 · 12 comments
Closed

License Compatibility with GPLv3/AGPL #166

ghost opened this issue Jun 18, 2017 · 12 comments

Comments

@ghost
Copy link

ghost commented Jun 18, 2017

Actual Behavior:

  • What is the issue? (*)
    Current licensing restricts SDK use in A/GPLv3-or-later projects
  • What is the expected behavior?

Versions: (*)

  • Freemius SDK Version: 1.2.1.7.1
  • WordPress Version: n/a
  • PHP Version: n/a

Plugin / Theme: (*)

  • Name: Hyperdrive
  • Slug: hyperdrive
  • Freemius ID: 1109

Additional Information:

  • Browser Type: (*) n/a
  • Browser Version: (*) n/a
  • OS: (*) n/a
  • Stack Traces:

Per section 8 of the GPLv2:

Each version is given a distinguishing version number. If the Program
specifies a version number of this License which applies to it and "any
later version", you have the option of following the terms and conditions
either of that version or of any later version published by the Free
Software Foundation. If the Program does not specify a version number of
this License, you may choose any version ever published by the Free Software
Foundation.

Because a license version is specified in this library, and or later is not applied, the SDK is not compatible for use as a lib with with GPLv3-or-later and AGPLv3-or-later projects.

The following license compatibility matrix on the GNU sums it up quite nicely:
https://www.gnu.org/licenses/gpl-faq.en.html#AllCompatibility

Possible directions to increase licensing compatibility for plugins and themes not using the exact same version of the GPL used by this SDK include updating the SDK thusly:

  • Apply GPLv2-or-later as described in section 8 copied above
  • Remove the GPL version number as described in section 8 copied above
  • Use GPLv3-or-later as shown in the compatibility matrix, second row heading
  • Use AGPLv3-or-later as implied in the compatibility matrix (see AGPL note just before table)
@ghost ghost changed the title GPLv2 Not Compatible with GPLv3-or-later or AGPLv3-or-later License Compatibility with GPLv3/AGPL Jun 18, 2017
@ghost
Copy link
Author

ghost commented Jun 19, 2017

@vovafeldman as a stop gap, do I have your permission to apply GPLv2-or-later to my copy of this software? Without application my plugin is blocked from using this SDK.

@cliffordp
Copy link
Contributor

Yikes... guess I never really looked too hard, but I also have "GPLv3 or later" plugins integrating Freemius.

Good catch!

@vovafeldman
Copy link
Contributor

@jhabdas based on the wp.org guidelines, any GPL-compatible license for 3rd party libraries is acceptable. So I'm not sure I understand what is the issue? We are actually considering to switch a license to MIT so developers will be able to use it without the restrictions of the GPL.

@ghost
Copy link
Author

ghost commented Jun 23, 2017

@vovafeldman Thanks for your note. This is not a WP concern insomuch as it is a GNU compatibility issue within their own licenses and regardless of where used.

As referenced in the supporting documentation in the OP, GPLv2 is not compatible with GPLv3 or later or the GNU AGPL (but GPLv2+ is). As a result, I look forward to seeing a compatible FOS license made available.

If you're considering MIT please also consider ISC as it is the functional equivalent of MIT but with less words - making it take up less space when combined with other licenses in a license header atop a file, e.g.

 * ...
 * 
 * You should have received a copy of the GNU [licensetype]
 * along with [programname].  If not, see <[licenseurl]>.
 *
 * This file incorporates work covered by the following copyright and
 * permission notice:
 *
 *     Copyright (c) [year], [fullname]
 *
 *     Permission to use, copy, modify, and/or distribute this software for any
 *     purpose with or without fee is hereby granted, provided that the above
 *     copyright notice and this permission notice appear in all copies.
 *
 *     THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
 *     WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
 *     MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
 *     ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
 *     WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
 *     ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
 *     OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
 */

For more information on ISC and FOS licenses in general, please see the following resources:

@vovafeldman
Copy link
Contributor

@jhabdas can you just explain me the problem in simple words. If I understand correctly, you say that GPLv2 is not compatible with GPLv3 or later, and why is that a problem for you? or anyone else?

I'm just trying to make sure I understand the issue.

@ghost
Copy link
Author

ghost commented Jun 23, 2017

@vovafeldman I cannot speak for anyone else. And I'm not a licensed attorney (that may change in a few years) but I can with confidence tell you I cannot use your library under current license in my plug-ins or themes licensed under GPLv3/AGPLv3/GPLv3-or-later/APGLv3-or-later until your license is modified as outlined in the OP. Doing so would cause a licensing incompatibility as shown in the GNU License Compatibility Matrix shared above.

@vovafeldman
Copy link
Contributor

@jhabdas Thanks a lot for all the details! We will have to do some reading to learn about the different licenses, potentially consult with an attorney, we can't just switch the license without understanding the implications.

@ghost
Copy link
Author

ghost commented Jun 24, 2017

@vovafeldman Whatever you gotta do. As mentioned, I'd love to be able to use this library. If you need any pointers to speed up your research see my path to enlightenment here: https://github.com/comfusion/hyperdrive/issues/41. Which lead me to create the following:

Tools/Libs (MIT/ISC) <- Apps (Choose A License) -> Plugin/Theme ("[A]GPL-[2|3].0" with + or or later or or any later version, or version number omitted, depending on specific language used and as defined by the terms of the individual GNU GPL or GNU AGPL license applied).

Gotta love the GPL!

@ghost
Copy link
Author

ghost commented Jul 2, 2017

Nudge. @vovafeldman with your permission I will fork this and apply an updated license to my fork so it's compatible with GPLv3/AGPL. Please let me know. If you have legal questions you can get quick response on https://opensource.stackexchange.com and avoid the fiduciary headache.

@vovafeldman
Copy link
Contributor

@jhabdas we are updating the license to GPLv3 as part of the upcoming release.

@ghost ghost closed this as completed Jul 17, 2017
@ghost ghost reopened this Jul 17, 2017
@ghost
Copy link
Author

ghost commented Jul 17, 2017

Thanks so much for this @vovafeldman. Moving to GPL-3.0 is great as it helps others update their GPLv2 licenses to either use the or any later version in their software to use the SDK, which is good as it enables then to automatically update plugins and themes to future versions of the GPL without having to think about licensing again (for the most part).

I reopened this as I noticed the license headers in the develop branch are still showing GPL-2.0 identifiers, which you'll want to update to GPL-3.0 or GPL3.0-or-later to clean up any ambiguity.

Thank you for not becoming defensive or angry with me when I opened this issue (many do, as they seem to go through the stages of grief). Strong copyleft licenses like the GPL are some of the least sexy licenses out there, as I mention in the following article on Hacker Noon which you may find an entertaining read:

https://hackernoon.com/introducing-the-btc-license-28650887eb11

@vovafeldman
Copy link
Contributor

@jhabdas updated all references to GPLv3

@ghost ghost closed this as completed Jul 25, 2017
vovafeldman added a commit that referenced this issue Aug 6, 2017
* feature/fs-theme-mode-v7: (308 commits)
  [helper-method]
  [fix] [minor]
  [add-ons] [features] [enhancement] Adjusted the feature comparison and pricing tab for add-ons without an annual prices.
  [add-on] [modal] [enhancement] Enriched the modal for freemium add-ons.
  [add-ons] When an add-on has both free and paid plans, show the prices range from "Free - {minPrice}".
  [add-ons] [optimization] Use the new endpoint that returns the add-on's plans, pricing, and features, all in one request.
  [license] Updated license from GPLv2 to GPLv3. Closed #166
  [sdk-starter] [enhancement] Added special protection for renaming the SDK's folder name (will auto identify the new folder).
  [themes] [account] Don't show the Account for free WP.org themes without any paid plans.
  [premium-updater] [cache] [fix] Since the default API cache was set to 24 hours, together with the WP 12 hours updates cache, users with a valid license had to wait up to 36 hours to see an update. Therefore, enforce a 1-hour cache when checking for an update, which will reduce the wait time to up to 13 hours on the Account page. Also, if forcing an updates check, flush the cache to immediately see any updates.
  [api] [cache] [enrich] Enriched the API caching logic to optionally check a different expiration period than the one was originally set when the cached value was set.
  [cache-manager] [enrich] Enriched the cache manager logic to store the time the cache was created and also enriched the has_valid() method to optionally check if the cached value didn't expire based on an explicit expiration period.
  [css] [compile]
  [css] [minor]
  [tabs] [add-ons] Hide the add-ons page title when running within a tab context.
  [sections] [ui] [minor] Added a special styling class to the FS sections.
  [customizer] [upsell] [trial] [fix] Adjusted the upgrade link when running in a trial promotional period.
  [customizer] [upsell] Added "support" features based on the plan configuration.
  [customizer] [upsell] [feature-description] Added tooltips to the features that have a description.
  [tabs] [class] Added classes to FS added tabs for identification and consistency with the submenu items classes.
  ...

# Conflicts:
#	includes/class-freemius.php
#	includes/class-fs-api.php
#	includes/class-fs-plugin-updater.php
#	includes/fs-core-functions.php
#	includes/fs-essential-functions.php
#	includes/fs-plugin-info-dialog.php
#	includes/i18n.php
#	includes/managers/class-fs-admin-menu-manager.php
#	includes/sdk/FreemiusWordPress.php
#	require.php
#	start.php
#	templates/account.php
#	templates/add-ons.php
#	templates/auto-installation.php
#	templates/billing.php
#	templates/checkout-legacy.php
#	templates/checkout.php
#	templates/connect.php
#	templates/contact.php
#	templates/debug.php
#	templates/debug/scheduled-crons.php
#	templates/forms/deactivation/form.php
#	templates/forms/deactivation/retry-skip.php
#	templates/forms/license-activation.php
#	templates/forms/optout.php
#	templates/forms/resend-key.php
#	templates/forms/trial-start.php
#	templates/pricing.php
This issue was closed.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants