CanisLupus / swift-selection-search

Swift Selection Search (SSS) is a simple Firefox add-on that lets you quickly search for some text in a page using your favorite search engines.
https://addons.mozilla.org/firefox/addon/swift-selection-search/
MIT License
215 stars 26 forks source link

I would like to create a GPL 3 fork of SSS (@CanisLupus) #246

Closed cheater closed 2 years ago

cheater commented 2 years ago

Hi @CanisLupus! Recently we all thought that SPC was a fork that was going to continue the spirit of SSS. It had a bunch of improvements. However, as it turns out, the developer decided to keep the code hidden away. This essentially kills the project. I'm not saying this "to prove a point" - the developer kept issues in the project that made no sense; an open source free software license would have let me and others fix those issues on our own in a matter of minutes, and yet here we are stuck with such banal issues months later. There is no convincing the developer to either release the code or fix the issues.

I'm a skilled web and extension developer and I'd like to pick up the slack where SSS left off, but I don't want to do that if a similar thing is being risked in the future. I'd like to ask you to release SSS under the GPL 3 in addition to your already existing MIT release, so that I can release updated code with the GPL 3 license only, and greed similar to the SPC fiasco is prevented. Would you be nice enough to do that? If you don't want to do that, I will attempt to create an extension similar to SSS myself, but that's a waste of time if you'd like to release under GPL 3 instead.

Thanks and best regards!

cheater commented 2 years ago

cc @githubbapoopa

CanisLupus commented 2 years ago

Hi there! Unless I'm misunderstanding something from what you asked, or from the way MIT and GPL licenses work, I think what you are trying to do should already be possible. :) Let's see...

MIT allows you to do pretty much whatever you want with the code, as long as attribution is given to the original author(s) and a copy of the license is kept when distributing in any form. This means sublicensing is on the table. So for any changes you make or new code you build on top of SSS, you should be able to license those under GPL 3 (while the unchanged code is still under MIT).

In essence, if someone forks your repository where you have those changes under GPL 3, that person will have to abide by my license AND your license, and since GPL 3 is more restrictive they won't be able to sublicense it. That's the way I see it, at least. It could be important to do some research on your end as well to make sure.

Of course, someone can always fork "native" SSS without your changes, which has only MIT, and do anything, but that was my intention all along anyway. Grabbing SSS's code, changing everything, releasing it under a different name, and keeping the code private is perfectly fine (as long as the MIT license is still present for the original work), even if it may not be the best for everyone that likes the project. :)

So if you want to carry the work (you are all very encouraged to do so!), your part of the work can, as far as I understand, be under GPL 3.

Does this help? Let me know!

Cheers! Daniel

Gitoffthelawn commented 2 years ago

If anyone is interested in reading a long thread/discussion about an unrelated popular project that recently switched from GPL 3 to the MIT license, here you are: https://github.com/files-community/Files/issues/7625

cheater commented 2 years ago

@CanisLupus Thanks. I would like to avoid any trouble and multi-licensing and just go full GPL 3. Would you mind licensing your repository out as GPL 3? This would make things easy and prevent any uncertainty about what's licensed how.

cheater commented 2 years ago

Here's an example, if you have a file in which there is this code:

function foo(bar, baz) {
  return bar + 1;
}

and I decide that the 1 is a bug and I need to replace it with 2:

function foo(bar, baz) {
  return bar + 2;
}

...then what's licensed as GPL 3 rather than MIT? Is it just the digit 2? The expression it's in? The line it's on? The function? The file? You can guess but you can't really know. It's an academic problem and it would make it hard to prove any wrongdoings with regards to licensing, especially if someone runs a minifier / obscurer on the code like has been done in the case of SPC.

CanisLupus commented 2 years ago

Would you mind licensing your repository out as GPL 3? This would make things easy and prevent any uncertainty about what's licensed how.

I wish for SSS to stay licensed using a very permissive license. I understand the idea behind GPL but forcing open source is not what I was aiming for. GPL also has extra requirements that I would consider a hassle if I was developing something on top of it, like specifying all changes, including install instructions, etc.

Besides, even if I did change the license, all older commits would still be licensed using MIT so you could easily get 99% of code under that license. The only(?) option (even for me) is to sublicense and make future code GPL.

...then what's licensed as GPL 3 rather than MIT?

My understanding is that if someone clones your repository which has the GPL 3 license and the MIT license, they have to use both as well. Since GPL 3 forces any changes to also be licensed using GPL 3, it's fine.

If the fear is that they'd clone my repo instead, and then add your changes individually on top, then they are breaching your license. Although I'd argue that the repo might need more than changing a 1 to a 2, since that is a change multiple people could simultaneously and independently write, so it won't be possible to know if they did the fix themselves or if they cloned your repo and deleted the GPL license file. :) After making changes to your repo for a while, this doubt won't be relevant anymore.

it would make it hard to prove any wrongdoings with regards to licensing, especially if someone runs a minifier / obscurer on the code like has been done in the case of SPC.

True! You also can't really know if a non-open-source project uses some GPL code. So in the case of an addon with hidden or minified code, they could use GPL licensed code and you'd hardly know. The difference, of course, is that for GPL that's illegal and for MIT it's fine.

But in summary: since one can use code from older SSS commits that use MIT, making future changes GPL is the way to go.

cheater commented 2 years ago

That's not really how that works. There are four contributors to the SSS repository: you, igorofc, Jackymancs4, and Gitoffthelawn.

