Is it legal to link GZDoom to Steamworks API?
- fakemai
- Posts: 342
- Joined: Mon Feb 12, 2018 12:26 am
- Graphics Processor: Intel (Legacy GZDoom)
- Location: Australia
Re: Is it legal to link GZDoom to Steamworks API?
Just want to mention, isn't this an issue jDoom had to work around in a messy way when Heretic and Hexen were under that crappy Raven license and not the GPL? GNU also has an FAQ about what is considered "linking". Take this with a grain of salt since that was a long time ago (around when Risen3D was being taken down for. GPL violation) and I may be misremembering a few details. And as others have said, the only real check is with a real lawyer.
Re: Is it legal to link GZDoom to Steamworks API?
Doomsday worked around it by making each game's code into a separate plugin. Also as far as I know, the Risen3D stuff was just public pressure from the community; I don't think it was actually taken to court.
- fakemai
- Posts: 342
- Joined: Mon Feb 12, 2018 12:26 am
- Graphics Processor: Intel (Legacy GZDoom)
- Location: Australia
Re: Is it legal to link GZDoom to Steamworks API?
Can't actually remember if Risen3D used to base there like jDoom (now Doomsday) but it was definitely on Newdoom where the main drama happened. If I remember right it was a release thread for Risen3D, where the main jDoom developer politely asked them to uphold their obligation to release source, followed by drama and the Risen3D dev having a meltdown, then threats of action, then the project getting taken down. Not too long after the dev decided to just do the right thing and release source.Gez wrote:Also as far as I know, the Risen3D stuff was just public pressure from the community; I don't think it was actually taken to court.
Anyway that was a blatant GPL violation, I only mentioned it because I think that's where the whole plugin design for jDoom was brought up to me, and for time frame purposes.
EDIT: This was the article I was thinking of. As before, not legal advice.
EDIT2: The thread I was thinking of might be gone forever, but I managed to find part of a follow-up one. It really was a total waste of everyone's time.
Re: Is it legal to link GZDoom to Steamworks API?
Just a quick note that I also think the text on the wiki is misleading. I basically gave my blessing and the "operating system component" part was an analogy for why I was okay with it. I'm not a lawyer and was not offering legal advice.
The following is what I told Quasar:
The following is what I told Quasar:
For my part, I don't mind if you link against this Steam library. I doubt Id do either because I think the BFG Edition version of the code probably links against it as well. While it might *technically* be violating the GPL I don't feel like this is a violation of the spirit of the GPL. One way of thinking about this is that if you were making this for Steam OS, the Steamworks library would be like an operating system component - and the GPL has an explicit exception that lets you link against non-free components if they're part of the underlying OS.
That's all just my contrived rationalisation of course but that's kind of how I think of it - why it doesn't really violate the spirit of the GPL.
- wolfmanfp
- Posts: 80
- Joined: Mon May 08, 2017 11:44 am
- Graphics Processor: nVidia (Modern GZDoom)
- Location: Hungary
- Contact:
Re: Is it legal to link GZDoom to Steamworks API?
Just found out about Steamshim, some GPL-licensed games (for example CaesarIA) already use it.
https://hg.icculus.org/icculus/steamshi ... README.txt
https://hg.icculus.org/icculus/steamshi ... README.txt
- Graf Zahl
- Lead GZDoom+Raze Developer
- Posts: 49056
- Joined: Sat Jul 19, 2003 10:19 am
- Location: Germany
Re: Is it legal to link GZDoom to Steamworks API?
Way to go to violate the spirit of the GPL without violating its phrasing...
Re: Is it legal to link GZDoom to Steamworks API?
Amazing find. I searched far and wide for something like this and found absolutely nothing.
The spirit of the GPL is to prevent companies from incorporating GPL code into commercial software without giving back, not to cripple free software by preventing it from using proprietary libraries. The only reason GPL software may not link against proprietary libraries is to prevent easy circumvention of GPL restrictions by a commercial company incorporating GPL code they want to use into their proprietary program by linking it to a huge proprietary "library" that is, in fact, their whole proprietary program.
But the same inter-process communication exploit can be used by proprietary programs to actually violate the spirit of the GPL, unless a court case happens where it's ruled that such inter-process communication is effectively the same as dynamic linking and therefore forbidden.
The spirit of the GPL is to prevent companies from incorporating GPL code into commercial software without giving back, not to cripple free software by preventing it from using proprietary libraries. The only reason GPL software may not link against proprietary libraries is to prevent easy circumvention of GPL restrictions by a commercial company incorporating GPL code they want to use into their proprietary program by linking it to a huge proprietary "library" that is, in fact, their whole proprietary program.
But the same inter-process communication exploit can be used by proprietary programs to actually violate the spirit of the GPL, unless a court case happens where it's ruled that such inter-process communication is effectively the same as dynamic linking and therefore forbidden.
- Chris
- Posts: 2940
- 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?
Korshun wrote:The spirit of the GPL is to prevent companies from incorporating GPL code into commercial software without giving back, not to cripple free software by preventing it from using proprietary libraries. The only reason GPL software may not link against proprietary libraries is to prevent easy circumvention of GPL restrictions by a commercial company incorporating GPL code they want to use into their proprietary program by linking it to a huge proprietary "library" that is, in fact, their whole proprietary program.
- https://www.gnu.org/licenses/quick-guide-gplv3.htmlThe Foundations of the GPL
Nobody should be restricted by the software they use. There are four freedoms that every user should have:
the freedom to use the software for any purpose,
the freedom to change the software to suit your needs,
the freedom to share the software with your friends and neighbors, and
the freedom to share the changes you make.
Using a loophole to link to proprietary libraries is very much against the spirit of the GPL, as it prevents being able to freely share it or change it for your needs, as intended. One of the reasons Stallman started the free software movement decades ago was because of an instance where he ran into a bug with some device driver, and when he asked for the driver's source code so he could fix the bug and continue his work, he was refused and thus couldn't fix the bug. So if you run into an issue with the closed source/proprietary Steam API, you run into the very issue the free software movement is intended to fight against.
- Graf Zahl
- Lead GZDoom+Raze Developer
- Posts: 49056
- Joined: Sat Jul 19, 2003 10:19 am
- Location: Germany
Re: Is it legal to link GZDoom to Steamworks API?
In the end the legality depends on whether the proxy is needed to let the game run - if it is, it's illegal because then all the technicalities do not matter. Separate programs or not, if one needs the other to work it's a hard dependency that takes away rights granted by the GPL, e.g. the ability to commercially exploit it - can't do that if it needs Steam to work.
Re: Is it legal to link GZDoom to Steamworks API?
Well, FMod got removed from GZDoom due to GPL despite GZDoom not needing FMod to work, yet I am not allowed to put the FMod code back into GZDoom andGraf Zahl wrote:In the end the legality depends on whether the proxy is needed to let the game run - if it is, it's illegal because then all the technicalities do not matter. Separate programs or not, if one needs the other to work it's a hard dependency that takes away rights granted by the GPL, e.g. the ability to commercially exploit it - can't do that if it needs Steam to work.
distribute that unless I create an FMod wrapper that uses inter-process communication.
Steamworks API is not needed for games to work (unless you explicitly use the "Steamworks DRM" part) and many games work fine without it. Yet I am not allowed to release a GZDoom game on Steam that links to Steamworks API unless I use a wrapper that uses inter-process communication.
Re: Is it legal to link GZDoom to Steamworks API?
I figure the loophole would be more solid if you built an open-source, community-managed achievement tracking repository thingamabob and that the Steamshim library used that by default, but could be configured to use Steamworks too. Then the game that is linked to Steamshim becomes "meant" to be using the fully open replacement for Steamworks, but it can be using Steam at the user's preference. As long as no feature (such as achievement tracking) is lost when not using Steam, then it complies with the spirit of the GPL.
- Graf Zahl
- Lead GZDoom+Raze Developer
- Posts: 49056
- Joined: Sat Jul 19, 2003 10:19 am
- Location: Germany
Re: Is it legal to link GZDoom to Steamworks API?
You are not to link code to GPL'd code that restrict the license's permissions.Korshun wrote:Well, FMod got removed from GZDoom due to GPL despite GZDoom not needing FMod to work, yet I am not allowed to put the FMod code back into GZDoom andGraf Zahl wrote:In the end the legality depends on whether the proxy is needed to let the game run - if it is, it's illegal because then all the technicalities do not matter. Separate programs or not, if one needs the other to work it's a hard dependency that takes away rights granted by the GPL, e.g. the ability to commercially exploit it - can't do that if it needs Steam to work.
distribute that unless I create an FMod wrapper that uses inter-process communication.
Steamworks API is not needed for games to work (unless you explicitly use the "Steamworks DRM" part) and many games work fine without it. Yet I am not allowed to release a GZDoom game on Steam that links to Steamworks API unless I use a wrapper that uses inter-process communication.
That means you cannot link code that forbids commercial use for the recipient and that means you cannot link code for which you cannot distribute the source.
It was for the same reason that ZDoom used Timidity++ as a separate process.
That last thing said, there's lots of code in GZDoom which was written by people who take the GPL a lot more seriously and who may come after you if you try to cheat yourself out of the license's requirements.
Re: Is it legal to link GZDoom to Steamworks API?
In this case, the GPL greatly reduces my "freedom to share the changes you make". It prevents me from sharing the changes to GPL software that use proprietary libraries, unless I use the inter-process communication loophole.the freedom to change the software to suit your needs,
the freedom to share the changes you make.
"to link". So it comes down to technicalities, after all. Because creating a program binary that optionally links to a proprietary library with arbitrary usage restrictions (like non-commercial usage only) does not in any way encroach on the end-user's GPL freedoms regarding the GPL program. The user may have licensed the copy of the proprietary library himself and just enabled the switch in the GPL software to link to it. The real reason it's not allowed is because GPL forbids it, not because the other license takes away the freedoms provided by the GPL.Graf Zahl wrote: You are not to link code to GPL'd code that restrict the license's permissions.
That means you cannot link code that forbids commercial use for the recipient and that means you cannot link code for which you cannot distribute the source.
Re: Is it legal to link GZDoom to Steamworks API?
That's the problem of GPL. It doesn't mean "freedom" or "free to use". It means: "you should submit to OUR rules or we'll come for ya". However, it's a public license, you can look at the code.Graf Zahl wrote:Korshun wrote:Graf Zahl wrote:
That last thing said, there's lots of code in GZDoom which was written by people who take the GPL a lot more seriously and who may come after you if you try to cheat yourself out of the license's requirements.
Spoiler:
Last edited by Skullnet on Thu Jul 25, 2019 5:48 pm, edited 2 times in total.
- Chris
- Posts: 2940
- 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?
Except, as the recipient of your software, I can no longer change the software to suit my needs, so either way the spirit has been violated (also, that proprietary library can very likely have redistribution restrictions itself, so you couldn't share it anyway). You can make the changes and keep it private for your own use/enjoyment, but once you share it, the people who acquire your modified version must be afforded the same freedoms you had to make your version.Korshun wrote:In this case, the GPL greatly reduces my "freedom to share the changes you make". It prevents me from sharing the changes to GPL software that use proprietary librariesthe freedom to change the software to suit your needs,
the freedom to share the changes you make.