marceloprates/prettymaps

Licence

worldpotato opened this issue · 16 comments

I fully understand the change of the licence and absolute support it. But I don't think CC is not the correct one since it is more for art and scientific papers etc.

See githubs desciption:
The most common license for Open Access scientific publications. Not recommended for software.

I propose GPL 3.0

Dear Felix,

Thanks so much for the tip and for the support. The past two days have been very emotionally difficult to me due to this issue. The license you suggested does seem interesting, but I'll try to learn more about it before changing. What I worry about is that according to what I've heard, people are more likely to credit the creators when you use CC as compared to GPL.

Just chiming in here to say that CC license are generally accepted as not appropriate for software.

They are a good candidate for writings (e.g. The content, not the code base of a web site) and other artistic outputs.

This website has an easy to use guide for choosing licenses depending on your needs.

https://choosealicense.com/

I know that cryptoart is something new for the open source community to deal with, but I'd appreciate tips on how to protect the prettymaps project from being used to sell NFTs without harming people who want to use it to sell prints, and also ensure that the project is credited. If there's no way of conciliating 1. letting people sell prints and 2. forbiding NFTs I may have to forbid any commercial use of the tool.

You might need to institute a dual licensing requirement. This is pretty common; e.g. a website's codebase is under GPL-3.0, but the content (art and writing) is under CC-4.0-by-SA. In this case, perhaps the codebase for prettymaps should be under a license appropriate for software (e.g., GPL-3.0, Apache, MIT, depending on how permissive you want it to be), whereas the output of the project, the maps, are under CC or something. This should be possible, although I would suggest checking with some expert opinions or similar projects out there to see how it is implemented.

@thewchan good idea with the dual licensing.

A good start could be asking the guys in r/opensource if they knew a similar project.

Thanks @worldpotato !

The reddit post is here in case you're interested.

Actually the post has been removed because I don't have enough karma :(

It got remove because of the karma requirements. I send you a PN in reddit. I think I can post it there.

Thanks so much, @worldpotato !!

@marceloprates I really feel for your situation here, and would like to try give some guidance.

Disclaimer, I'm not a lawyer, but I've studied software copyright and licensing quite extensively, so I'm pretty certain what everything I say is correct:

Firstly, I genuinely feel for you, and am sorry for the situation you're in. I can only imagine how crappy it feels to put so much passion into something, which someone else then monetises in a way you disagree with, and refuses to acknowledge you. However (and I really hate to be the bearer of bad news here), I genuinely don't think you actually have any options here. Allow me to explain:

  • This software was previously licensed under the MIT license. The MIT license grants essentially unrestricted rights to use, modify, distribute, etc... the software, with only one single condition: The copyright notice must be included in all copies of the software.
  • The MIT condition about the copyright notice only applies to redistribution of the software, not to use of the software.
  • The MIT license places no restrictions on how the software is to be used. Anyone using the software under the license can use it for any reason whatsoever.
  • As an extension of my previous point, the MIT provides no conditions or restrictions whatsoever for the output of the software. The actual copyright of the outputted images is a confusing legal gray area that hasn't yet been tested in court, but it's highly likely that the output would be considered to be owned by the person who ran the code to generate them. The author of the code would not be considered the copyright owner of the output any more than a camera manufacturer owns the images taken with the devices they sell.
  • In summary, you do not have any legal claim over images generated by others using your MIT licensed code, and furthermore have no legal right to place restrictions on the use of software licensed under MIT. Thus, there is no way for you to legally prevent people from creating NFTs of maps generated using your MIT licensed software.

OK, so that's the MIT stuff, but what about changing the license? You've already changed it once now to CC-BY-NC-4.0, and now are discussing the option of changing it to GPL. Well, that wouldn't really solve the problem either:

  • The MIT license is a perpetual license agreement, which is valid indefinitely.
  • You absolutely do have the right to change the license of the software, but only for newly released versions.
  • You do not have any legal right or ability to change the license of existing versions of the software.
  • In other words, people have the legal right to keep using all of the code from commit 9091bd4 and older under the MIT terms, as described above, including selling NFTs.

