Making Exodus Open Source: What license model to use?
Posted: Mon May 20, 2013 1:17 am
So, I'm planning to release Exodus as open source sometime soon. There is the looming question of which license model to use though, and I'm currently undecided on which direction to take. There are a few things I know I want the license to do:
-Must not allow free commercial use. That said, I'm not opposed to commercial use, as long as it doesn't impact on the free use of the platform for non-commercial purposes. Commercial use would require some kind of formal license arrangement and payment however. I don't see this happening anytime soon, if ever, but if it did, it could however open a can of worms in terms of what to do with that money and where it should go, if a large number of contributors were involved in the project. I want to make it clear from the get-go though that I'm not opposed to commercial funding coming in for this project, but I'm not sure how it should be managed. In my mind, the project could essentially be run on a not-for-profit basis, and community contributions could essentially be handled in the same way, with the money raised being fed back into the project to drive its development forward. I'm more than willing to hear any input anyone might have on the matter.
-Must not allow the core of the platform itself to be taken, forked, and released as a competing platform. Basically, this means only official builds of Exodus will be allowed to be distributed. I don't want this to be like linux, where you've got 15 different flavours of Exodus. There needs to be a single core platform. There can be multiple implementations of any one device, and users should be able to pick and choose which one they want to use, but a single platform needs to exist. Even worse would be someone picking up the main sourcecode, quickly tacking a few features on the side, and that release becomes more popular, and I lose main control over the project. In order for a project like this to work it needs a single focused direction. Note however, that I am not opposed to the sourcecode for an existing core, like an individual processor or device, being taken and forked, and I'm not opposed to people who do work on one or more cores publically releasing builds of modifications or alternate builds they have made for individual cores outside the main Exodus release. This means plugins and the emulator itself probably need to be licensed slightly differently, perhaps with just an extra clause for the main platform to add this restriction.
-Must force all plugins to be open source. One of the main goals of this emulator is to document and preserve hardware into the future. Closed source cores don't help that, and a very well made closed source core may discourage the development of a competing open source core. When the closed source core is inevitably abandoned, or gets spun off into a commercial product and the free version for Exodus gets dropped, that'll leave us effectively back at square one.
-Must allow the use of closed-source or pre-compiled components by plugins, as long as those components don't contain implementation for a given plugin which hide important details of how that plugin works, or how a given device is implemented. Basically, I don't want to exclude the use of third party libraries just because their license is less permissive than ours, but I don't want people to be able to write a "wrapper" plugin that essentially just calls a separate closed-source component in an attempt to work around the open source license requirement.
I don't know that any "standard" open source license meets the requirements I'm after. There are probably also a lot of issues I haven't even considered yet.
One thing that I think needs to be clarified is exactly what a contributor's rights are, and what responsibilities we have to past contributors. Obviously everyone has copyright over anything they create, but what if commercial funding does come in later, or if community donations are received? Do previous contributors have any claim to money that is raised? What if a change to the licensing model is proposed? Do all previous contributors need to give consent in order for the license to be amended? What if a previous author's contributions are ultimately rewritten, do they retain any rights or claim to the resulting work? I don't know the answers to these questions. I don't want to discourage contributions to this project, but I also don't want to stuff things up in the future or hold this project back from evolving because of a lack of understanding on both sides about what exactly it means when you make a contribution to this project.
Anyway, there's a lot to consider when it comes to licensing, and it's hard to fix if you get it wrong, so I don't want to rush into it. I'm very interested in any input or feedback anyone might have.
-Must not allow free commercial use. That said, I'm not opposed to commercial use, as long as it doesn't impact on the free use of the platform for non-commercial purposes. Commercial use would require some kind of formal license arrangement and payment however. I don't see this happening anytime soon, if ever, but if it did, it could however open a can of worms in terms of what to do with that money and where it should go, if a large number of contributors were involved in the project. I want to make it clear from the get-go though that I'm not opposed to commercial funding coming in for this project, but I'm not sure how it should be managed. In my mind, the project could essentially be run on a not-for-profit basis, and community contributions could essentially be handled in the same way, with the money raised being fed back into the project to drive its development forward. I'm more than willing to hear any input anyone might have on the matter.
-Must not allow the core of the platform itself to be taken, forked, and released as a competing platform. Basically, this means only official builds of Exodus will be allowed to be distributed. I don't want this to be like linux, where you've got 15 different flavours of Exodus. There needs to be a single core platform. There can be multiple implementations of any one device, and users should be able to pick and choose which one they want to use, but a single platform needs to exist. Even worse would be someone picking up the main sourcecode, quickly tacking a few features on the side, and that release becomes more popular, and I lose main control over the project. In order for a project like this to work it needs a single focused direction. Note however, that I am not opposed to the sourcecode for an existing core, like an individual processor or device, being taken and forked, and I'm not opposed to people who do work on one or more cores publically releasing builds of modifications or alternate builds they have made for individual cores outside the main Exodus release. This means plugins and the emulator itself probably need to be licensed slightly differently, perhaps with just an extra clause for the main platform to add this restriction.
-Must force all plugins to be open source. One of the main goals of this emulator is to document and preserve hardware into the future. Closed source cores don't help that, and a very well made closed source core may discourage the development of a competing open source core. When the closed source core is inevitably abandoned, or gets spun off into a commercial product and the free version for Exodus gets dropped, that'll leave us effectively back at square one.
-Must allow the use of closed-source or pre-compiled components by plugins, as long as those components don't contain implementation for a given plugin which hide important details of how that plugin works, or how a given device is implemented. Basically, I don't want to exclude the use of third party libraries just because their license is less permissive than ours, but I don't want people to be able to write a "wrapper" plugin that essentially just calls a separate closed-source component in an attempt to work around the open source license requirement.
I don't know that any "standard" open source license meets the requirements I'm after. There are probably also a lot of issues I haven't even considered yet.
One thing that I think needs to be clarified is exactly what a contributor's rights are, and what responsibilities we have to past contributors. Obviously everyone has copyright over anything they create, but what if commercial funding does come in later, or if community donations are received? Do previous contributors have any claim to money that is raised? What if a change to the licensing model is proposed? Do all previous contributors need to give consent in order for the license to be amended? What if a previous author's contributions are ultimately rewritten, do they retain any rights or claim to the resulting work? I don't know the answers to these questions. I don't want to discourage contributions to this project, but I also don't want to stuff things up in the future or hold this project back from evolving because of a lack of understanding on both sides about what exactly it means when you make a contribution to this project.
Anyway, there's a lot to consider when it comes to licensing, and it's hard to fix if you get it wrong, so I don't want to rush into it. I'm very interested in any input or feedback anyone might have.