Making Exodus Open Source: What license model to use?

Official support forum for the Exodus Emulation Platform

Moderator: Nemesis

r57shell
Very interested
Posts: 478
Joined: Sun Dec 23, 2012 1:30 pm
Location: Russia
Contact:

Post by r57shell » Wed Jun 05, 2013 9:40 pm

You are definitely mad. :D
Image

Nemesis
Very interested
Posts: 791
Joined: Wed Nov 07, 2007 1:09 am
Location: Sydney, Australia

Post by Nemesis » Thu Jun 06, 2013 12:01 am

Well I'm open to feedback and constructive criticism, that's what this thread is all about. You'll need to list some specific things you would like to see done differently though, and suggest some alternatives, otherwise it doesn't really help the process.
clobber wrote:
I've selected the Microsoft Reciprocal License (Ms-RL) as the "primary" open source license to use.
Contributor License Agreement (CLA) for any code submissions
Wat.
I'll be doing bug tracking and managing development tasks using a JIRA OnDemand (hosted) instance under the free open source licensing offer, linked to BitBucket for code change integration.
I really can't believe how difficult you're making this. You wrote a cycle-precise Mega Drive emulator, not an operating system kernel. The amount of hoops you want people to jump through just to send you a patch is insane and will lead to no contributions.

You should take a few steps back and think about if you really want to open source, because it sounds like you don't.

You're worried about forks and cite Gens, but Stéphane open sourcing the original Gens is one of the best things that happened to the community. Same with Genesis Plus from Charles.

It's just a shame more users aren't aware of the amazing work Eke has done with GenesisPlus-GX, because it's the best Mega Drive/CD emu out right now.
I think perhaps you're misunderstanding what I've written. You might want to go over it again and pick some specific points you would like to see done differently. I've picked a standard open-source license, and I'm no longer talking about a no-forking policy at all. Bitbucket and JIRA have nothing to do with licensing, and in fact they make contributions and shared development simpler, not more complex.

You may not be aware, but the Ms-RL is an incredibly permissive, FSF and OSI approved open-source software license. It's simpler and more permissive than the LGPL. It's simple enough to read understand, and unlike most of the alternatives, it's legally comprehensive. You can read the license at http://opensource.org/licenses/MS-RL. As you'll see, it's short and simple compared to other weak copyleft open source licenses like the LGPL. It's also gaining popularity. You might not have heard about it before because it's relatively new.

Perhaps the multi-licensing idea is overkill. If this is what you're objecting to, please say so. I can simply release under the Ms-RL license and drop the multi-licensing with the GPL. I only planned to do that so that people could port cores from GPL-based emulators, or use cores from Exodus in GPL-based emulators, but I'm not actually sure how many emulators out there use the GPL. Since GPL-licensed cores could never be adopted into the mainline Exodus release though, and since if someone's using GPL for their emulator and they want to port cores, the licensing incompatibility is really their problem, I can drop the multi-licensing idea to avoid confusion.


As for the CLA, I listed a number of key points why it's required, and I cited Ogre in particular, which uses this exact model. It's even more important in our case, because of the potential threat of legal challenges. Yes, signing and emailing a form before you can submit your first official code change sucks. It's a 10 minute job though, which you only ever have to do once in your life, and it's better than losing your house and all your possessions in a lawsuit simply because you wrote or contributed to an emulation core. Just because this has never happened before doesn't mean it won't happen in the future. Patent lawsuits are increasing in frequency and severity each year. It's a legal minefield, and nowadays, it's all about corporations using the courts to threaten or attack others. This is very relevant for us, since emulation is all about cloning other people's inventions. Patent holders would have a very strong case to sue if they decided they wanted to. If it reached the courts, they'd probably win, and either way, you wouldn't be able to afford the legal battle. Make no mistake, if you, as an individual, write some code which infringes on a patent, and you release it publically, you can be sued for damages in any court around the world where that patent is in force, and they can take your personal possessions if you lose the case. The CLA offers you complete protection as a contributor from legal action, because the CLA will assign ownership rights to an organisation, which is a separate legal entity, and that entity or another related entity will be the one distributing the infringing code.

If you don't like the CLA idea, you'll need to provide a comprehensive reply on why you think it's unnecessary. I think I've done quite a good job at outlining why it is necessary, and I haven't seen anything yet to change my mind.

Nemesis
Very interested
Posts: 791
Joined: Wed Nov 07, 2007 1:09 am
Location: Sydney, Australia

Post by Nemesis » Thu Jun 06, 2013 12:51 am

After some more research, I have found legal precedent to indicate that I can allow the CLA to be consented to online. I also just noticed that Google actually allow this on their CLA page here https://developers.google.com/open-sour ... individual. Given this precedent, I'm going to allow the CLA to be signed electronically in a similar manner. This will make agreeing to the CLA a trivial process, since it can now be done in 10 seconds online, while still offering the required protection. After a more thorough reading, I'm also planning to use the Google/Apache CLA (which are actually exactly the same).