Every person who has contributed code to the repository still owns the original intellectual property. This means even if they gave the whole wide world a license to that code, they can still give the whole world another license to use that code, and those two legal acts are completely irrelevant to each other. So here's how it would work:

  1. I ask "can you license this code out under GPL 3 please?"
  2. You say "yes, here you go".
  3. Now, your commits are available under the GPL 3 license. They are still available under the MIT license.
  4. Anyone cloning from your repository, which licenses them under MIT and GPL 3, can use the MIT license alone, because you haven't added any commits that require GPL 3. They do not need to carry over the GPL 3 license. The license is a statement from /you/ that someone else /may/ but /doesn't have to/ carry on that license.
  5. Anyone cloning from your repository can also use the GPL 3 license alone in similar fashion. I would do that. Then, my repository would be GPL 3 only.
  6. You cannot re-license the code you have in your repository in such a way that both GPL 3 and MIT have to be carried over to clones at the same time. You'd need to ask all the contributors, and I believe that it breaks the MIT license as well.

There are only 4 contributors to the repository - and it looks like they can all be contacted either via GitHub or in another way. If they all say "yes" to GPL 3 then that's that.

You also can't really know if a non-open-source project uses some GPL code

Actually, you can! And it's been done before. It's especially easy with Firefox addons: they have to contain JavaScript code which, even if minified, will still have the same code structure. So what I'd do is I would minify my code and their code using the same tool and look at how different they are. That's a way to prove what's going on beyond any doubt. But GPL use has been even proven in code that's compiled to binary.

all older commits would still be licensed using MIT so you could easily get 99% of code under that license.

Yes, of course, initially there would be 100% parity between GPL 3 and MIT. But as time goes on enough changes would happen that code available under MIT would not be used in future versions, at which point, if someone wants to do the same thing SPC did, they're mostly out of luck and would need to replicate substantial amounts of work. At which point you can argue that the code they wrote to replicate the GPL 3 code is inspired by the GPL 3 code, making it GPL 3 itself. Clean room development is an extremely difficult thing to prove in such situations and anyone trying to copy-cat a GPL 3 code base feature by feature is going to fall into that trap. This is precisely to prevent the SPC scenario where someone makes a dumb clone of the code, closes the source, and does who knows what with it, meanwhile using SSS's popularity to install unknown code on people's computers and denying even basic maintenance or fixes.

I intend to do substantial work on the code, not just one or two bug fixes, so that sort of preventive outcome should be reached in due time.

cheater commented 2 years ago

Of course it goes without saying that while all of this is happening, SSS itself still remains available under MIT, and people can keep on using it as a base of their MIT-licensed projects.

CanisLupus commented 2 years ago

Hi!

That's not really how that works.

That may very well be true but...which part? :)

This means even if they gave the whole wide world a license to that code, they can still give the whole world another license to use that code, and those two legal acts are completely irrelevant to each other.

Yeah, that works. This repo could have two licenses if everyone agreed, but I'm honestly failing to see the advantage of doing this.

Isn't the problem the same even if SSS's repository is available under "either MIT or GPL"? Cloning a "fully GPL" repo and making changes to it as GPL is pretty similar to cloning an MIT repo and making changes to it as GPL:

  1. If someone clones your repo to make changes, they have to use GPL either way.
  2. The original SSS code is still available under MIT either way, so people can still use that code freely.

i.e. Creating a GPL license in addition to the MIT one, so that you can pick, doesn't seem like it will do anything.

I may be missing something, though!

What is your objective? Avoiding people creating forks that make changes and then not posting their code? You can do that with a new repo that has changes under GPL. But either way, we can't avoid (nor do I want to) people using the original code in that way.

But please let me know if I'm getting something wrong.

cheater commented 2 years ago

Daniel can you just say "yes"

we've been at it for a week

it doesn't hurt you

CanisLupus commented 2 years ago

Daniel can you just say "yes"

Interesting way to convince me.

I acknowledged the possibility that I was not understanding something with regards to licenses, but you have decided to ignore what I said and not provide a reason why you can't do exactly what you want with the current license.

So no, I'm not going to "just say yes" and accept changes to this project (which also require agreement from other people) if it seems like you can already do what you need on a fork.

we've been at it for a week it doesn't hurt you

Your tone is uncalled for, but sadly not surprising. Trust me, by now I've also spent way more time than I wanted discussing this.

cheater commented 2 years ago

I don't get it - what is the problem with saying yes to the request? I just want future work to stay protected from code parasites like SPC. Either your or my guesses into legalities presented in this thread are just guesses, meanwhile adapting a more protective license protects the work in full.

cheater commented 2 years ago

Eh, holy crap, never mind, why am I even wasting my time here 😂 it's kind of obvious you don't care, I'll just take my effort elsewhere. Bye!

Gitoffthelawn commented 2 years ago

@cheater Part of being an adult is accepting that when other people say "no", for whatever reasons they have, we respect that they say "no". Depending on the circumstances, it's often fine to present your case to encourage them to alter their decision. But if they do not, then it is best to be respectful and honour their decision.

cheater commented 2 years ago

Part of being an adult is not forcing others into your preconceptions of how social exchanges work.

If a guy comes to you and says "hey, let me take this project you've abandoned years ago, just let me make sure no one else leeches off it like they've been doing, all you have to do is say yes", sure, you can say no. But then that person can also call you a fool, and it's up to everyone else to make up their mind who's lost something here - personally, I haven't lost anything, meanwhile this decrepit project can continue being dead. I'm out of this conversation! Bye!

cheater commented 2 years ago

(unsubscribed)