MAME is now Free and Open Source Software
mamedev.org
mamedev.org
> MAME's License is a modified version of the standard BSD license. The primary modification is that we do not allow commercial distribution or use of MAME, in order to limit some of the obvious abuses of the code. Because of this modification, MAME's license does not fall under the definition of an Open Source (uppercase) license. This is one of the reasons you don't see the MAME source code hosted on sites such as SourceForge.
> Confusingly, MAME is often referred to as open source (lowercase), as its development shares much in common with other open source projects. However, in spite of its freely available source code, MAME may not be used in a commercial setting, as specified by its license.
That's stupid. Open Source has a meaning, which is the OSD: changing case doesn't alter that meaning. You can get source code for Windows 10 too (if you work at the right university) that doesn't mean Windows 10 is open source any more than old-MAME was.
https://books.google.com/ngrams/graph?content=open+source&ca...
http://jordi.inversethought.com/blog/5-things-we-have-forgot...
> Crucially, a user of GPL software is allowed to do whatever they want.
Did you know FreeBSD allows you to build a full release into memory stick right from the source? No developer experience necessary! :-)
Its easy forget that with the GPL, you also pass on the burden of whomever distributes software provides a way to get the source. BSD encumbers you with no such strings attached.
The words "do whatever they want" and "definitely use in commercial setting" may be better set with an asterisk. GPL software is often available for free downloads and by second hand on CD's, notably with access to source code. Its popular among developers. Knowing that, it surprises me how often I see statements expressing GPL as if it were a brand new, moddable car with absolutely no string attached.
GPL software would provide a means to get the source code, but other open source projects do too. But if you hand someone that Ubuntu CD, they definitely can't "do whatever they want". Its obligating them to comply to terms should they distribute it.
> Even resell for money, and definitely use in commercial setting.
The obligations do not run over well with commercial or reselling.
I speak from personal experience and pain having dealt with GPLv2 in a commercial settings years ago. Ultimately business was lost do the the lack of flexibility we could give our customers. We had to deal with whether deploying our code on customers' servers created a distribution. Some customers will only accept running software if its on their servers, full stop.
Many of the most successful public tech companies keep their code proprietary. Not out of pulling one over on you, or to limit your rights, but out of competitive advantage. Many choose to release code at their discretion, often in permissive libraries.
> Except develop the software however they want. (greyed out as if it were incorrect)
My BSD licensed projects can't simply pull in GPL code. My could would then be a derivative, the license would also affect people using code of my distributed with GPL parts.
For GPL, the control over the distribution is uncharacteristically rigid in an open source software ecosystem of shared libraries built from source, developers contributing upstream on projects despite terms forcing reciprocity. The terms cascade downstream and steer the ultimate fate of the project - its not backwards compatible. You're walling yourself off to developers who can't comply with the terms GPL, and if you lose developers, you're losing potential contributions to the project.
Except develop the software however they want.
> Except develop the software however they want.
I don't know where you got that idea from. You can develop the software however you like. That's a technical question. The only requirement is that people you distribute your software to must also get the source code.
The GPL's job is to protect user's freedom. The developers don't get any special treatment.
> I don't know where you got that idea from.
Many employers won't allow GPL codebase.
The license isn't backwards compatible. I can't simply pull GPL code into my BSD licensed project. Even a snippet
You can't, say, simply copy and paste a struct out of git or even libgit2.
> You can develop the software however you like.
Heh, its notorious for causing roadblocks in development. Look up the stories on LLVM/Clang, ZFS in Linux.
Explain it to your employer better then. Or find a better employer. Not to mention they are almost certainly using GPL code /somewhere/.
> The license isn't backwards compatible.
GPLvX or later makes them pseudo-compatible (you can release a combination under a newer license). That works fine for most people.
> I can't simply pull GPL code into my BSD licensed project. Even a snippet. You can't, say, simply copy and paste a struct out of git or even libgit2.
1) Yes you can, it'll just become GPL licensed as a whole. 2) I don't think anyone would consider copying a structure as being a "significant portion" of the code. In fact, in C, structures aren't code at all, they're an API (the `struct` keyword generates no code). And I think we all agree as a community that APIs are not copyrightable (or else Linux and GNU would be the largest copyright violations on the planet).
>> You can develop the software however you like. > Heh, its notorious for causing roadblocks in development. Look up the stories on LLVM/Clang, ZFS in Linux.
ZFS on Linux / Dtrace are FUD. Given that Oracle already distributes DTrace with their Linux distribution, it's clearly dual-GPL licensed DTrace to their customers. If you agree that ZFS being included with Linux would be a GPL violation (I don't, because the spirit of the GPL is applied, and the binary itself is not a violation because CDDL allows sublicensing of the resulting binary), then distributing it as source that is compiled on the users' machine (DKMS) is fine. Not to mention that Oracle will not have standing to sue (their license has not been violated in the case of distributing CDDL code with the GPL -- the only people you can argue have their copyright violated are the the Linux kernel guys and I don't see why they would sue people for the dubious license under which the source code is distributed -- nobody seriously believes their whole work will be under the CDDL, only code that was ported directly from illumos's ZFS).
The LLVM/Clang thing was caused by technical decisions in GCC, where they believed that making something like LLVM's IR would allow people to make proprietary compilers based on their technology (which is a valid grievance if you care about preserving software freedom). The point is that it was a technical decision.
The only requirement you have if you use the GPL is to accompany your binaries with the source (or the other two provisions in the license which aren't as well-used as others).
When used on an end-user application, GPL does a fantastic job. But in library use, it's a very viral license.
Say you wanted to write a KDE-native application back when Qt was GPL or commercial only. You couldn't do it by using GTK+ ... it wouldn't look quite right. You would have to pay money, or make your application GPL as well. And what if you couldn't pay?
It's not hard to imagine a world where the GPL truly took off, and everything from the top-level GUI toolkit all the way down to libc functions were all GPL'ed. You'd be forced to start from absolutely nothing to make even simple applications. Years and years of work just to get a basic desktop application going. And it would be entirely alien to the rest of the OS. That's not really an "option" anymore. Nobody would implement that much just to port to one OS.
No, we're not there. And no, we're never going to get there. Most library writers wisely choose the LGPL, and many others release everything under the BSD license. But if you take the GPL to its extreme conclusions, you can see why people consider it viral.
Say you wanted to write a streaming application and have popular films on it. You would have to pay money, and make your application follow the restrictive demands of the movie publishers. And what if you couldn't pay?
You'd be forced to start from absolutely nothing, with no proprietary movies at all. Millions and millions of licenses cost just to get a basic streaming application going, and it would entirely alien to an community where everyone share and share alike. That's not really an "option" for most developers of streaming services.
Proprietary movies is already in its extreme conclusion, and you can see why so many people consider proprietary licenses as deadly radioactive material that puts people in jail.
Anyone who has ever written a program for DOS, Windows, OS X, Linux or BSD has piggybacked off others' work. Anyone who has ever used a compiler to build their applications has. By that logic, proprietary programs should not exist at all; except maybe the OS kernels.
And you're welcome to think that way. I don't care for proprietary applications much myself. But I think you're pretty far removed from the mainstream at this point to advocate for the destruction of sales for the entire commercial software industry.
> You must choose: use GPL and make your code GPL too, or release closed proprietary software and start from scratch.
And that's exactly what people do. It's made substantially easier because most of the critical libraries (C runtime, GUI toolkit, etc) aren't under the GPL.
Anyway, to me GPL and LGPL always was the same thing but in different contexts: GPL = Applications; LGPL = Libraries - a nice trick is instead reading Lesser GPL, read it Library GPL. It fells better.
Linking this library statically or dynamically with other modules is making a combined work based on this library. Thus, the terms and conditions of the GNU General Public License cover the whole combination.
As a special exception, the copyright holders of this library give you permission to link this library with independent modules to produce an executable, regardless of the license terms of these independent modules, and to copy and distribute the resulting executable under terms of your choice, provided that you also meet, for each linked independent module, the terms and conditions of the license of that module. An independent module is a module which is not derived from or based on this library. If you modify this library, you may extend this exception to your version of the library, but you are not obligated to do so. If you do not wish to do so, delete this exception statement from your version.
There's no distinction about static vs. dynamic linking, and no specific requirement like the LGPL to be able to relink the application (though the GPL's general requirement to produce useful source + build scripts for the library still applies).
I worked a bit on Classpath but that was a long time ago. There are like, lots and lots of emails + irc logs to dig up about that little exception and what it means. Not having things tested in court is a problem, and the lack of funding for FSF lawyers is another.
You can link it with whatever proprietary code you want, but keep the LGPL library free. As long as you don't want to link LGPL-licensed library statically, it's quite simple to comply with license terms.
There's also MPL (v2), that's weaker than LGPL, roughly operates on file-level (rather than LGPL's library-level).
IGNORE WHAT'S BELOW. IT'S INCORRECT.
Well, IANAL, but, I believe, technically, such modifications still have to be under GPL-compatible license (or organization is violating original authors' rights). I.e. anyone within the organization, who had used the software, must be granted all the freedoms GPL requires to be granted. Whenever organization members actually exercise those rights are up to them, of course.
I don't think it's a bad thing. It's only fair - if your business relies on proprietary sauce that you really want to keep secret - some may still consider helping you (and they use BSD, MIT or LGPL) while some may not want it this way (and use GPL or AGPL).
I've updated the comment.
1. Employee executes GPL binary on company's computer. I'd consider this binary to belong to owner of the computer - the company. So employee may not have the right to ask for the code.
2. Employee gets GPL binary from company, executes it in his computer. Is he forbidden to get access and distribute the source code? Can a company make restrictions around the GPL to its workers?
Naturally, the license didn't stop some companies. This included purpose-built ARM-based arcade boards running MAME, to which MAMEDev responded in the most MAMEDev way possible: by cracking their encryption and adding them to MAME as bootleg sets [1].
[1] https://github.com/mamedev/mame/blob/master/src/mame/drivers...
I don't understand what you mean. Why is it bad to draw attention here?
> some contributors didn't want to see commercial MAME arcade cabinets
Why do you suppose that is? It's infuriating to see someone else make a lot of money with something you developed for free?
Surely the world would have been a better place if they allowed all commercial use. Someone would have put marketing money into MAME arcade cabinets, etc., and a lot more people would be using it and aware of it.
Non-commercial use clauses were and are common with emulation software because the perception is that this crosses a potential line into which such litigation becomes clearly justified, and there's legal history to back it up. Both Bleem and Connectix were essentially sued into oblivion for attempting to sell commercial console emulators.
It's also something of an ethical line in the sand. Copying or cloning old games that no one is making money on anymore for personal use is a gray area as it is, but crossing the line into trying to charge money for it was seen as exactly the sort of piracy people associate with shady companies in Hong Kong and bootleggers selling bad CD-ROMs at county fairs.
So it became pretty much standard practice for a lot of emulators and emulation sites to have explicit non-commercial use clauses in their TOS or licenses.
This meant the copyright holders were paying attention to MAME.
MAME didn't want to deal with the lawyers, and wanted to try to stop this piracy.
The vast majority of ROMs are not licensed from the original authors, and are used in violation of copyright. Many people use emulators to run games they don't own; that holds even more true for arcade cabinet ROMs than for home game consoles. And most emulator authors have a passion for the games and systems, and don't actually want to see harm done to those companies; they often build emulators out of the desire to see games and systems preserved and made available to a new generation.
On top of that, many arcade machines already had commercial cloning going on; unlicensed or modded arcade machines with clones of the hardware and copies of the hardware were common.
So, developers didn't want to do anything that would come across as encouraging commercial use of unlicensed game ROMs.
The source code of MAME was done by reverse engineering the ROMs to figure out how they work and emulate the hardware in the arcade machines. MAME emulates a lot of processors and special chips and not all of the code was available for commercial use. It has to be rewritten so that it was different code.
If I recall MESS is included with MAME now as part of some merge. https://github.com/jsmess/jsmess
The JSMESS project has been integrated into the upstream MAME repository at https://github.com/mamedev/mame and this repository is now defunct. Follow the instructions at https://raw.githubusercontent.com/mamedev/mame/master/docs/e... to do an Emscripten compile with unmodified MAME source.
The argument as I recall it from back then was that they did not want to hurt the arcade business, the manufacturers of arcade games would suffer if instead of purchasing their arcade machines, their potential customers would load up a PC with MAME and rig it to a coin-slot/cabinet.
Also the MAME (and MESS which is the same for computers and consoles/handheld) has a policy of not emulating arcades/etc until they are no longer supported/out of circulation.
They probably didn't want commercial coin-op arcade venues setting up shop operating with MAME machines
These are basically trivial now with Raspberry Pis, right?
But beyond that, a commercial MAME cabinet would require ROMs. People have built unofficial cabinets of questionable legality incorporating a pile of ROMs, but a commercial cabinet would require actually licensing specific games.
I ran into problems with NeoGeo games.
Nintendo64 and Playstation emulation on ARM SBCs is probably in a similar state, for a lot of games. Some games will run beautifully, some will be hopelessly slow.
Maybe the ODroid could make it happen but the Pi2 simply cannot.
The source was available. But it was neither open source nor free software. Now it is.
From what I can tell, "open source" does indeed mean "the source code is freely accessible." From Wikipedia:
> Generally, open source refers to a computer program in which the source code is available to the general public for use and/or modification from its original design. [1]
I think what you are referring to are "OSI Approved Licenses" (OSI = Open Source Initiative, which is an entity). The OSI defines its Open Source Definition which sounds very much like yours. Importantly, the following sentence can be found in the Wikipedia article describing open source licenses:
> One popular set of open-source software licenses are those approved by the Open Source Initiative (OSI) based on their Open Source Definition (OSD). [2]
Sure, "don't use Wikipedia as a reference". But we're dealing with colloquialism here, so I think it's actually pretty accurate. Colloquially, it seems that "open source" != "OSI approved". I have seen people capitalize "Open Source" in an attempt to indicate that they're referring the Open Source Definition, but this is confusing in my opinion, and it really would be more clear to just say "OSI approved".
[1] https://en.wikipedia.org/wiki/Open_source
[2] https://en.wikipedia.org/wiki/Open-source_license#OSI_approv...
https://books.google.com/ngrams/graph?content=open+source&ye...
What do you mean? I haven't really looked too deep into the site, but the homepage and download pages at least don't really say anything that would give me that impression.
> it was open and free, just not fully considered FOSS
is that MAME was open (the source code was published, and updates were continually amended to that publication) and free (the developers of MAME did not charge a fee for using, reading or otherwise obtaining either the source code or compiled binaries). Whether or not there were additional restrictions on how you could use it (freedom of use) is somewhat tangental to their point.
Additionally, as you can observe, both "open" and "free" are lowercase variants of the words, where as you write "Free Software" and "Open Source", which are capitalized pronouns. Open Source and software that is distributed openly as source code are different, but they are cut from the same cloth. Being pedantic doesn't help anyone.
Kudos to the team for sorting it out, and to all the old contributors who agreed to relicense their code where necessary.
Sadly tho, I don't think that this was a gating issue at all for the companies :-(
Very nice job to the team at Mamedev tho! Congrats on what must have been a long and tiresome journey to get to this point!
If their goal is to prevent misuse of the project by unethical profit-minded entities, GPL3's anti-tivoization language would have ensured that even if a company profits from building or running a MAME-based cabinet (which is good!), they wouldn't be able to deprive their customers' freedom to fix or upgrade the software that runs it. (As they now can!)
It's even worse for the permissively-licensed parts of the code, which can now be used to build locked-down proprietary cabinets that users can't even inspect. I'm glad they got at least part of the project covered by copyleft.
The "common questions" on their site contains some confusing claims, too:
> Q. Can I include MAME with my product? > A. Yes. You can use 3-clause BSD compliant files but project as whole is under GPL-2.0 license so in case you wish to use those part you need approval from specific developers.
You'd only need permission if you didn't want to comply with the terms of GPL2. There's nothing in GPL2 that requires permission for inclusion with a product.
Maybe that's just leftover from before the license change?
You coax the blues right out of the horn, Mame,
You charm the husk right off of the corn, Mame,
You've got that banjoes strummin'
And plunkin' out a tune to beat the band,
The whole plantation's hummin'
Since you brought Dixie back to Dixie land.
https://youtu.be/mjZ7UwHaY8g