Hello everyone.
I’m developing an open-source visual novel engine. And I’m struggling to choose between the two licenses: MIT and BSD 3-Clause. I wasn’t much about licenses until this moment, so I have to ask someone else. Which one should I pick and why, if someone knows?
Thank you in advance.
I’m a copyleft fan in theory, but…
In practice my experience is that anything GPL actually doesn’t benefit the fellow worker/programmer as much. Since the worker probably works for an evil soulless company, he would have to use a different permissive software or buy something proprietary. I.e. if you choose copyleft you provide to a commons that is only accessible to a minority of workers. I also believe that most companies (even big tech) will try to contribute important or significant changes to permissive upstream projects instead of running their own private forks (the latter is much more annoying and expensive).
Okay, thank you for the explanation. Cases can be different here.
Keep your project healthy and alive by using LGPL or some similar FLOSS license instead of MIT. MIT and other permissive licenses are horrible.
Horrible? Okay, then. Can you explain why? I mean, I know that Ren’Py is using MIT, and there are no problems with anything as far as I can tell. So, what’s wrong with it?
Permissive license is basically for you and contributors to provide free labour and when mature enough, big corp X can just exploit it and use it for their own benefit off your free labour if needed.
There are actual good and big projects that use permissive licensing that have not been overtaken (postgres for example) but they mostly have very strong, cohesive business and market plan to achieve that, plus the bature of their software.
If your software is actually complicated and useful, don’t let corporations exploit it for nothing.
Okay, so it’s a threat if I use a permissive license. Thank you very much! I’ll think about it.
The point of different licenses is the thing you ought to be looking at.
The point of mit is to get the licensed thing used as widely as possible. It breaks down any barriers to use. A good example of something that should be mit licensed is an encryption algorithm. A good example of something that shouldn’t be mit licensed is anything else.
The point of bsd3-clause is to prevent the licensed likeness from being used to imply the creator shares some view or idea. A good example of something that should be bsd3-clause licensed is the royalty free music on youtube. A good example of something that shouldn’t be bsd3-clause licensed is a creative work the author wants to have their name known for.
The point of the various gpl licenses is to create a digital commons that all people can access. A good example of something that ought to be gpl licensed is a game engine you want people to be able to freely use and modify but never make secret changes to sell. A good example of something that shouldn’t be gpl is a game engine you want to eventually sell the code of or make secret changes and sell the code of those.
If my language sounds biased, it is because I have a bias.
I’m bookmarking that comment
That’s a good explanation, thank you for teaching me.
Your openness and willingness to learn here is admirable. People are very opinionated about these things sometimes, and you are listening in a constructive and diplomatic way.
Kudos to you for being that type of person. 🤝🫶 You were brought up well. 😉
I’m glad you appreciate it! This made my day!
Np. It’s easy to just choose the license that is easiest or “fire and forget”, but too many programmers don’t consider what kind of freedoms they want their speech to have and that the license is how you define that.
If you want to know something feel free to ask.
I definitely will.
The point of mit is to get the licensed thing used as widely as possible. It breaks down any barriers to use
There are no barriers to use, except that you have to share the source code back, and give users the option to modify it. If you use it without modifyiing it, you can just point users to the existing public code.
The only barrier to use is that Apple disallows (A)GPL related libraries in any of their code, published through their main distribution channels to their platforms (mainly talking about apple app store here).
https://www.zdnet.com/article/how-to-avoid-public-gpl-floggings-on-apples-app-store/
But this is ultimately on Apple for not giving users the needed amount of control over their devices to comply with the license. This annoyingly common rhetoric that the GPL itself is a “barrier” or “restrictive” is just blaming the wrong party.
Now, even though I’m more in favor of copyleft, I can understand with the decision to license software or libraries permissively in order to be able to distribute them through the App Store.
gpl licensed is a game engine you want people to be able to freely use and modify but never make secret changes to sell
This is tricky because the GPL is fairly aggressive, and may require the entire game to be open sourced if it’s distributed as one bundle. LGPL doesn’t fight as hard for users freedoms, but also has some similar issues. Most game developers don’t want to open source their games, so I think a permissive license is probably the easiest choice for a game engine.
I am a Unix jihad, gpl em all and let god sort em out, rust programmers are compradors type motherfucker but a company not wanting to use your software because of the license is a barrier to use.
Most game developers don’t want to open source their games, so I think a permissive license is probably the easiest choice for a game engine.
That’s why I was considering a permissive license in the first place, yes.
Or from the other side, GPL would guarantee that you yourself (and your project’s contributors) would still have access even if a good fork emerges.
Things happen over years or decades.
Do you mean that without GPL my access to my own project can vanish?
Your access to a popular and commercial fork might be non-existent. You would maybe not even mind that they’re selling your code - possibly just wanting to tune it a bit, since you know how it used to work. But the fork can decide they’re proprietary and they won’t give you any source code.
Aah, okay then. Well, it does make sense indeed.
MIT and BSD are the corporate friendly licenses that say you can take my code and use it and even make it proprietary, as well. So long as you provide attribution, do whatever you want.
If that’s fine by you then choose that license. You can read little summaries here but be advised this page is owned by GitHub and they have an interest in seeing MIT and BSD adoption, so the language they use subtly reflects that IMO https://choosealicense.com/licenses/
Yeah, I’ve already read it. And yeah, the language is a bit biased, aside of the short explanations not covering too much as for me. So I should look somwehere else.
Nevertheless, thank you for the explanation!
A simple comparison between the two via interoperable-europe.ec.europa.eu says that they’re almost identical save for one clause around trademarks:
https://interoperable-europe.ec.europa.eu/licence/compare/BSD-3-Clause;MIT
But I’d be remiss if I didn’t advocate for a license that better protected your project from corporate theft. The AGPL and GPL are excellent licenses that protect your work and that of the community from companies that would copy it, improve it exclusively for themselves and then ship your work exclusively in binary form:
Wouldn’t the LGPL make more sense for an engine? Otherwise it would be hard to make a proprietary game (read almost every game) even if you publish any changes you made to the engine.
Ooh, yes for for this case, the LGPL would be a good middle-ground for OP’s concerns.
a license that better protected your project from corporate theft
See: https://philiplaine.com/posts/getting-forked-by-microsoft/
That was a frustrating read. Dude gets screwed by Microsoft who effectively steals his code and rebrands it as theirs and then he goes on to talk about why he prefers MIT.
I thought of using GPL, but it would mean someone else would be obliged to open their source code if they base their software on my engine. Though open-source is good and must exist (speaking of Ren’Py, which is not GPL, but still an open-source engine considered a golden standard of VN development), I’d like to give others the right to make their derivative works either open or closed, by their choice.
As for AGPL, I know nothing, unfortunately.
That’s understandable, though one of the other commenters suggested the LGPL which might make for a good fit for your case. Here’s a comparison with the other two if you’re interested.
The AGPL is just the GPL with extra rules requiring sharing the code even if you expose it exclusively via a service.
Okay, thanks for the advice. LGPL might be a good option, I’ll look into it.
See my other comment: https://programming.dev/post/53544261/24909721
AGPL is GPL + network services protection (preventing someone taking your code and spinning up a for-profit selling services without contribution back). If you don’t care about people stealing your code, closing it, and selling services based on it, then there is no need to consider strict copyleft licenses.
Okay, thank you very much. As for now, I hope my engine will be known enough for anyone to recognise the hoax.
Do you know that Apple’s macOS is historically a FreeBSD fork? (They have copied big parts.)
I find it notable that FreeBSD is struggling to stay alive, and Apple’s 1000000000000s of dollars in incomes does not help them at all.
Huh, lol. No, I didn’t know that. One of my friends uses FreeBSD, and he likes it. But yeah, that’s a good point.
Out of curiosity, why develop your own instead of contributing to RenPy? Not saying there can’t be good reasons, just curious what they are in this case.
Long story short, it all started with an argument between me and a guy who thought only Japanese VN-related anything is usable normally, and that all Western VN-related software (Ren’Py included) are either clunky or laggy garbage. He also gave a Japanese novel engine called Light.vn (don’t mind the link, it’s the engine name) as an example (there is a killer feature in it: WYSIWYG editor). So I started my engine to prove him wrong.
After some time, I really saw that Ren’Py is not as fast as it was when I started to use it long ago. But that’s because it uses modern Python, which is by itself not too fast and lightweight anymore.
That’s why I write my engine in C and aim to make it much faster than Ren’Py and with better UX. Not speaking of a desire to create something meaningful myself.
Might as well use MIT in that case then.
Aha, okay. The same Ren’Py does. Thank you, I’ll think about it.
WTFPL
Roflolmao
Amongst those 2 toss a coin honestly ¯_(ツ)_/¯
What about the non-endorsement clause, then?
Which one has that?
BSD 3-Clause.
They do pretty much the same thing. If there are nuances, I do not know about them.
Well, the only difference is a so-called “non-endorsement clause”. I wanted to know where can I use it, and if I even should.









