Tuesday, June 23, 2009

GPL, ScummVM and violations

I am sure you saw the news post item about certain GPL violation.

Let me present here some more details about the case.


Disclaimer


Fingolfin and cyx are bound by the agreement signed by the lawyers. They are not allowed to talk about the case. Other developers are not, and there is pretty handful of them who know at least beginning of the situation. We are not happy about the outcome, cyx and Fingolfin included.

Short story


As you may imagine, we are closely watching the market for ScummVM-supported games. One of the main reasons is provide an up to date information on our Where to buy games list. Thus, we were pretty glad and interested to hear that there are upcoming Humongous Entertainment titles on Wii. Thus, as soon as the games were on sale, couple of developers bought them.

Suddenly something quite unexpected happened. I got 2 independent reports from 2 completely different sources, even from different countries that apparently there is ScummVM inside. I was not surprised by the fact of ScummVM usage, as there are already Revolution games and GOG.com who sell ScummVM as part of their distributions, still a surprise was that there were the SCUMM-based games. Thus, I quickly requested to inspect the box for copyright statements, and as such, there came a surprise.

Clearly, it was a violation. Further inspection showed that it was even a blatant violation. I addressed to my friend, google.com search engine, and I found following facts:


  • Apparently Atari contracted porting work to their long time partner, Majesco Entertainment.
  • Majesco Entertainment in turn subcontracted the work to Mistic Software, a Canadian-based game shop
  • Mistic Software has its development office in Chernigov, Ukraine, locally presented as Mistic Soft LLC who did the actual work


These Mistic Soft guys got the game assets and sources (this is obvious from the fact that they were able to insert their names into game credits seamlessly), but instead of performing actual work they went a cheap way.

Inspection of the game binary (we dumped it on SD Card on Wii with homebrew channel, it's pretty small) showed that they based their work on ScummVM 0.9.0, inside there were full credits to ScummVM Team (with couple placeholders for their names, though they left them empty), as well as such goodness as "This might be broken -- please report where you encountered this to Fingolfin" or "Tell sev how to reproduce it". Judging from the symbol names they rolled out their own backend, and used Nintendo tools for that.

Then we performed some playtesting on the real thing in order to find clues that ScummVM is inside. Pretty fast we found a 0.9.0-era bug in Freddi Fish. Let me demonstrate it:



Note that gfx glitch on Freddi's left eye. It is right at the beginning of the game, when Freddi reads a letter from the bottle, and is easy to spot on the console. There could be other bugs, but that was enough. Now this bug is fixed in ScummVM.

The development



We were quite shocked. It looks like Mistic Soft took money for all the porting efforts but instead of that just stacked together a ScummVM build! Of course, it was easier (my estimate, that it requires about 2 full time weeks to port ScummVM to new platform), since as I suspect, original interpreter is not very alignment-safe and is not endianness-agnostic as ScummVM is.

Thus, we started to discuss what should we do with the case, and decided to approach gpl-violations.org. We got a lawyer which specializes on such violations, and pretty soon we sent a letter to Atari in Germany (the fact that the games being sold in Germany eased the work considerably).

First they started to deny everything. This is a pretty common thing among the lawyers, and also as I understand, they were not aware of the issue. Consider this: These programmers from Mistic Soft just provided the binaries to their Quality Assurance department, and the games worked well (as ScummVM does). They found no bugs, passed the work to Majesco, and those reported about successful project completion to Atari. Of course nobody except the developers (and perhaps their immediate managers) knew whose code is in there.

So, first Atari lawyers thought that we are going to sue them for zillions of Euros, and they prepared well for the fight. Once they got to know that only thing we are demanding is stick to GPL, they relaxed and the negotiations went much better.

We discussed that they could put stickers on those games which are being sold, and put ScummVM copyrights on new prints, mention us on their site. And it was really nice at first, but pretty soon the lawyers found that Nintendo explicitely prohibits use of open source software together with their Wii SDK, and as such it was a big fault from Atari side.

Thus, instead of being nice they decided to go and hit us badly.

At this very point let me go a bit astray and explain some things about ScummVM. ScummVM is a collection of game engines. There are two major categories of them. Part of the engines is based on original source codes provided by the IP right holders, and another part is partially produced with reverse engineering. Reverse engineering, and particularly disassembling is legal in majority of countries, Germany included. Another approach for reverse engineering is so called Chinese Wall technique is legal in all countries, US included.

SCUMM engine, later versions of which is used in Humongous Entertainment games is one of the engines which was reverse engineered, and that is what the lawyers tried to blackmail us for. In result this all turned into a completely different, much more complicated case.

Thus, there were two routes: 1. Go to court. Defend ScummVM, defend our techniques, spend a lot of time, money. 2. Arrange some kind of settlement agreement.

The finals


Thus, the facts were:

  • There is a GPL violation (their denial has to be proven in a court, strings in executables and the bug above clearly show it)
  • Atari could not release source codes because of Nintendo NDA
  • Atari could not put GPL clause because of Nintendo NDA
  • Atari could not "buy out" ScummVM from us
  • There is no possibility to double license ScummVM, at least SCUMM engine
  • We do not need any money as a "bribe to keep silent"


And we started to discuss. The rough details of the final settlement were: Fingolfin and cyx can post an agreed "press release." They are not allowed to talk more about it. There is a period of time in which all current copies have to be sold. Any copies beyond this period or any reprints get fined with quite high fine for each new/remaining copy. The remaining stock has to be destoryed. There will be no single usage of ScummVM for any of upcoming games without our knowledge. Atari makes a significant donation to Free Software Foundation. Atari covers all expenses on gpl-violations.org lawyers.

Of course, we are not happy about this, as GPL is being violated, but it was better than to dive into many months long trial case.

So, when you will see Pajama Sam, Freddi Fish or SPY Fox games for Wii now in stores, know, that ScummVM is in there. And when you hear about ScummVM, remember, it is a commercial grade software which even Atari is not ashamed to put their label on.

23 comments:

haf said...

Wow, that's a pretty serious thing there. But if I understand you correctly, Atari won't produce any more units of the games in question and will only sell the remaining stock for a certain time. As they cover the expenses of the parties involved and donate a hopefully large amount of money, I think this is a preferable outcome of the situation.

However the Nintendo policy and NDA about open source software is very bad indeed.

As far as I know, the Wii release of Indiana Jones and the Staff of the Kings also contains a copy of Indiana Jones and the Fate of Atlantis. Maybe you should check that game for ScummVM code as well. ;)

