Is it legal to link GZDoom to Steamworks API?

Discuss anything ZDoom-related that doesn't fall into one of the other categories.
Korshun
Posts: 52
Joined: Thu Dec 13, 2012 1:32 pm

Is it legal to link GZDoom to Steamworks API?

Post by Korshun »

Hello. I am a developer of a commercial game on the GZDoom engine. We want to publish our game on Steam with Steam-specific features like achievements and leaderboards. The problem is that GZDoom is under the GNU GPL license, which prohibits linking to proprietary libraries like Steamworks API. Steamworks API is needed to add achivements, stats, leaderboards and enhanced cloud save support. Could an exception be made for linking to Steamworks API like in Strife Veteran Edition?
Doom Wiki wrote:A linking exception for the Steamworks API was provided by Simon Howard with the justification that it constitutes a system component due to ubiquitous distribution and the existence of SteamOS.
Such an exception would make GZDoom more popular among indie game developers.
_mental_
 
 
Posts: 3812
Joined: Sun Aug 07, 2011 4:32 am

Re: Is it legal to link GZDoom to Steamworks API?

Post by _mental_ »

It will be nice to have a bit of information about the game.
User avatar
Rachael
Posts: 13561
Joined: Tue Jan 13, 2004 1:31 pm
Preferred Pronouns: She/Her
Contact:

Re: Is it legal to link GZDoom to Steamworks API?

Post by Rachael »

What you might be able to do is write a fake API that effectively does nothing and publish that along with your source code. Idea being, as long as the core game works and a user can compile your source and run your game, you should still be within the terms of the GPL agreement. I dunno if it's required to use the precompiled version of that in your actual distribution or not, though - I don't think it is.

Keep in mind, though, I am not a lawyer, and there are more people with stakes in GZDoom than just the development team. We do not have final say in what happens with our GPL agreement - unfortunately, Bethesda does.
User avatar
edward850
Posts: 5886
Joined: Tue Jul 19, 2005 9:06 pm
Location: New Zealand
Contact:

Re: Is it legal to link GZDoom to Steamworks API?

Post by edward850 »

To get such an exception for GZDoom, you need permission from idsoftware, as well as every single person who has worked on GZDoom. That is not even possible given the death of at least one member. Strife Veteran Edition is legally cleared and under very different circumstances.
There is no way, within the requirements of GPLv3, to link to the Steamworks API while using GZdoom.
User avatar
Graf Zahl
Lead GZDoom+Raze Developer
Lead GZDoom+Raze Developer
Posts: 49067
Joined: Sat Jul 19, 2003 10:19 am
Location: Germany

Re: Is it legal to link GZDoom to Steamworks API?

Post by Graf Zahl »

