mit-cml / workspace-multiselect

A Blockly plugin that allows you to drag, select and manipulate multiple blocks in the workspace.
https://hollowman6.github.io/workspace-multiselect/multi-workspace
11 stars 12 forks source link

Reconsider use of DragSelect 3 #35

Closed ewpatton closed 8 months ago

ewpatton commented 8 months ago

DragSelect 3 changed the license from MIT to GPLv3 with a commercial option. By upgrading to version 3.0.4 from 2.7.4 we may be putting undue burden on downstream users of this plugin.

halatmit commented 8 months ago

what's the potential burden?

On Fri, Jan 5, 2024 at 11:49 AM Evan W. Patton @.***> wrote:

DragSelect 3 changed the license from MIT to GPLv3 with a commercial option. By upgrading to version 3.0.4 from 2.7.4 we may be putting undue burden on downstream users of this plugin.

— Reply to this email directly, view it on GitHub https://github.com/mit-cml/workspace-multiselect/issues/35, or unsubscribe https://github.com/notifications/unsubscribe-auth/AAGAXNYMCSTVA3RF4VH6DTLYNAVJ3AVCNFSM6AAAAABBOV52UOVHI2DSMVQWIX3LMV43ASLTON2WKOZSGA3DONRYGQ2DENQ . You are receiving this because you are subscribed to this thread.Message ID: @.***>

HollowMan6 commented 8 months ago

Interesting, didn't notice their license change. After I did some research, I found out that for public websites, if one of the JavaScript libraries contains GPLv3 code, then the whole website should be open-sourced: https://www.gnu.org/licenses/gpl-faq.en.html#UnreleasedMods

But I still think we should keep using the latest version of DragSelect, as it's not us who are using it commercially. There should be no reason to stop adopting the new versions only for those companies that don't want to give credit to the authors of DragSelect.

This project depends on DragSelect heavily, so they deserve to get paid for their hard work even if those companies want to use our plugin. If someone doesn't want to pay, they should resolve these things by themselves, like patching the node_modules with DragSelect v2 and revert https://github.com/mit-cml/workspace-multiselect/pull/34/commits/c93cbd2418da51989b67737eccfdb3e58f6f84bf I will open a separate PR for including a LICENSE file that explains the situation here (the license for our codebase is Apache-2.0).

ewpatton commented 8 months ago

Interesting, didn't notice their license change. After I did some research, I found out that for public websites, if one of the JavaScript libraries contains GPLv3 code, then the whole website should be open-sourced: https://www.gnu.org/licenses/gpl-faq.en.html#UnreleasedMods

App Inventor has proprietary branding commits that are specific to MIT, so we wouldn't be able to abide by this. I also think the requirement is technically to release it under a license compatible with the GPLv3, not just "open source," and I can't easily guarantee that is true of the transitive dependencies. I expect it's probably true but it would take leg work.

Another real problem is how we are not really handling semantic versioning here. For example, if I have a package.json with:

"dependencies": {
  "@mit-app-inventor/blockly-plugin-workspace-multiselect": "^0.1.7"
}

and have previously installed that so I have the plugin that uses non-GPL code and then npm upgrade now I will have GPLed code without any warning.

This project depends on DragSelect heavily, so they deserve to get paid for their hard work even if those companies want to use our plugin. If someone doesn't want to pay, they should resolve these things by themselves, like patching the node_modules with DragSelect v2 and revert c93cbd2 I will open a separate PR for including a LICENSE file that explains the situation here (the license for our codebase is Apache-2.0).

Then we may need to consider implementing the necessary functionality within this repo and not rely on an external dependency like that.

HollowMan6 commented 8 months ago

App Inventor has proprietary branding commits that are specific to MIT, so we wouldn't be able to abide by this. I also think the requirement is technically to release it under a license compatible with the GPLv3, not just "open source," and I can't easily guarantee that is true of the transitive dependencies. I expect it's probably true but it would take leg work.

Okay, fair enough if that's for the App Inventor. I opened the PR #36 to downgrade.

Then we may need to consider implementing the necessary functionality within this repo and not rely on an external dependency like that.

If we decide to implement ours, we are literally copying and removing features from DragSelect's code since our plugin is built upon theirs. Let's not do this unless someday DragSelect no longer works for Blockly again.