sega16
Very interested
Posts: 251
Joined: Sat Jan 29, 2011 3:16 pm
Location: U.S.A.

Post by sega16 » Thu Jun 06, 2013 1:58 am

I do not understand why Nemesis is being criticized for doing necessary precautions. Also it is not like Nemesis is doing something unusual even the FSF requires a CLA. Also these legal precautions not only give Nemesis peace of mind but also the contributor so if anything it makes it easier for the contributor in the sense that they know that they are safe from lawsuites and other that may arise.

Mamizou
Interested
Posts: 25
Joined: Thu Apr 19, 2012 4:50 pm
Contact:

Post by Mamizou » Wed Jun 12, 2013 3:43 am

Nemesis wrote:I've selected the Microsoft Reciprocal License (Ms-RL) as the "primary" open source license to use.
Color me completely confused here. You basically want a very free license but you're concerned about commercial use which is almost always allowed unless you're MAME, and having to 'allow re-linking' to closed-source code which is exactly the point of using such a license (or even inclusion inside closed-source code). And you don't want the GPL because it's 'viral' except:
Nemesis wrote:but any assembly which contains compiled Ms-RL licensed code code (IE, anything which links directly to the support libraries in particular) has to follow that license, and you have to release source code changes for any code you modify.
...and that it causes 'fragmentation', except that's proven to keep a project alive long after the primary developer loses interest.

I dunno, it's all pretty conflicting. Just use the GPLv3. You can even use a linking exception with it, if you want to allow proprietary code to run with it.

As for the CLA, I would only sign such a thing if it only meant switching to a newer version of the GPL.

Most importantly, don't take this sort of backlash as a sign of disdain for you or your project, but a sign of the level of interest people have in it. For one, as a Linux user, I would love a Linux version. More cross-platform development please. :mrgreen:

Nemesis
Very interested
Posts: 791
Joined: Wed Nov 07, 2007 1:09 am
Location: Sydney, Australia

Post by Nemesis » Wed Jun 12, 2013 9:10 am

I changed my mind along the way from what I talked about in the original post, after some further thought and considering the feedback other people gave. I'm no longer worried about commercial use. I didn't want to use the GPL because the GPL is basically only compatible with itself, and I want a license which allows cores to be ported to and from other projects that don't use a GPL license. If you look closely at license compatibility with the GPL, you'll see just how restrictive it is. The GPL is specifically designed to try and force other projects to use the GPL too. I don't want to impose license restrictions on other projects, I simply want to retain the open source nature of code contributed to Exodus.

Mamizou
Interested
Posts: 25
Joined: Thu Apr 19, 2012 4:50 pm
Contact:

Post by Mamizou » Thu Jun 13, 2013 2:46 pm

Nemesis wrote:The GPL is specifically designed to try and force other projects to use the GPL too. I don't want to impose license restrictions on other projects, I simply want to retain the open source nature of code contributed to Exodus.
B-but, with the GPL you have the power of Richard Stallman's beard! And if any crazy proprietary-code-ninjas try to use your code illegally, he'll slice them up with his katana.

I mean, er, I can't wait to check out your code. :D

Alegend45
Newbie
Posts: 4
Joined: Fri Jun 21, 2013 5:24 pm

Post by Alegend45 » Fri Jun 21, 2013 5:26 pm

I also suggest BSD or MIT or X11, or a license like that. Besides, I'm really excited for the open-sourcing of this! Can you make a guide on the plugin API though? I'd love to make some plugins for 8-bit and 16-bit processors!
IBM 5150, YEEEEEEEEEEEAH

But seriously, if you have a question about the IBM 5150 PC, ask me, and I can either answer it, or point you to someone who is more knowledgeable.

Arker
Newbie
Posts: 2
Joined: Thu May 30, 2013 2:24 pm

Post by Arker » Sat Jun 22, 2013 6:59 pm

Nemesis wrote:1. Generic utility libraries - Apache 2.0 License:
This code is basically being released free, with no restrictions. People can use it for any purpose, modify it, whatever, and not have to release their changes back. This license is basically a more modern and legally bulletproof version of the permissive MIT and FreeBSD licenses. The only difference is a more clear, explicit legal language, and some protection in regards to patent laws, something that simply wasn't on the radar when the MIT/FreeBSD licenses were made. Unfortunately the patent protection renders the Apache 2.0 license incompatible with the GPLv2 license, but it's fully compatible with the GPLv3 license.
If what you want is a very permissive license with patent protection, you could always license the code and the patents separately. That's what WebM did: code under BSD, patents under the patent section of Apache. The additional freedoms granted by this model are fairly marginal: removes the obligation to mark modifications as such, and removes the "Notice" file organization clause. Nevertheless, since you have yet to release your project, adopting this combination should be easier now than if you decided to do so in the future (although as far as I know BSD/MIT and Apache are fully compatible with each other).

Of course, I would also like to see more of Exodus released under a permissive license like MIT/BSD, or even Apache if you decide to stick with it. However that is obviously up to you.

Post Reply