Licensing question

I wrote an IF authoring system and now I am looking for a license to release it under (for executables, sources, documentation). I looked at several licenses: GNU Public licenses, MIT, Apache, Artistic license, … but find it hard to pick one.

I don’t want a lot of hassle and restrictions but I do have some things that I find important to cover:

I don’t want other people to make money selling it. I put a lot of time and effort in writing it. I’m sharing it for free and it must remain free.

Any game that someone creates with this system is the sole property of that someone and they can do with it whatever they want, including selling the game.

By default, I don’t want someone to take out parts of the source code and use it in another program. If someone feels they need part of the sources for another program they should ask me so I can say yes or no.

I don’t mind people changing/improving/expanding the source code, but when they want to release it they must contact me so I can determine whether to make a new release with the changes. This is to have some version control (maybe use Github pull requests for this?).

When someone shares/distributes the original or changed sources it must be under the same license.

I don’t want to be liable for anything.

Right now, I think the Artistic License 2.0 seems the most appropriate for what I want, especially w.r.t. distributing modified versions. GPL and MIT allow to sell the sources for money as far as I can see. I also checked TADS and Inform 6 licenses, but these licenses seem custom made and I don’t know whether I’m allowed to copy their text and use it as a license for my system.

So, given the above points, what would be a good license to use?

If you want to open the source under a free license, GPLv3 would be good for you.

It ensures that the source code you open would stay open and if someone wants to make money of it they’ll still have to disclose their source code and your name on it.

But if you really want to control every modification, then don’t release the source code or release it under a commercial license only (see: ChoiceScript). Because only that way you can force everyone to ask your permission before modifying the program.

UPD: Inform 7 and Adrift are closed-source, TADS is open source specifically for porting. Mature free software parser engines are Inform 6 (Artistic 2.0), Quest (MIT), ALAN (Artistic 2.0) and maybe more.

An issue here is that to ship a game under XVAN, it needs the runtime to go with it.

In which case, if the runtime prohibits commercial use, then there can be no commercial games, only free ones. Since you say you wish to allow people to sell their games, plus the fact that you’re already distributing the source code: LGPLv3 would work - for the runtime.

However, this doesn’t mean you must have the same licence for the compiler (XC). This can be a stricter licence if you wish.

For example GPL does not prevent commercialisation, and if you wanted to prohibit people from making money from selling XVAN versions itself then you would need something other than GPL for the compiler (and any other tools).

Some of the Artistic licences look good for this, but they appear to be oriented more toward art content rather than code. In the past, i have used a “public source license”. For some reason these aren’t discussed much by people.

Here’s one made by Apple, i once copied and used (obviously change name of Apple to yourself);


Sorry, just remembered, when i used the APSL i edited clauses 2.1 and 2.2 to remove the term “commercial”. Thus making it a licence for non-commercial only.

In view of this, you might instead like to find one already aimed at non-commercial use (rather than edit it), although i think the APSL is easy to make “non-commercial” by this small change than, say, the GPL.

Thanks for your replies.

I took another look at GPLv3 and modification seems pretty well covered. And on second thought, if someone would pay for software that they can download for free, well …

@jkj yuio, suppose the whole thing would be under GPLv3, would you still be willing to work with me on tying XVAN and Brahman together through a JSON interface?

You can make the compiler (XC) any licence you want, since the output of the compiler is another story.

Also, may i suggest, if you decide GPL, to use LGPLv3 rather than GPLv3. The difference is that LGPL permits also linkage to modules that can, if needed, be kept closed.


Say someone wanted to make an XVAN game but their UI (which accesses XVAN runtime) also accesses another library. Say this library is some new AI technology not yet ready for source publication. LGPL would allow this, but GPL not.

One of the reasons i like LGPL is that it permits the parts of a product (ideally all dynamic modules) to be open sourced in stages. I want to open source ALL my code eventually, but not all at the same time. Usually it’s because newer parts are in a state of flux (or just embarrassingly hacky!).

Brahman is all LGPLv3.

Some warnings and corrections:

There are many IF tools (compilers and interpreters) which use the MIT, Apache, Perl, and BSD licenses. Nobody makes money selling them even though it’s legal.

All open-source licenses permit taking part of the source and using it in some other (open-source) project.

People might still be using your tools in twenty years. You might have disappeared from the community or no longer be contactable. Should they, at that time, say “Well, the author didn’t want us to port this to a new OS without permission, and we can’t get permission, so we’re screwed?”

@Zarf: would LGPLv3 take care of the things you mention?

I suggest GPL3. I will make some of the points: There is no good real reason for (3) and (4), although you can still request (but not require) that anyone who releases changes will contact you, which may help with what you wanted to do. For the reasons zarf mentioned (and others), many of the points you listed aren’t all that good anyways. Points (5) and (6) are done by GPL3, so that works OK. If you wish, you can allow later versions of the GPL, or you may allow yourself to be a “proxy” to permit later versions or not (a feature I think is new in GPL3). Also, you can trademark it if you want to prevent unofficial versions with the same name. It does not prevent anyone selling it (point (1)), but the GPL3 (as opposed to other licenses, such as LGPL) does avoid some of the important ways that others can earn the money to benefit themself instead of you (again notice what zarf mentions; even if it is legal it does not mean it is useful for anyone). If you wish some of the things that jkj yuio mentions, you may add removable exceptions into the license, and may even require contacting you if they want to. Although if modules are made as separate programs then it might not be an issue anyways.

some valid points, but let me explain my own preference for LGPL;

GPL licences are all about software freedom, but actually they can limit the freedoms of the owner. Something that uses GPL is less compatible with other libraries than something that uses LGPL, and therefore is more restrictive on the freedoms of the owner.

[I realise the owner can always re-release with another licence, but if so, why not do that from the beginning.]

for me, at least, software that i develop and release as open source (whatever the exact licence), i am never against someone else making money from it. That’s because i realise there’s a huge difference between a product and sales. If they can make money, then good luck to them.

The point being that i don’t choose LGPL to specifically control others from monetising, but instead to allow me to incorporate parts that are not compatible with the GPL if i so wish.

Of course, these are my own reasons. I would not be against Marnix choosing GPL or any other.

I’m working my way through the GPLv3 license tekst and I’m having a bit of difficulty understanding the difference between “propagate” and “convey” as defined in section 0, Definitions.
Especially how they are used in section 2:

I’d appreciate if someone could give me an example of propagate vs convey so I can better understand section 2.


The definitions section explains the terms:

That part of section 2, if I understand it correctly, concerns various activities which are not “distribution” to use a term they are deliberately avoiding. So if you are a company, you can share the software internally, even modified, without needing to abide by all the rest of the license. You can even hire another company to make changes to it exclusively for your benefit. It’s “conveying”, because it’s to another party, but it’s not “distributing” which would is “conveying” + “obeying the rest of the license”.

Hope that makes some sense.

Your interpretation of the part of section 2 makes sense. Thanks.

I’m still confused by the definitions, though.

I read ‘enable’ as ‘gives the possibility to’, not as ‘permits’. And I cannot think of a way of propagation where copying would not be possible.

As I’m not a native speaker, I consulted an unofficial Dutch translation of GPLv3 but I still don’t get it.