spookypeanut said...

Thanks for the explanation. Suddenly the whole situation fits a bit better, I (and others) could not understand why such a poor "settlement" had been agreed on, but that all makes sense now. I was also not aware that Atari had agreed to stop selling the game: this must be a blow for them, and will make them reconsider using that developer again.

"And when you hear about ScummVM, remember, it is a commercial grade software which even Atari is not ashamed to put their label on."

Brilliantly put. This is something all developers should be very proud of.

clone2727 said...

@haf: No, it uses a LucasArts SCUMM interpreter with version 5.2.28cd.

@sev: Nice picture :P

martini said...

Even that Atari and Mistic Software has all the fault here for violitaing the GPL license, this put focus on another thing.

Nintendo is very closed with their game development platform. Sure, ScummVM is ready to be used in a commercial grade software, but with that Nintendo policy other games companies can not take advantage of using ScummVM code, and us (as ScummVM users) will not be able to see the improvements in the code made by comercial games companies.

Even that Nintendo is not part of this legal problem right now, their short vision for open source software will hurt game developers in the long term.

sev said...

@haf: As we know today, Indy port is a proper one. I.e. it is a standard LucasArts-brand SPUTM.

@martini: Well, take a look at the problem from the business point of view. Are there any successful open source games? I know just couple of them. And on another side is risking of giving away the trade secrets, losing money on licensing their technologies, etc.

After all currently Nintendo is on top of the market with their current approaches and there is no reason from them to change. At least in the foreseeable future.

Antoine Chavasse said...

"And when you hear about ScummVM, remember, it is a commercial grade software which even Atari is not ashamed to put their label on."

It's not surprising at all. If you think that commercial grade games are good quality, brilliantly put software, think again. ScummVM is very likely to be ten times better than most of the code I've had the displeasure to work on in the industry.

Also, this whole affair is not entirely surprising either.

Those silly situations where a company like atari would ask a big studio to develop a game and in turn they contract the developpement for some of the target platforms to yet another company - they tend to happen more than often.

And so, in such a situation, the only people who have any real technical knowledge of the game are those working at that last contractor in the chain (those who do all the actual development work and are barely even mentioned on the box if at all).

The upper echelons of the process only pass around some binary files and perform some QA. They don't have the faintest idea what's in the binaries they publish, in fact it's usually mostly middle management people like producers and such who in my experience barely know how to open a zip file.

gwillen said...

"There is no possibility to double license ScummVM, at least SCUMM engine"

Is this because not all the ScummVM developers would agree, or because it includes some other code licensed under the GPL?

It seems to me that, unless you expect Atari to turn around and sue their subcontractor, preventing the distribution of the game does not punish the right party.

Would it not make more sense to say "we the ScummVM developers understand that it's too late to remedy the problem at this point, but we'd like to have our high-quality software out in the world being used, so we will agree to relicense it on a one-time basis, in exchange for clear labeling on the box that you used our code"? I understand that this would require the assent of all developers, but it seems like it would have been the right thing to do.

You could even ask for the source of the ported ScummVM code along with the settlement -- just exempt them from opening up any Nintendo code, as would be required under a strict reading of the GPL -- and then everyone should be happy.

sev said...

@gwillen:
The reason for not being able to relicense SCUMM engine is simple but sad. One developer is dead for several years now. Of course, there is always a possibility to rewrite his code.