On that note, some of the stuff in your readme is unfortunately incorrect and not enforcable:
... I have decided to change my license to Creative Commons (CC-BY-NC-4.0) which requires you to credit it everytime you use it and forbids you to use if for commercial purposes. - Unfortunately, you have misunderstood the license:

  • Others have already said this, but CC licenses aren't designed for software, and a lot of the language in the license is vague and unclear when it comes to software. I recommend changing to a proper software license.
  • The CC license mostly pertains to copies of the work (remember that the "work" here is the software, not the art). It provides restrictions related to redistributing the software, not really to using the software. (Again, this is a consequence of it not being a proper software license, since you can't really "use" art, you can usually just observe it, so applying restrictions on using a painting for example would be weird, and thus the CC doesn't apply any restrictions to use)
  • The CC license you picked does prevent commercial distribution of the software itself, thus preventing anyone from selling a copy of the software for example, but also does not provide a restriction on the use of the software or the output of the software.
  • In summary, the CC does not require people to credit the software whenever they use it, and only use it for non-commercial purposes. It only requires people to credit the software when they distribute it, and prevents them from selling a copy of the software itself.

The printed message on the figures crediting OpenStreetMap and my repository, included by default, is mandatory. - Again, this is not legally enforceable in any way. Both the MIT and CC explicitly permit modification of the software, and unrestricted use of the software, thus anyone is in their rights to remove those messages, either manually, or by modifying the code.

I do not authorize people to sell NFTs using prettymaps - Again, I understand your frustration here, but the licenses you picked do not include this clause, and thus the legal contract that you enter into with every user of your software does authorise them to sell NFTs of prettymaps output.

So with that bleak discussion out of the way, here's what I'm actually recommending for you:

  • Accept the unfortunate reality that those NFT sellers still have the right to continue using the MIT versions of your software, and you have literally no recourse or ability to prevent that. That ship has sailed.
  • Decide if you still want future software versions to be open source. If you do, you have to allow the NFT sellers to continue using future versions of your software. See part 6 of the open source definition: The license must not restrict anyone from making use of the program in a specific field of endeavor. For example, it may not restrict the program from being used in a business, or from being used for genetic research.. In other words, open source inherently requires you to allow using your software for NFTs.
  • If you do want to be open source moving forward:
    • Change the license to AGPL V3. This is a license specifically designed for software, so it's more appropriate than CC. And it applies the strongest restrictions possible for open source. The main benefit of this license is that anyone distributing the software, or allowing others to remotely use the software through a network service, must also share the source code of any changes they make to the software, and must include the copyright notice with copies of the software (not the output of the software). With this license, the NFT sellers are still permitted to continue though, and still do not need to add credit for the generated images.
    • Make your own app that makes it super simple for people to generate their own beautiful maps. Currently you need to download the software, know how to setup python, etc in order to use prettymaps. You could create a web app or mobile app that makes this super easy for a layperson though. This would undercut the NFT sellers, reducing their value since anyone can easily generate the same images, and hopefully making it clearer to everyone how low-effort the NFTs are.
  • If you are OK with no longer being open source:
    • Speak to a lawyer and create a custom license that explicitly defines your desires. I'd still be inclined to base it off of GPL or AGPL, with the added restriction on usage stating that the software cannot be used for commercial purposes, and that the output of the software (the generated images) cannot be distributed for commercial purposes, and that hashes of or references to the generated images cannot be sold (this is important since an NFT doesn't actually distribute the image, nor sell the copyrights to it, it just sells some reference to the image for the sake of bragging rights).
    • Significantly extend/improve the software such that the old MIT licensed versions are considered out of date, and the generated images are longer fashionable to sell. Since the NFT sellers will not be able to use the new versions of the software, they will be left behind.
    • Raise a bunch of money for legal enforcement, because it's likely the NFT sellers would ignore the license and use the new software anyway, unless you actively go after them for it. This gets expensive.

I strongly recommend you go the open source route. Not only is it the least hostile to your other users, it's also the most likely to actually work in my opinion. Even with the strongest license and massive software improvements, the generated images from the MIT versions of the software are already so good that there will still always be a market for them, and there is absolutely nothing you can do to retroactively apply restrictions to the old MIT licensed code, so they can keep using those endlessly, regardless of what you decide to do.

You might need to institute a dual licensing requirement. This is pretty common; e.g. a website's codebase is under GPL-3.0, but the content (art and writing) is under CC-4.0-by-SA. In this case, perhaps the codebase for prettymaps should be under a license appropriate for software (e.g., GPL-3.0, Apache, MIT, depending on how permissive you want it to be), whereas the output of the project, the maps, are under CC or something. This should be possible, although I would suggest checking with some expert opinions or similar projects out there to see how it is implemented.

