The PS1 Game Spongebob Squarepants: Supersponge Violates the GPL
twitter.com
twitter.com
"01234567890abcdefghijklmnopqrstuvwxyz" and "01234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ"
It's very possible that separate implementations of this function would use those same constants. It's not as if they're some completely arbitrary strings.
And what, they'd have another implementation of this function, but have a different one with their code because... reasons?
But yah it's probably from Linux, I just don't think the constants alone are a smoking gun.
Anyway. I can corroborate this. Debug code is /really/ harming performance in AAA games. Also, you want to remove your “cheats” that QC use to skip chunks of the game.
It’s just much much much safer to leave the debugging assistants (level skip, etc) in place. Especially back in the days when we couldn’t issue patches after release!
(Also, depending on era, you could feed a cheat code or two to magazines/websites/etc to get another article written about your game.. doubt that trick works any more, though!)
Maybe (uncharitably) you’re trying to look smart or maybe you’re also in the industry and I just don’t understand what you’re saying :/
When I talk about “debug” builds it’s actually a large thing; Not _only_ is it switching the compiler (Microsoft C++ compiler ofc) to build stripped/optimised binaries, it’s also removing things like, built in command consoles, logging subsystems and “phase handlers”, budget profiling for subcomponents of the game (AI, lighting/shadows, props) and also removing all assert statements.
Simple things (like asserts, which are essentially switch statements) need to run in tandem with other processes, when you’re trying to push 60/120 frames per second nearly every switch statement is going to “cost” something. That cost can be high very quickly. So, you don’t tend to leave things in which check conditions of various environment variables.
Anyway, I'm not part of the industry but I do hack around in emulation circles and I've dug pretty deep in some of these old games, my point was that you can definitely end up with dead or almost-dead debug code that doesn't harm performance significantly (because it's never or almost never called) and lingers in the final binary.
>when you’re trying to push 60/120 frames per second nearly every switch statement is going to “cost” something
I mean it obviously depends on the frequency of the test. If you have some check every second that reads like:
if (dump_stats) {
dump_stats_to_stdout();
}
Then it's obviously going to have a negligible impact performance-wise as long as enable_stats is false. Then if this code is not explicitly disabled in the production build you might be able to use a memory hack to switch enable_stats to true and get some potentially interesting output out of it.This is not (just) me trying to look smart, it's stuff that you can actually encounter in some games and firmwares in the wild.
Games with hidden development-related text: https://tcrf.net/Category:Games_with_hidden_development-rela...
Games with uncompiled source code: https://tcrf.net/Category:Games_with_uncompiled_source_code
https://hiddenpalace.org/Climax_lot
From the looks of it, Climax Group primarily developed licensed games and shovelware. Say what you will about the quality, but from the number of build dates for each game, they clearly had their shit together with respect to version control.
That is an insane amount of data! Very impressive.
Just one more area where piracy has our backs.
For a great example of this, take a look at City Of Heroes, and MMORPG that's had a relatively recent revival after someone, somehow getting a hold of the data/code for the server and managing to get it running again. https://www.pcgamer.com/a-fully-functioning-city-of-heroes-p...
The company itself went out of business back in 2012, and otherwise the game itself was just gone.
Even in a case like this where copies of a game were already released eventually the existing CDs will all be lost, degraded, broken, or unusable. Piracy solves this problem by maintaining playable copies and making them available so a creative work can delight, offend, and inspire indefinitely.
In cases where a released work has to be modified to be legal to sell again and a company is willing to make the effort piracy can preserve the work exactly as the artists originally intended. Pirates can do the same in situations where changes are made for other reasons and only the modified works are officially made available. For a great example of that look at the incredible work fans did to restore the original Star Wars.
They too bought the burden of copyright violation.
Interesting, so even if the new copyright holder profited off of the asset, they wouldn't have to comply with the GPL? This is an interesting parallel to real estate, where the last person holding the bag has to perform environmental cleanup, etc.
1. Big Company gets what it wants because Big. Everybody pretends it’s a loophole, in order to get out of having to get in trouble with Big Company.
2. Smaller later companies uses same “loophole” and nobody can say anything, because that would be tantamount to accusing Big Company of misdeeds, and get into trouble.
I suspect these kind of situations are unstable, since as time goes by, the “loophole” will be abused more and more, and eventually it becomes untenable, and a judge will rule the “loophole” moot, (especially if the statue of limitations has conveniently expired for the crimes of Big Company). This process might be slowed in slower industries like construction and pollution, but I would imagine it to be inevitable.
My point is, since this probably only works because Big Company, it only works in similar situations where point 2 applies. It does not validate the general theory of why such things would be judged to be legal in other situations in other industries.
In the UK, these are generally called "phoenix companies" and courts can step in to stop the abuse of limited liability and can apply civil penalties and criminal sanctions to company directors.
I'm pretty sure the answer is "no", but I'd like to know why, it makes logical sense...
Now the makers of this game and the copyright holder for the GPL work might end up reaching a settlement where the game engine is released under the GPL. (I know of one case of this happening: a Japanese visual novel producer, Leaf, released their engine as used in several games e.g. Kusari . As a result of this there's an open-source engine that you can use to play those games on linux). Equally they might end up reaching a different settlement that involves e.g. withdrawing the game from distribution (this happened with the Wii ports of some classic SCUMM games - they used ScummVM in violation of its license, but could not release their code under the GPL without violating the conditions of the Nintendo API they were using).
No, this only means that the game developers are violating the copyright of the copied code. The GPL is not "viral"; including code under the GPL in a project without following the GPL only means that the GPL doesn't apply to it anymore ("[...] and will automatically terminate your rights under this License"). Since there's no longer any license allowing it, the default restrictions of copyright apply, and the result cannot be distributed without the permission of whoever holds the copyright to that piece of code under the GPL.
I believe the answer would be "no". Essentially, the owners/holders of the copyright could, in theory, reach an agreement that would permit the publisher to keep publishing the game under a commercial license. That is, just because the code was licensed to you under the GPL (or available to you under that license), that doesn't mean that it had to be that way for everybody if the copyright holders struck some other deal.
Of course, here, the copyright holder is … everyone who has made changes to the kernel? Significant changes¹ to the kernel? (And see a court for the definition of "significant"?) IDK. For proprietary stuff owned by a single entity it is more straight-forward, but the very nature of FOSS makes this more interesting.
I wonder if it would only require those that worker on that file? (Can it be separated from the rest of the project? Again, IDK, ask a real lawyer!) At least that might be a shorter list of authors, and presumably you only need to involve those up to the point where the code was copied.
¹I say significant because I believe that "significant changes" is what would cause the work to become a "derivative" work, and that person to be the author of that derivative work. But in Oracle v Google, rangeCheck was sufficient for a copyright violation despite being a "trivial" function to most of us, so the bar seems pretty low?
Note that some FOSS gets around the problem of multiple owners by requiring an attribution (e.g. GNU).
> Accompany it with a written offer, valid for at least three years, _to give any third party_, for a charge no more than your cost of physically performing source distribution, a complete machine-readable copy of the corresponding source code, to be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange
The company accepts the licence by using the code (or don't accept it, in which case it's copyright infringement), so they must offer it to any one.
A person or company that violated the GPL would void the permission granted to them by violating the license and would be liable for having done so. But it would take a court ruling to decide what that means for the parties involved.
For example, the court might give the violating party the choice to either release source, OR to keep the source closed but to financially compensate the copyright holder(s) of the code that they violated the license for. For example. Another possible outcome could be that they could say that the violating party is given the choice between releasing the source OR recall the product and financially compensate the copyright holder(s) of the code that they violated the license for.
Like I said though, IANAL.
- negotiate a license,
- pay damages,
- some other remedy, OR
- nothing at all, if nobody with standing (meaning an author of decides to sue.
This last option is by far the most likely.
Are you really protecting software freedoms if it ends up, in fact, discouraging the process of freeing more software?
Besides I think you're being ridiculously alarmist because for one thing archives of the PS1 library (including this game) are trivial to find online, so there's basically no chance for this game to disappear forever and on the other hand if this GPL infringement makes the owner release the source code under the GPL it will make the game more available than ever since it could potentially be ported to any computer you want (although you'll still have to buy the game for the assets).
Now you may argue that having potentially illegal downloads of PSX archives is not the same thing as having some legit source for getting the game, but then I think you're in a catch 22:
- If you think that the owner's IP should still be respected and enforced even though it's an almost 20 yo game, why shouldn't the GPL?
- If you think the GPL shouldn't be enforced because it's an almost 20 yo game, why do you care about the owner's IP?
I'm more of a BSD kind of guy but I really think it's unfair to blame the GPL or its defenders for what is a fuck-up by the original devs. Introducing a huge chunk of GPL code in a proprietary codebase like this is frankly a rookie mistake.
Surely the idea of checking other games for GPL violations has the potential to open more codebases, lest the offenders risk financial penalties.
I have no idea how this would work, but it strikes me as plausible?
I think it's actually a good idea for discovering GPL violations, but false-positives are a real issue: it's trivial to reuse public-domain or BSD code and relicense them in a GPL program, and it's not uncommon obtain a separate license/exemption from the copyright holder. Also, some things are not even copyrightable (e.g. a lookup table of generic data). Discovering identical code snippets don't always mean a GPL violation.
But as long as the threshold is not too low and a real human (instead of a robot) is reviewing them case-by-case, I think it's okay.
It is interesting to wonder how this case may have been handled if it was overall more relevant, though. I think a court might assess the actual value of that one function and say that it was something like fair use. Might be a bigger problem if there's a lot more, though.
The owners of lots of GPL'd works such as the GNU project tend to take an approach of quiet negotiation. They will contact the violators and attempt to inform them about their responsibilities when distributing GPL'd software. They want software to be free for examination and modification and many violations are unintentional.
GPL violations are extremely common, especially with Linux. For example every ip surveillance camera runs Linux/Busybox/etc and I have never seen one that provides source.
For example, programs compiled by gcc (GPL) are not considered derived works and therefore don't need to also hold the GPL license.
In the case of the topic, that appears to be a violation as the game can be considered a derived work. Most violations are handled on a case by case basis if there is legal action due to the nature of "derived work".
If you distribute binary GPL'd software such as the Linux kernel you also have to provide the exact source used to generate those binaries.
Because ip cameras are shipped with binary Linux kernel images they should also provide either the exact source used or an offer of how to get the source.
> For example, programs compiled by gcc (GPL) are not considered derived works
Yep you're right. We probably just misunderstood each other. I was specifically referring to GPL'd components like Linux & Busybox, not any applications that happen to be running on top of them.
These kind of devices can lead to an interesting situation.
Let's say you make Linux-based IP cameras. You accompany every single one you ship with a CD-ROM containing the complete source code. This completely satisfies your GPL obligation with regard to that unit.
As a consumer, I buy one of your cameras. I have no use for the CD-ROM, check my trash collection company website to find out if CD-ROMs go in trash or recycling, and come next collection day it is gone.
A few months later I don't need the camera any more and sell it used on eBay.
The buyer eventually realizes it is a Linux-based camera and wants the source code.
Q: Who, if anyone, is obligated to provide that source code?
A: As far as I can tell, no one!
You are off the hook because you accompanied every binary copy you distributed with the source code. You would only be obligated to third parties if you had elected to distribute the binary without source and accompany it with a written offer to provide the source.
I'm off the hook because my distribution falls under the first sale doctrine, which basically says that if you own a lawfully made particular copy it is not a violation of copyright to sell that particular copy.
I think the correct interpretation is that you are not “distributing” the software at that point. Distributing implies making a copy of the software itself, whereas here you’re strictly transferring your ownership interest in the device and existing binary blobs.
I don’t believe this class of transfer is actually subject to copyright terms.
> These kind of devices can lead to an interesting situation.
> Let's say you make Linux-based IP cameras. You accompany every single one you ship with a CD-ROM containing the complete source code. This completely satisfies your GPL obligation with regard to that unit.
> As a consumer, I buy one of your cameras. I have no use for the CD-ROM, check my trash collection company website to find out if CD-ROMs go in trash or recycling, and come next collection day it is gone.
> A few months later I don't need the camera any more and sell it used on eBay.
> The buyer eventually realizes it is a Linux-based camera and wants the source code.
> Q: Who, if anyone, is obligated to provide that source code?
> A: As far as I can tell, no one!
> You are off the hook because you accompanied every binary copy you distributed with the source code. You would only be obligated to third parties if you had elected to distribute the binary without source and accompany it with a written offer to provide the source.
> I'm off the hook because my distribution falls under the first sale doctrine, which basically says that if you own a lawfully made particular copy it is not a violation of copyright to sell that particular copy.
You must also make the source available upon request under the GPL.
In this case, the kernel source could be unmodified, which could mean that they could just refer you to where they got it.
edit
> Yep you're right. We probably just misunderstood each other. I was specifically referring to GPL'd components like Linux & Busybox, not any applications that happen to be running on top of them.
Yeah misunderstanding there, my apologies! Modifications to the Linux source would require them to also release those under GPL.
In practice, every embedded use of Linux I've seen has included at least some modifications.
The author can sue for damages and receive cash.
I believe there are also violations by vmware and lots of others (I believe ubiquiti?)
That said, there are legitimate ways to distribute GPL code, such as a dual license.
You could write code and license it to company A under one license, and release it under GPL to company B.
company A could have any rights or responsibilities you grant, while company B would have to comply with the distribution restrictions of the GPL.
It's also worth noting that the GPL does not restrict how anyone USES the software, it only restricts how the software is redistributed.
looks like they copied it from a website talking about linux
There must be some kind of remedy available in that event.
I just have the horrors when I look at the package.json file after the front-end folks have been allowed to run free...
Most of the time, nobody even is aware that including some new widget code ends up downloading half the internet, making our code size increase, our build times extend, and opening up a huge volume of attack. No one has any idea what dragons might lurk in that mess, or sometimes even that there might be dragons at all.
Edit: I'm looking at it on mobile, and the only link seems to be a self referential link, not to anything of substance.
I guess this comment is now a) vsprintf and b) a gpl violation, too.
https://github.com/philosophofee/SBSPSS/blob/5c41694e561de9c...
The Linux kernel code:
https://github.com/zavg/linux-0.01/blob/5839d67d5825265fc665...
I was just trying to explain why some of us were confused -- until I tweaked NoScript, the first tweet is shown by itself and is sort of perplexing without the rest of the thread as context.