At this very moment we already have some parts of ScummVM LGPLed by request, and there were successful negotiations to dual license one whole engine. I hunted down every key developer and got their aye on the issue, although for some reason the other party did not continue the deal, but that's a different story.

Zacqary Adam Green said...

"Nintendo explicitely prohibits use of open source software together with their Wii SDK"

But World of Goo uses the Open Dynamics Engine. Wouldn't that be a violation?

dacresni said...

people on Slashdot have posited the TiVo- lization loophole in the GPLv2, which GPL is ScummVM under? I myself was going to ask about the LGPL but ScummVM would have to already be under that licence.

Sly said...

I'm curious about the "Nintendo explicitely prohibits use of open source software together with their Wii SDK" statement as well. I've got the Wii SDK here with all the docs, and I cannot find that reference. If anyone knows more about it, please let me know.

Yngve said...

One developer is dead for several years now.

Can't you contact his/hers estate and make agreements with them? Or is there something else that makes this problematic?

Fingolfin said...

There are far more than a hundred people that hold claims to various parts of ScummVM. In theory, we would have to track down everybody who contributed a patch bigger than a few lines at some point. Track down all of these people (and the heirs of our one dead developer), then get all of these parties to sign an agreement to change the license resp. to add a dual license resp. to transfer copyright (in states where that is possible) to one of us.

After this huge tedious amount, we could grant other people access to ScummVM under a non-GPL license.

This process would take months to complete, countless emails, phone calls, letters, handling the texts, contracting a lawyer to verify everything is right -- all that w/o any compensation, in our spare time (the one we usually use to work on ScummmVM). All that to help companies do something we don't actually want, namely use our code under a non-GPL license.

So... *why* would we want to do that, did you say? :)


@dacresni: ScummVM is GPLv2, but I don't see how the TIVo loop hole has anything to do with all of this?

Paul said...

Nintendo does not have a problem with open source software. Nintendo has a problem with releasing their SDKs and libraries publicly. GPL software requires the application developer to make available all application source code, and thus the source code that uses the SDKs. Open source is not the problem here; GPL is the problem here. FYI, I am a licensed Nintendo Wii developer.

sev said...

Weird. Some bloggers state that "Atari and Majesco" were cooperative about the issue.

Their good cooperation lasted for several days out of 5 months long case, so really most of the time they tried first to blame us, and after that concentrated on minimizing their own losses in the case.

I wouldn't call that good cooperation.

hydr0x said...

what about the pc versions of the three games? And can you tell us how long they are allowed to sell them?

sev said...

The PC versions are fine. And no, I do not know the final dates and amounts. All I can say with confidence that we are talking about months here.

panzi said...

Why is a donation to the FSF made? What hast the FSF to do with all this? The copyright is with all the developers and wasn't passed to the FSF, right? All the other developers listed in COPYRIGHT could still sue Atari, right?

Marcello said...

@fingolfin
I guess who you really have to contact depends on the copyright statements.
I guess that most will be labelled "the scummvm team" or something.If this is the case you can probably get through by having the current developers to sign.
Of course this leaves the possibility of some "derived work" issue.

Fabio said...

@Paul:

GPL software requires the application developer to make available all application source code, and thus the source code that uses the SDKs. Open source is not the problem here; GPL is the problem here.


No.

GPL require to release under the GPL code derived from other GPL code. The use of the Wii SDK is subject to the Wii SDK licence. When you release a software for Windows under the GPL you don't need Windows to be re-licensed to GPL... In this case Mist should have released their modifications to ScummVM under the GPL, but not the Wii SDK which for sure it's not a ScummVM derived product.

ssokolow said...

@Fabio:

Anything you link GPLed code against must also be GPLed. There are two exceptions to this which prevent things like Windows from being force-GPLed.

First is the Windows example: GPLed code doesn't link against the Windows kernel or system services. It uses system call APIs and inter-process communication protocols.

On primarily GPLed platforms (Linux), things like linking exceptions and use of the LGPL allow stuff like Skype and Opera to be compiled using native toolchains.

IANAL, but basically, since anything you build for the Wii has to link against its SDK, unless Nintendo opens up the license, it's illegal to distribute binaries of GPLed code compiled for the Wii.

Michael said...

Hire a GPL lawyer and GPL wins big settlement. Developers win modest press release. Atari wins, Stallman wins, developers clearly lose.

Martín Itúrbide said...

@sev: Here is a response to the comment you told me:

"@martini: Well, take a look at the problem from the business point of view. Are there any successful open source games? I know just couple of them. And on another side is risking of giving away the trade secrets, losing money on licensing their technologies, etc."

I believe there could be an equilibrium here. For example let see Quake. The 3D engine is open source, but the levels, textures, enemies, weapons are commercial and separated.

It will be desirable to see improvements on the ScummVM engine from big companies, and do whatever they want with the games created for it.