pucrs-automated-planning / pddl-parser

:snake: Classical Planning in Python
GNU General Public License v3.0
83 stars 23 forks source link

License #10

Closed bcorfman closed 2 years ago

bcorfman commented 3 years ago

Have you all decided on a license type for this code yet?

Maumagnaguagno commented 3 years ago

That would require a lot of people confirming they agree with my choice, as I did most of the implementation and they either refactored or helped with testing. That would require at least @meneguzzi , @Behery , @bcorfman and @leonardoamado to agree on GPLv3. Not sure if anybody else in the lab would have a license conflict or any other problem with the spec modification that happened in the last few days.

bcorfman commented 3 years ago

I'm fine with whatever you pick. I just wanted to feel more secure about what will happen with any code changes.

Maumagnaguagno commented 3 years ago

I will probably do a few changes to allow easy extensibility, increment documentation and try #2. API should not change after that, reaching maintenance phase. My goal is that people would use the parser as a dependency of their planners, not keep modifying it.

meneguzzi commented 3 years ago

I'm in favour of this BSD license, what do the others think? https://opensource.org/licenses/BSD-3-Clause

bcorfman commented 3 years ago

I'm in favor of a BSD license.

bcorfman commented 2 years ago

It's been some time. Any updates? I would still like to work with this code, but not without some sort of known license for the contributions.

Behery commented 2 years ago

Sorry I seem to have missed the notification from December. I'm also in favor of BSD.

Maumagnaguagno commented 2 years ago

Sorry, I had a lot of personal problems last year and this was not a priority.

I personally prefer a GPL-like license for this reason:

The GPL licenses (GPLv3, GPLv2, LGPL, Affero GPL) all contain some kind of share-alike license. They essentially say “if you make a derivative work of this, and distribute it to others under certain circumstances, then you have to provide the source code under this license.” The important thing to know here is that “derivative work” and “certain circumstances” both require some legal analysis to understand the meaning and impact for your project.

Considering I would like to know what others are doing with code that was originally intended for education purposes, and to let others learn from it too, this license style matches my original goal of making it easier to teach/understand PDDL and a basic planning implementation. Other classical planners are also using GPL, see Fast Forward, Fast Downward and PyperPlan.

I made the mistake of not making clear my reasoning behind GPLv3 in the original post, sorry about that. Not sure why you all are voting for BSD.

meneguzzi commented 2 years ago

I guess BSD is the "least complicated" of the licenses, which is why this is one of the licenses I normally use. But your reasoning for using GPL is perfectly sound to me. I'm in favour of a GPL version. This basically prevents commercial exploitation of the code (and I'm not sure who would use teaching code in a product anyway), but lets people use it mostly freely otherwise.

bcorfman commented 2 years ago

GPL works for me too. I think the only untenable state is having no license at all.

bcorfman commented 2 years ago

Also, thank you all for putting in the time to consider this. This is a quality project, and I would definitely like to contribute more when the license gets selected.

meneguzzi commented 2 years ago

I know adding the license could be quick, but I will probably only have time next week to go ahead and do it, as soon as I do it I will close this issue.

Thanks everyone for the discussion.

Maumagnaguagno commented 2 years ago

I just wanted to be sure about the license first, @Behery voted towards BSD too. If @Behery is okay with GPLv3 I will do it as soon as possible, I just want everyone to reach a consensus or explain their reasons for a different license.

I also plan to add the preamble to each file and add a link to this repository as many projects are already picking files from here, sometimes giving credit, sometimes not.

Behery commented 2 years ago

I'm not an expert on licensing tbh (so correct me if I'm wrong), but from what I understand GPLv3 does not allow using the code in a software without open-sourcing it, unlike BSD. That's why I voted BSD; so more people would be able to use it. Anyways, my work is mainly in research so it will probably be public anyways, so if everyone here wants GPLv3, I don't mind either.

Maumagnaguagno commented 2 years ago

This is my understanding too, it would be impossible to embed this repository contents without making it publicly available. Considering this is mainly an educational repository with no smart/fast structures, grounding and planner, this is very unlikely to be a problem for a commercial company that would just pick or develop a faster planner and heavily optimize towards their use-case. The goal is not to have more users, but letting more people understand it.

Leonardo Amado said a long time ago that any license is good enough for him, so I will go on with the license.

jmugan commented 1 year ago

Sorry I'm late to the party. Is there any way the license could be switched to BSD or MIT? I think the code would be more understandable for students if it used things like dataclasses and such, and I'd like to expand this code to do that. There seems to be a lack of an understandable planner in Python, and this project could fill that hole. Often, companies are looking for something that is understandable to build on instead of fully optimized for speed.

Maumagnaguagno commented 1 year ago

Helping companies is not the goal here. Not sure dataclasses would help understandability, it also requires Python 3.7, leaving many versions unsupported.

meneguzzi commented 1 year ago

While I agree with @Maumagnaguagno that licensing our parser for commercial use is not a priority, I'm not entirely against adding the Data Classes, we may need to move with times or with Python. We could create a release as it stands for users of older Python versions, but most new projects will not use older interpreters.