Screwtape's Notepad

Notes on bsnes licensing

Note: I’m pretty sure this was a draft for a post on the bsnes forums. bsnes itself has been under the GPLv3 for a while now.


What I want: 1. anyone can use my code, in an open or closed app 2. they can statically link my code 3. if they make changes to my code, they have to release those changes 4. those changes follow the same rules: people can use them in closed apps

The trouble here, as I understand it, is that copyright law works on the concept of a ‘derived work’; that is, an idea based off a previous idea. Whether the modification is ‘edited the source-code to change how it works’ or ‘ran the source through a compiler’ is immaterial; the law treats both the same way, which makes it difficult to write a licence based on copyright law that distinguishes them.

For example, if somebody was using a non-ISO-C++ compiler to make some product and had to adjust the order of fields in some headers in order to link some bsnes component with the rest of their code, or to modify your makefiles to call their special compiler at a particular path, would your hypothetical licence require them to release those changes or not? On the one hand, they’re minimally invasive changes as anyone who wants to use an open-source library might expect to make, on the other hand they are technically changes to your code. Distinguishing between the two would be difficult for a human to do on a case-by-case basis; writing static legal code to reliably distinguish them would be practically impossible.

What I’m afraid of: someone doing something really cool that I want to add back, but without losing the ability to release this new combined code under LGPL in the future

This is not so much a legal opinion as an observation of life in general, but so far as I can tell, either I can share what I have with people and accept that some people will be bastards unfit for human society, or I can keep everything to myself. The hypothetical third option of ‘only share with people I like’ works out to be the same as ‘keep everything to myself’, since very few people will want to invest the time to establish a personal relationship with me and gain my trust so they can ask for and be reasonably confident of receiving permission to make changes to my code.

I prefer non-commercial only, but I know not letting others profit off your work makes your work “proprietary and non-free.” Meh.

Like the “how significant does a change have to be before it’s required to be shared” problem, “non-commercial use” is difficult to reliably define. For example, I’d assume that playing games in the privacy of my basement would be OK while selling bsnes CDs on eBay would be not OK. However, what about if I publish modifications to bsnes and an employer who sees them decides to hire me because of them? Is that commercial use of the bsnes code? What about a video-game museum who uses bsnes to demonstrate SNES games without endangering antique SNES hardware? Visitors are being charged to come in and play SNES games (among other things), does that become commercial use of the bsnes code? Even something simple like using bsnes in a university course about embedded programming would be problematic - you’d think that academia would be the opposite of commercial use, but those students are paying an awful lot of money in tuition fees…

(You might be interested to know that the Mozilla Public Licence defines “commercial use” as “distribution or otherwise making the Covered Code available to a third party.”)

One of the reasons I prefer to use software under the BSD and GPL licences (and similiar licences like the MIT/X11 licence and the WTFPL) is that as a user, it’s incredibly easy for me to know what my rights are - no long and complicated EULAs to read, no inadequately defined clauses where my interpretation might legitimately differ from the copyright holder’s. The words “proprietary and non-free” often get thrown around like curses, which is sad because people react to the tone of voice rather than the meaning. It’s simply the division between “I’m sure I can do whatever I want to this code” and “I’m not entirely sure”. When there’s a range of software that I might be able to use, and I don’t personally know any of the copyright holders, I prefer the guarantee of “I can do whatever I want” over doubt and uncertainty.