Just to comment on this: requiring the generated output of the project to have a specific license isn't enough to solve the problem, you also need to explicitly claim copyright over it. If I use the software to generate an image, I hold the copyright, and so even if I'm forced to license it with a specific license, I don't need to follow those license terms myself, because the fact that I hold the copyright bypasses the license. The only solution here would be to create a software license for prettymaps itself that explicitly states that any generated images will always have their copyright owned by @marceloprates, but are licensed as CC for use by the user.

Note though that doing that would be blatantly not open-source, as discussed in my previous comment. It would also likely be legally un-enforcable.

Dear @rsheasby ,

First of all, I cannot thank you enough for all the effort you have put into your response, which was extremely helpful for a layperson like me with regards to licenses.

I also thank you for your emotional support. It means a lot for me as the past days have been extremely harsh.

I understand the points you raise and cannot disagree with your suggestion that the open source path is the way to go, at this point. I was already aware of the fact that changing the license does not protect me from the permissiveness of the previous MIT license from which most of the forks were made. To be honest, I'm fully aware that not even a restrictive license would protect me, legally speaking, from NFT plagiarism, because people will simply copy the code and omit the fact that it was taken from an open source project. My actual intent was to use the license to communicate my desire as the creator of the project that it is not used to sell NFTs, although I would never be able to enforce it. The same applies to where I say the creditation is mandatory (actually the OSM creditation is mandatory by their license, but again, NFT people will ignore that). From your response I figure I should be more careful with the way I express myself to not give the false impression that I can claim any of these rights legally speaking. I would still like to express my desires as the creator of the project, however, and will work to do that in a clearer way.

I had already thought about the possibility of democratizing prettymaps even more, by, as you suggested, creating a web-based application where everyone can select the parameters and create their maps. This would be closer to my original purpose with this project, which is to enable people to create beautiful maps. I intend to work on that and I'm open to suggestions and collaborations to make this work the best way possible.

I'll also have a look on the AGPL V3 license you suggested. I already regret changing the license to a non-commercial one because again, ideally I'd like to allow people to create prints and use them commercially to supplement their income. The whole NFT scam just made me so angry that I ended up making decisions hotheaded.

And just to clarify things: the reason I'm not happy with people using the project to sell NFTs is precisely the fact that I wanted this project to be accessible for everyone, and unfortunately NFT works in the opposite direction by creating a false sense of uniqueness which requires omitting the fact that this code is free to use. I hope making the library accessible as a web-based tool can mitigate this issue.

Overall, I'm very depressed with the way things turned out, and don't intend on open sourcing my creative coding projects while the NFT community does not find ways to deal with the issue of plagiarism (which I'm not at all hopeful they're going to do). I just don't want to go through all this again, and I hope people understand that.

Thank you very much once again for the help. I'll take measures to make the code as accessible and free as possible and try to ignore the fact that unethical people will use it without crediting. I think this is in the best interest of the community.

My 2c on the NFT thing: don't let it get you down and prevent you from doing and sharing what you love.

  • NFTs are stupid. They do not sell the copyright of the images, they just sell a hash of the image or a link to the image. They don't prevent anyone else from copying the image, or generating their own.
  • People who buy NFTs are stupid (at least at this point in time. I think there's broader applications for the tech that are potentially interesting, but right now people buy it for no more than meaningless bragging rights)
  • People can make an NFT of anything, even really stupid things, and someone will want to buy it, just as a natural result of how big the world is. (You could make an NFT of the name "Tom Hanks", with no image at all, just text. But even if someone buys that, they don't own Tom Hanks, and they don't own the text "Tom Hanks", they merely own meaningless bragging rights.
  • The fact that other people are willing to be stupid and pay for ownership of some tangentially related string of bytes, just for bragging rights, shouldn't get you down. It's their loss. Literally, the people buying the NFTs are the victims here.
  • I agree that you should do what you can to expose the NFT sellers for the low effort scammers they are.
  • I don't agree that you should stop sharing what you love and contributing to open source because of this situation.

Side note, just to be clear about AGPL: it does permit commercial use. In fact, it places no restriction on the use of the software at all. The main restrictions are related to the distribution of the software, and the requirement to include the source code and license whenever you distribute the software (or allow users to interact with it via a network service)

Thank you everyone for the help. I've changed the license to AGPL and made it clear in the README that I have no way of enforcing my intent that the project is not used for selling NFTs, but asked them to respect my decision and included some references for those who want to understand better the problems with the NFT market.

I think that's the best you can do. Btw I just did a quick grep over the files and there is still a MIT reference in the setup.py file.

license="MIT License",