The GPL is very clear about these things: You are not allowed to link to any closed source library of whatever type. The only exception would be possible if every single contributor of GPL code gave their consent, like Edward850 said. You'll never be able to get that, because there's code involved here that is owned by a large corporation and other code taken from projects that have ceased development long ago (That'd be Timidity++, for example.) and others who would never agree for whatever philosophy they adhere to that isn't compatible with releasing their code on a platform like Steam. I think the main active contributors won't mind, but their consent won't be enough, even remotely.
User avatar
Rachael
Posts: 13561
Joined: Tue Jan 13, 2004 1:31 pm
Preferred Pronouns: She/Her
Contact:

Re: Is it legal to link GZDoom to Steamworks API?

Post by Rachael »

And this type of entanglement is why I avoid GPL in my projects.
User avatar
Graf Zahl
Lead GZDoom+Raze Developer
Lead GZDoom+Raze Developer
Posts: 49067
Joined: Sat Jul 19, 2003 10:19 am
Location: Germany

Re: Is it legal to link GZDoom to Steamworks API?

Post by Graf Zahl »

Yeah, same here. I'd rather use a more liberal license, but then slap a "must release source code" clause onto it.
gramps
Posts: 300
Joined: Thu Oct 18, 2018 2:16 pm

Re: Is it legal to link GZDoom to Steamworks API?

Post by gramps »

Keep in mind the stuff about dynamic linking in the GPL is contested by a number of people (as to whether it's actually something a license has the authority to do, more or less), but this still hasn't been tried in court as far as I know, so nobody really knows.

By reading this message, you agree to pay me $100.
Korshun
Posts: 52
Joined: Thu Dec 13, 2012 1:32 pm

Re: Is it legal to link GZDoom to Steamworks API?

Post by Korshun »

Thanks for the explanations. I agree about the GPL. I get annoyed when GPL prevents open source projects from becoming better for nonsensical reasons. For example, the removal of fmod from GZDoom, which is my favorite midi synthesizer and isn't used for any critical functionality.
edward850 wrote: Strife Veteran Edition is legally cleared and under very different circumstances.
I'd like to know more about those circumstances. There is no indication anywhere that id software, the copyright holders for Linux Doom 1.10 GPL code, on which Chocolate Doom and Chocolate Strife are based, provided a GPL linking exception for Steamworks API. Only Simon Howard did.

Moreover, the source code for Strife: Veteran Edition somehow doesn't even include the parts that use Steamworks API and doesn't mention the linking exception:
Strife: Veteran Edition README wrote:The Strife: Veteran Edition GPL Source Code release does not include functionality for integrating with Steam or GOG Galaxy. This includes roaming profiles, achievements, leaderboards, matchmaking, the overlay, or any other Steam or Galaxy features. It may be necessary to undefine the _USE_STEAM_ or GOG_RELEASE symbols in build scripts or project files in order to compile.
And on what grounds are the parts of the source code of Strife: Veteran Edition interacting with Steamworks API withheld from me?

Is Steamworks API a "system component" or not? Who decides that? Only the court in case of a GPL lawsuit? If it's a "system component", that means anyone can link any GPL code to it without asking for permission from anyone.
_mental_ wrote:It will be nice to have a bit of information about the game.
It's The Forestale and I am doing C++ programming for the main developer of the game, including adding Steam achievements.
User avatar
edward850
Posts: 5886
Joined: Tue Jul 19, 2005 9:06 pm
Location: New Zealand
Contact:

Re: Is it legal to link GZDoom to Steamworks API?

Post by edward850 »

Korshun wrote:I'd like to know more about those circumstances. There is no indication anywhere that id software, the copyright holders for Linux Doom 1.10 GPL code, on which Chocolate Doom and Chocolate Strife are based, provided a GPL linking exception for Steamworks API. Only Simon Howard did.

Moreover, the source code for Strife: Veteran Edition somehow doesn't even include the parts that use Steamworks API and doesn't mention the linking exception:
Strife: Veteran Edition README wrote:The Strife: Veteran Edition GPL Source Code release does not include functionality for integrating with Steam or GOG Galaxy. This includes roaming profiles, achievements, leaderboards, matchmaking, the overlay, or any other Steam or Galaxy features. It may be necessary to undefine the _USE_STEAM_ or GOG_RELEASE symbols in build scripts or project files in order to compile.
And on what grounds are the parts of the source code of Strife: Veteran Edition interacting with Steamworks API withheld from me?
Strife:VE and Chocolate Strife were built out of a Strife disassembly (Not the Linux Doom 1.10 source), a joint project between Fraggle and Quasar. Nightdive have access to the Strife IP and distribution and thus the rights to use its code (yes, disassembly still falls under that). As the only relevant parties to this were Fraggle and Quasar, and as Quasar works for Nightdive, the only standing permission was Fraggle.

This is why Stirfe:VE is not relevant to you, GZDoom is a completely different source tree with very different people under very different circumstances.

Also as an additional note, you should actually be asking your lawyer these sorts of questions, especially as you are looking to sell games on the internet using a licensed engine. Nobody on this forum can offer you proper legal advice, and you must make sure everything about your game is legally squared over before you try to turn it into an income. I'll grant you, there's not a lot that can go wrong as long as you strictly adhere to GPLv3's terms without trying to straddle any lines, but given that you'd want to make sure you also entirely understand Steam's distribution terms, it can be a worthwhile investment.
User avatar
Chris
Posts: 2942
Joined: Thu Jul 17, 2003 12:07 am
Graphics Processor: ATI/AMD with Vulkan/Metal Support

Re: Is it legal to link GZDoom to Steamworks API?

Post by Chris »

Graf Zahl wrote:The GPL is very clear about these things: You are not allowed to link to any closed source library of whatever type.
Unless its a system component, or else you wouldn't ever be able to run GPL software on Windows. The question then becomes, can the Steamworks API be considered a system component of the Steam platform the game is built for? Beyond that, with dynamic linking you can't necessarily be sure that, at distribution time, you'll be linking to a closed source library. At best you could probably argue if you expect to link against an incompatibly-licensed library that it's not allowed, but I don't think the dynamic linking provisions have ever been challenged in court. A more pertinent question would probably be if the Steamworks API is under an NDA; if it is, you wouldn't be able to publish your changes to GZDoom's code to access the API, which would be a violation.

As mentioned though, we're not lawyers. If you need a legal opinion, you should consult one.
gramps
Posts: 300
Joined: Thu Oct 18, 2018 2:16 pm

Re: Is it legal to link GZDoom to Steamworks API?

Post by gramps »

Chris wrote:with dynamic linking you can't necessarily be sure that, at distribution time, you'll be linking to a closed source library
Or linking to anything at all! The dynamic linking could gracefully fail and the program could run fine without achievements or whatever.

The GPL is all about what you're doing with software you're distributing, but you're not distributing the thing being dynamically linked to, and you have no idea what the user's system is actually gonna link to (if anything).

Some clever lawyer could probably argue it's overstepping its authority with the dynamic linking stuff entirely. It would be nice if it went to court.
User avatar
Kinsie
Posts: 7399
Joined: Fri Oct 22, 2004 9:22 am
Graphics Processor: nVidia with Vulkan support
Location: MAP33
Contact:

Re: Is it legal to link GZDoom to Steamworks API?

Post by Kinsie »

Chris wrote:Unless its a system component, or else you wouldn't ever be able to run GPL software on Windows. The question then becomes, can the Steamworks API be considered a system component of the Steam platform the game is built for?
According to the Doom Wiki page for SVE, this was the reasoning Fraggle used:
A linking exception for the Steamworks API was provided by Simon Howard with the justification that it constitutes a system component due to ubiquitous distribution and the existence of SteamOS.
Whether such an argument would actually hold up in a court is debatable, of course, but none of the parties involved seem to have any issues with it so...
gramps
Posts: 300
Joined: Thu Oct 18, 2018 2:16 pm

Re: Is it legal to link GZDoom to Steamworks API?

Post by gramps »

If Fraggle owns the copyright to that port (see edward850's comment) he can make a linking exception without any special justification; he doesn't need to use the system component loophole. See https://www.gnu.org/licenses/gpl-faq.en ... atibleLibs

Of course you've gotta take this FAQ with a grain of salt, it also says stuff like "linking a GPL covered work statically or dynamically with other modules is making a combined work based on the GPL covered work," trying to pass static and dynamic linking off as effectively the same, which seems misleading considering static linking is something that is happening on the distributor's end (so the *distributor* is creating a combined work) while dynamic linking is something that happens on the user's end. So the *user* (or the machine under his control) is creating the combined work in the case of dynamic linking. And since the user isn't distributing that, whether or not the GPL considers that thing to be a combined work seems irrelevant.
Korshun
Posts: 52
Joined: Thu Dec 13, 2012 1:32 pm

Re: Is it legal to link GZDoom to Steamworks API?

Post by Korshun »

I am sorry for this huge discussion of Strife: Veteran Edition that seems to be only tangentially related to this case and I realize that nothing said in this thread is legal advice. Thank you for your help. Still, this is my understanding of what happened to Strife:

(note: when I say "somehow", it's not to criticize but just to indicate that it's not entirely clear how that happened.)
Former employees of Rogue Entertainment (somehow) got the copyright on the whole of Strife (exe, data), including (somehow) the code of the Doom engine used in Strife, despite it being licensed from id software and not made from scratch. They hired developers to reverse-engineer the Strife executable, recreating it in C fully, but using opensourced Doom, Heretic and Hexen as a reference and basing the final product on Chocolate Doom (reusing the parts of the engine shared between games). The result is (somehow) fully copyrighted by Strife copyright holders and Chocolate Doom developers (Simon Howard), but not by id software. Then Simon Howard used his copyright to grant a linking exception.

But since Simon Howard is the sole copyright holder of non-id Chocolate Doom code, he didn't need to justify his decision in any way, he could do anything with the code he owns the copyright on. The explanation in the Doom Wiki is misleading then.

What's also unclear is why the Strife: Veteran Edition source code omits the parts that use Steamworks API. But if all copyright holders (which don't include id software) agreed to withhold this code, it's their right.

I found an official page by Valve called Distributing Open Source Applications on Steam. It says the following of interest (emphasis mine):
Which Open Source Licenses are problematic for shipping on Steam?

Generally, any license that has a so-called “copyleft” element will be problematic when combining code with the Steamworks SDK. The best-known example is GPL.


But I saw a GPL-licensed application on Steam!

This can happen if the author of the code that is GPL-licensed has given the permission to do so. The author can of course always (a) decide to grant Valve a different license than the author grants everyone else or (b) decide that what the Steamworks SDK does is just a communication with a service that does not invoke the copyleft requirement of the GPL.
It seems that the unneeded justification about Steamworks SDK being a "system component" was added based on information on this page. This is some strange advice from Valve. It also seems to assume that any game published on Steam necessarily links to Steamworks SDK, even though it's not the case.

This page indicates that Valve explicitly considers linking GPL software to Steamworks SDK "problematic", just like the rest of the world, despite the GPL being vague and untested in courts.

Since linking GZDoom to Steamworks SDK is no go, is there perhaps an open-source non-GPL network server that links to Steamworks SDK and accepts commands over the network to give achivements and record statistics? If not, I am considering making one and open-sourcing it for the benefit of game developers using GZDoom and other GPL game engines.
Post Reply

Return to “General”