marceloprates / prettymaps

A small set of Python functions to draw pretty maps from OpenStreetMap data. Based on osmnx, matplotlib and shapely libraries.
GNU Affero General Public License v3.0
11.04k stars 516 forks source link

Licence #71

Open worldpotato opened 2 years ago

worldpotato commented 2 years ago

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

marceloprates commented 2 years ago

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.

thewchan commented 2 years ago

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/

marceloprates commented 2 years ago

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.

thewchan commented 2 years ago

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.

worldpotato commented 2 years ago

@thewchan good idea with the dual licensing.

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

marceloprates commented 2 years ago

Thanks @worldpotato !

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

marceloprates commented 2 years ago

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

worldpotato commented 2 years ago

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

worldpotato commented 2 years ago

This is the new post: https://www.reddit.com/r/opensource/comments/q42a0g/preventing_open_source_software_to_be_used_for/

marceloprates commented 2 years ago

Thanks so much, @worldpotato !!

rsheasby commented 2 years ago

@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:

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:

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:

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:

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.

rsheasby commented 2 years ago

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.

marceloprates commented 2 years ago

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.

rsheasby commented 2 years ago

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

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)

marceloprates commented 2 years ago

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.

worldpotato commented 2 years ago

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.

https://github.com/marceloprates/prettymaps/blob/d03fb1cf4e5bb624d0d97673e0c51bc6e53e086c/setup.py#L15