Well, a bit of history. Back in 1998 (15 years ago, wow) I took the sources of an old NES emulator named "xNES" and could learn C, as I already had experience with Clipper Summer'87. Yes, it's completely different and designed for creating databases. Anyway, once I could compile, run and improve the code, I took the path for NES emulation. By getting experience and involved in #nesdev "as a child", I could improve the emulator as well as FCE Ultra, which has become open source later. Then, a lot of things that I'm just skipping for now, like the growing of Nintendulator, FCEU and the mighty Nestopia. They're all open source. From the old ones (emulators), I believe to be the only one out of an open source policy.
So, since RockNES is in a mature state, I decided to take the open source way... but I need some advice about it, as if my sources would be even usable for the community, or dismissive at all. There's no 3rd part code, except the use of Allegro library.
Any thoughts?
Choice of a free software license begins by choosing how you want other developers to be able to use your emulator engine in their own applications.
- Copyleft: A third party's changes to your code must be made available under the original license, and the source code for the entire application linked to your code must also be made available.
Examples: Sleepycat License, GNU General Public License - Weak copyleft: A third party's changes to your code must be made available under the original license. The rest of the application using your code need not be made availble.
Examples: Mozilla Public License, GNU Lesser General Public License - Permissive license: A third party's changes to your code need not be made available to the public, but usually your name must still be included among the copyright notices, ensuring that you receive credit for your contribution.
Examples: MIT license, BSD license, Apache license, Zlib license, GNU Permissive License
So how do you feel about this?
As an NES game programmer, my strategy for the past four years has been to release anything specific to a single game under the GNU General Public License and more general libraries under the GNU Permissive License.
I'm not sure what thoughts we can provide that would be helpful, since licensing is a very opinion-based topic.
For example, Tepples tends to release things under the two GNU licenses, while I exclusively use the
2-clause BSD license.
The reason I use this license is because I really don't give a shit what people do with the code I release -- they're going to do whatever they want with it anyway (with or without my knowledge), so all I care about is what's stated in the license: retain the copyright notice + license, and that the author isn't responsible for the ill effects of the code if it damages something. Likewise, I couldn't care less if someone takes my released code and uses it in a commercial product that they sell and make money (with me getting nothing).
The 2-clause BSD license is basically a few steps up from the
WTFPL, lacking all the stipulations/regulations/requirements that the GNU licenses mandate.
So like I said, it's a matter of opinion which you feel is best. It's your decision. :-)
I personally prefer PD, WTFPL, or CC-BY for my hobbyist projects, as I do them for fun or personal reasons, not for money, and I believe that any limitations would only hurt to nice people and may stop them from making something nice. People who aren't care about licenses won't be stopped from anything anyway. Also, involving legal shit into hobbies takes away part of fun, that't plain wrong.
Well, thanks a lot. Just don't forget the other part of my question...
Quote:
(...) but I need some advice about it, as if my sources would be even usable for the community, or dismissive at all.
[EDIT CONFUSION]
I'd like to release the sources only if meaningful in someway. Yes, it's kinda hard to know without seeing them... but I see all the other emulators getting people interested in them.
So with the "how" out of the way, we move on to "why".
I noticed that your emulator is written on top of an abstraction layer called Allegro. Distributing your emulator under a free software license would allow fairly easy ports to other platforms to which the Allegro library has been ported.
Would you say your emulator is faster than, say, FCEUX? A faster emulator would work better for mobile, as it'd run on lower-end devices and sleep longer (saving battery) on high-end devices.
By comparing with a few others, the C code looks easier for reading, but cryptic in a few places, for a few people I believe. The source is well commented, making the life even easier. I don't remember my last benchmark test, but I suppose it has potential.