I'm thinking about making my own video games and want them to be open source and on game consoles as well. I know that GPL is not an option because companies like Nintendo and Microsoft don't allow GPL plus license incompatibility with stuff like signing an NDA. All I want is that you must make public the source code at all times. Which license should I pick?
If you are the copyright holder1 of all the code you wish to release apart from that owned by Microsoft/Nintendo, you have a couple of options here:
- Release your code under the GPL, but with an exception allowing linking with console manufacturer's code.
- Dual license your code. The version that you give to the console manufacturers can be binary-only, and you can publish a separately licensed version under the GPL. This GPL published version may not be very useful as it won't really produce a working executable, but this would allow anybody else to port your game to a different platform, or just to pick out sections of your code for use in their GPL programs.
The most important thing to note here is that you cannot use any "regular" GPL code if you do this, as you do not have the right to add the exception or dual license that code. Also, while both these ideas work in terms of the GPL, you would have to check whether the console manufacturers would be happy with them; that's not something we can advise on.
1. Or you can get the agreement of all the copyright holders.
You've correctly determined that the developer agreements of modern video game consoles are incompatible with copyleft licenses such as the GNU General Public License. One approach is to keep the GPL and encourage your audience to purchase console-shaped personal computers that respect users' freedom to a greater extent.
- Ensure your game runs on handheld PCs with buttons, such as Steam Deck and some GPD Win model.
- Ensure your game runs on small-form-factor PCs with Intel and AMD graphics. Compared to a conventional desktop tower, these PCs are less likely to look out of place in the living room next to a television monitor. Test your game with a few brands of wired controllers for Xbox, which PCs running Windows or Linux can use.
- Recommend this hardware on your game's website.
- If you have the capital, become a reseller of small-form-factor PCs with GNU/Linux and a TV-friendly program launcher preinstalled.
Another approach is to make a game for consoles more than 20 years old, such as the Sega Master System or Nintendo Entertainment System. Long-discontinued consoles tend to have thorough reverse-engineered public documentation and weak or no platform security. Examples of GPL software for NES include Nova the Squirrel, Thwaite, and a port of 240p Test Suite.