IC2 Classic

IC2 Classic

2M Downloads

GPLv3 Violation

Nax opened this issue ยท 33 comments

commented

Hello,

This mod includes code from Compact Solars (https://minecraft.curseforge.com/projects/compact-solars).

Because Compact Solars is licensed under GPLv3, this mod is licensed under GPLv3 as well.

The GPLv3 License requires source code to be publicly accessible. Please upload the source code of this mod in order to comply with the license.

commented

Have you actually seen ic2 code? Or are you just assuming because they have the same features? I have seen ic2 classic's code and I know that the code is far different .
There is no license violation; the only one there would be is if ic2 classic did what you were asking, therefore it's not happening.

commented

Well, that's a Catch-22. Of course I haven't, since the source code is not distributed.

And of course the code is gonna end up different, especially after a while and considering the original mod targeted Exp and not Classic. But taking GPL code and modifying it does not make it non-GPL.

Also, the assets are byte-for-byte equivalent to the ones used in CompactSolars, so this is clearely not a clean re-implementation.

commented

Also, the author seems to make a habit of these kinds of violations, like there:

https://github.com/TinyModularThings/PipeAdditions/blob/master/LICENSE

This is clearely GPLv2, as per the author's own license choice, but the source code was never distributed while the .jar was distributed, and the author adds additional restrictions that are incompatible with the GPL.

commented

If you haven't then where do you get the idea that ic2 classic uses the same source code? Also the textures are not the same.
As for bytes did you look at what the ones and zeros of each image are on compact solars and ic2 classic are? Which by the way I don't know of anyway that would be possible. Did you even look at ic2 classic's textures at all? Or are you just assuming with no proof?

commented

If you are going to make such bold accusations they should include proof. Saying something is a violation doesn't make it one. What assets match? What is your evidence.

Also in reference to your other post regarding pipeadditions. Have you read the gpl? Last I saw it requires making the code available upon request if you have distributed the binary, not posting it on github or actively distributing it.

You should do more research and provide better (or any) evidence before making such accusations.

commented

Find attached the images for the HV Solar side texture for IC2 Classic Version 1.1.3.7.2 & cpw CompactSolars master branch.

ic2c-1_1_3_7_2

CompactSolars-master

You can check that the compact solars one is real here: https://raw.githubusercontent.com/cpw/compactsolars/master/CompactSolarArrays/resources/assets/compactsolars/textures/blocks/hvSide.png

I can't link to the .png from IC2-Classic since, well, it's not public, but it's trivial to download the .jar from curses and rip this exact texture from block_generator.png

commented

Images aren't source code? What source has been copied that would trigger a license change?

Assets and source are generally licensed separately....

commented

Also, out of curiosity, did you validate that compact solar is the original author of those images and didn't obtain them from elsewhere?

commented

Unless you can provide links to exact same source code in both ic2 classic and compact solars I'm going to assume there is no violation and ask @Speiger to close this.

commented

Just about anything can be licensed under the GPL (see here: https://www.gnu.org/licenses/gpl-faq.en.html#GPLOtherThanSoftware). In particular if it's packaged along with software. That's usually a poor choice, but it's possible. See the example about fonts in the link.

But that's not really my point.

My point is, transformed GPL code is still GPL.
(See here: https://www.gnu.org/licenses/gpl-faq.en.html#TranslateCode)

The fact there is a verbatim copy of a CompactSolar texture in IC2 Classic directly contradicts the statement that IC2C's version is a clean reimplementation. And if it's not a clean reimplementation, then there is a license violation.

commented

@Trinsdar And how exactly could I do that ("links to exact same source code") since IC2Classic's code is not public? You realise such requirement would make any license violation claim impossible?

commented

Well four your proof link to source code in compact solars, and then say the class and line in ic2 classic where that source is located.

commented

Did you verify that compact solar did not copy the image from elsewhere? I still see no evidence of code violation and flimsy at best on the images. What is their original source and license?

commented

Compact Solars copied the Images from Industrialcraft and just attached them together, therefore if Compact Solars is GPL, it violated the IC2 License in doing so, by making a closed Source Program Open Source in the first place, especially if Compact Solars ended up copying decompiled IC2 Source Code in order to make those Solar Panels in the first place.

commented

Are you the original author of anything being claimed as infringing? A contributor/maintainer? Can you speak to compact solar not being guilty of copying images or code from elsewhere?

Edit: Greg beat me to the punchline

commented

Again, this is not needed. I don't have IC2Classic's source code. But I am not required to do that to claim violation. In fact, it's possible that no line in IC2 Classic's Compact Solars matches any line in the original Compact Solars, and still be in violation of the GPL.

Transformed GPL code is still GPL. Starting from the original compact solar repo and integrating it in IC2C is still a GPL violation, even if no source code line matches perfectly.

Regarding the images, again, I did not claim a violation on the images themselves (as @mitchej123 pointed out, this is discutable).

What I did claim was that IC2's CompactSolars started from the original CompactSolars addon, and not a clean reimplementation as it was claimed earlier, and the textures are evidence of that.

commented

As far as I see it there is no license violation and therefore stop trying. Any more of this will only likely get you banned

commented

Ok let me finish this

commented

Also, I am very sure that NO Minecraft Mod is allowed to run under the GPL License whatsoever, because of being based on Minecraft and Forge, the best License you could legally use for any Minecraft Mod is the LGPL License in this case, which does allow copying and closing of Source.

And while I am not the Author of Compact Solars, I am technically an Industrialcraft Developer so I can say that the Texture is just a Batbox/MFE/MFSU mashed with a Machine Casing, topped off with the original Solar Panel Texture of IC2.

commented

@GregoriusT (For the texture) Sure, that could be argued. Then the uranium ore texture is also a violation of Mojang's textures, and so on. That's not the point. I'm not claiming violation on the images themselves, just using them as evidence.

commented

Just stop.

commented

You are aware that Speiger uses IC2 Sourcecode to base those Solars on, right? Therefore even if it was an asset grab, it would not say anything about the Source.

commented

First of all No i have not copied the Code from Compact solars. Yes I have copied the textures but this applies not to the code and @cpw is aware that i took these textures to integrate it into the mod. If he does not want me to use his art in my IC2 offbranch now he can say no. If he wants me to remove the textures I will hire an artist to make custom closish looking textures to fix that issue.

For the code you are 100% wrong. The only thing that i copied is the idea/concept not the sourcecode itself, and from what i understand that would count as new transformative work causing the old license to be invalid since the idea itself for that mod can not be claimed.

As for the sourcecode:

	public static class TileEntityLVSolarPanel extends TileEntitySolarPanel
	{
		public TileEntityLVSolarPanel()
		{
			tier = 1;
			production = 8;
			config = (IC2.config.getInt("energyGeneratorSolarLV") / 100D);
		}
		
		@Override
		public LocaleComp getBlockName()
		{
			return Ic2BlockLang.solarLV;
		}
		
		@Override
		public double getWrenchDropRate()
		{
			return 1D;
		}
	}
	
	public static class TileEntityMVSolarPanel extends TileEntitySolarPanel
	{
		public TileEntityMVSolarPanel()
		{
			tier = 2;
			production = 64;
			config = (IC2.config.getInt("energyGeneratorSolarMV") / 100D);
		}
		
		@Override
		public LocaleComp getBlockName()
		{
			return Ic2BlockLang.solarMV;
		}
		
		@Override
		public double getWrenchDropRate()
		{
			return 1D;
		}
	}
	
	public static class TileEntityHVSolarPanel extends TileEntitySolarPanel
	{
		public TileEntityHVSolarPanel()
		{
			tier = 3;
			production = 512;
			config = (IC2.config.getInt("energyGeneratorSolarHV") / 100D);
		}
		
		@Override
		public LocaleComp getBlockName()
		{
			return Ic2BlockLang.solarHV;
		}

		@Override
		public double getWrenchDropRate()
		{
			return 1D;
		}
	}

The 3 solar panels extend my custom solar panel implementation of IC2 which has a lot of optimizations thanks to greg and his nuts testing, but also: Comparator control, Inventory management and a couple other things. I doubt that you can access HV solar panels with a machine tool from Compact solars to control from which side it is accessible or provides a comparator output.

Is that proof enough?

commented

There is no block logic by the way since the block is shared with 13 other generators.

commented

One of those 13 generators being the original Solar Panel it is based off of, which is pretty much pure Speiger-modified Original IC2 Code.

commented

No, that's evidence that the original repo was used, since the texture is the same. Again, the claim is not about the texture itself. It's about the code in the original repo. Someone claimed that it was a clean reimplementation, and the texture directly contradicts that. Same person claimed the texture was "not the same" in total bad faith. But the texture wasn't the main point anyway.

By your logic, I could take IC2C, decompile it, refactor it to the point where no line would match between the two, and release it as my own.

commented

Or to make it short, not only is the use of the GPL not even enforceable, you also cant use the GPL to take someone elses Source and claim it in order for it to become OpenSource.

Not to mention the IC2 Devs, specifically PlayerSF, would sue if this Mod became OpenSource.

And in order to take Assets you dont even need to go to the Repository of said Mod, you can literally just take them out of the Jar File of the Mod itself without ever looking at the Source.

commented

@Nax no you can not because that would require the IC2 Exp dev permissions or you would need to recreate not only the whole systems on your own but also the completly new art + different names to ensure that the IC2Exp devs would not take you down.
TL:DR get ic2exps permission & mine if you take ic2c, or make TE

commented

By the way Thermal Expansion or EnderIO are exactly the cases where my thought process applies back then because they were just a rehash of ic2 in some points. Back then when simply jetpacks came out they got problems when player found out that src from ic2 was copied.

on top of that who was your source @Nax i would like to talk to that person

commented

Okay, I'm closing this issue myself since clearly nothing good will come out of it.

I must say that I find it quite insulting that you basically absorb GPL stuff into your mod without any respect for the initial license, and when somebody points that out, act in very bad faith.

commented

@Nax he did not take the Source Code, he even showed you HIS Source Code, that you could have easily compared to cpws Source Code. Just saying something is stolen doesn't mean it is actually stolen, especially if you dont provide any evidence for it!

The Assets have been taken with explicit permission from cpw, so they are NOT evidence whatsoever.

commented

There is no violation and we have proven that there is no violation, therefore I suggest you shut the fuck up and go bother someone else.