Hello, I work on Pharo, an open source derivative of Smalltalk. Pharo is licensed under MIT hence most of my work needs to be licensed also under MIT.
However, time to time I have some projects in my free time that I made for my personal usage or for friends, and in those cases I am not OK with my work being used by for-profit project not giving anything back. I would very much prefer to use GPLv3 on those cases, but my understanding of licensing is very poor and I have been told there is a “virus” behavior on GPLv3 that may prevent people to use at all what I do, and that’s not my intention.
Do you have any advice how to handle this?
If some code links to your GPL library, the whole project has to be licenced GPLv3, full stop. This does not “prevent people to use [it] at all”, it just stipulates that they have to make the source available and the source of improvements they make available. Each substantial library I write in my free time is GPLv3. I want to contribute to the ecosystem and I want everyone enjoying my work contributing back to the ecosystem.
A similar licence, called LGPL, allows dynamic linking without having to make the code of the whole project available, just the code of the specific library + improvements. If for some reason you need this, I invite you to check how dynamic linking works in Pharo and read this FAQ by the FSF (and all other FAQs, it is a very clear, informative document).
Not 100% sure on the “virus” thing you mentioned but I can make an assumption.
One license type (I think its GPL3) requires any software which includes GPL3 code must also be licensed as GPL3 and thus all sources made public. You can’t take the open code, use it and then close off your own source. If I am remembering correctly
This would mean commercial applications which want to remain closed source wouldn’t be able to use that licensed code unless they were to then opensource their own code as well. So it wouldn’t prevent other open sourced, same licensed software being able to use it
Sort of. And this “viral” nature applies to all copylefted licences (GPL1, GPL2, GPL3, AGPL, CC-SA).
You can take GPL3 code, use it, and then close off your own source, as long as it’s for private purposes. What you can’t do is then distribute it under different terms. The GPL says that if you take GPL code, modify it (make a “derivative work”), and then redistribute it, you must redistribute it under the same terms that you got the original code from. So your users must have the same rights that you had when you got the original code.
Thanks for the additional clarification!
this is the “virus” thing explained (by chatgpt, heh, but this is exactly what I heard) : Inheritance and Derivative Works: In object-oriented programming, inheritance allows you to create new classes based on existing classes, inheriting their attributes and behaviors. When using GPL-licensed code, whether GPLv3 or LGPLv3, any derived classes or subclasses created within your project will be considered derivative works. As a result, if you choose to distribute or publicly release these derivative works, they must comply with the licensing terms of the original GPL-licensed code.
That’s not really a good explanation. The concept of a “derivative work” in copyright law is unrelated to object-oriented technology, and the GPL is mainly applied to non-OO code anyway.
Yeah I did make the right assumption then. I feel virus has a negative connotation though
First, thanks for working on Pharo, what an amazing environment.
I am not a lawyer so you should double check.
For GPL, indeed the image as a whole would be GPL. If the personal project is more of an “executable”, it might be what you are looking for, any further image modification would have to be released under the GPL as well.
If the project is more of a “library”, you might or might not prefer the LGPL. In this case I feel like https://www.gnu.org/licenses/lgpl-java.en.html would apply similarly to Java. As long as you can load the image and change the original library code, other code is not restricted on the license.
Pharo is licensed under MIT hence most of my work needs to be licensed also under MIT.
I believe that this is not true. I thought that it is not mandatory for your work to be licensed under the MIT license in this case. Can anyone confirm this?
sorry for the confusion, I meant that I work doing Pharo, and hence the license of my work is MIT, because that’s the license chosen by the Pharo project. Of course MIT license means you can license your own work with whatever license you want, including proprietary licensing :)