keiwando / evolution

A sandbox game/simulator that demonstrates machine learning with evolutionary algorithms.
https://keiwan.itch.io/evolution
361 stars 56 forks source link

Consider Freeing Your program #11

Open JamesClarke7283 opened 1 year ago

JamesClarke7283 commented 1 year ago

Hello @keiwando, My younger brother and I have some interest in using your game, and potentially use it to teach my brother programming, but unfortunately your program is under a proprietary license, which will be generally problematic, even for use case's.

I am also thinking of how this might impact other users with different use cases, as well as us.

Free As In Freedom

To clarify when i say 'free', i am not talking about cost. free/libre software can be commercially sold as shown here: Selling Free Software

And a FOSDEM video on free/libre business models which are successful and used by (Canonical, Red Hat, Nextcloud, etc). Why the GPL is great for business Debunking the current business licensing discussion

Regarding your article

I have read your explanation of the design of your license, and respect you took the time to explain your reasoning, while i agree with the issues facing software development; I do disagree with the way this was meant to be mitigated by the license. https://keiwando.com/evolution/faq/open-source

Reason being, you cite the issue of breaking backwards compatibility. However, there are many free/libre software projects which are restrictive of what contributions they accept on their repo. And this is perfectly fine, even if it is free/libre software, you are under no obligation to accept contributions into your repository. Because, users can fork their own version in these cases for any purposes. It will not impact the stability or compatibility of your copy of the software.

That's the beauty of it, users are in control of the program, so you can maintain the things how you like it, and someone else if they want to do something different, they can make a separate version. You may find things people have done in their version you want in yours, and can always merge this into your repository if you decided to. If users can use the version which they like to use, its their choice to have the software they want to use. So the users control the program in this case.

Current Restriction's of the license

Although the source code is public(source available), the current license prevents users from having control over the program.

Your program seems to restrict users freedom to use the program for any purpose (freedom 0), "[...] download, modify and play around with the code for personal and educational purposes" I am assuming this restricts commercial use of the software, and any category which is not personal or educational use. The license is also quite vague, as what is considered personal or educational use is subjective.

Either way, this unfortunately means users do not have individual control over the program(as the first 2 freedoms are not completely satisfied). See this article for why this can be problematic.

Secondly, Freedom 2 is also restricted. "[...] as long as you don't relicense the code or sell or otherwise redistribute a build of the software (outside an educational environment)". I interpret this to mean, Only for educational purposes, can identical copies of the software be distributed.

I find this problematic, because there are many cases where your software would want to be distributed outside an educational environment, and it's also vague as to what is considered an educational environment.

Also People need to share software to help others as part of a cooperative society for many purposes, ones you may not think of in your license which are important. For example, some users may live in a place where the internet is not reliable internet, and in some cases no internet at all. It's easy for us to decide on a limited set of use cases.

But people around the world or even in your country. Use software for many purposes, purposes which are legitimate and benefit society. And many of the issues you cite can be avoided if the program is under a free license.

See here for why free software is important: https://www.gnu.org/philosophy/free-software-even-more-important.html

Another major issue, is the vagueness of this license in general, may have the opposite effect. There is not even a warranty disclaimer, or patent disclaimer (to protect from software patent trolls).

Empirical Study on How patent's impact innovation: Software Patents and Firm Value: A Real Options Perspective on the Role of Innovation Orientation and Environmental Uncertainty

Conclusion

So, having argued this. Would you consider freeing your program? And if not, could you explain why?

Thank you for reading my long article.

Looking forward to hearing from you, Happy Hacking (;

keiwando commented 1 year ago

Hello James!

Thank you for the detailed request and for reading my FAQ entry about this before posting. I'm going to have to keep my answer short due to a severe lack of time, but I would like to clarify some things.

I currently have no intentions of licensing this code under a free / open-source license. This may change in the more distant future, but not at the moment.

The build of the Software is already available for free without ads, in-app purchases, predatory subscription models etc. and is therefore accessible to a very large number of people (as is reflected by the download numbers). In addition to that, the source code is available for anyone to see, download and learn from, which includes the ability to make all kinds of changes to it and run the code with those changes on your own devices. In return for all of these voluntarily granted abilities, which cause the revenue from this project to not yet be anywhere close to the time investment that has gone into it, I reserve the right to remain the sole source of public distribution of my software.

What I therefore generally disallow is people pasting the code (or parts of it) into other distributed products (commercial or free) or anyone publicly distributing unmodified or modified builds of the software. Exceptions can be made on a case-by-case basis using special licenses after contacting me. The number of people contacting me who are trying to quickly profit off of this project by redistributing it far outweighs the number of people asking to use it for educational purposes (which is already allowed anyway). There are also already a lot of people that do redistribute this without permission.

while i agree with the issues facing software development; I do disagree with the way this was meant to be mitigated by the license.

To be clear, the license is restrictive due to the reasons mentioned above, not because I don't want contributions because of the risk of breaking backwards compatibility of saves. In the second part of that FAQ page I just wanted to make it clear that I'm not actively inviting contributions because I don't want anyone to get excited about potentially contributing to this project, privately spending a ton of time coding something and then being disappointed that it's not getting merged any time soon. I'm currently very busy with other projects and therefore don't have any time to spend on this project beyond necessary maintenance. (There has been an open PR for six months of somebody compressing a bunch of images in the repository. Relatively simple change, except that I still have to go through all 126 edited files and manually make sure that they are still okay. Haven't had any time to do it yet and won't anytime soon).