2

can a GPL service receive input requests from a proprietary software and provide specific output results?

obs.: the gpl service is a local machine daemon that just listens for new files in a folder, it is not on a server, it is not networked.

Obs.: the proprietary software is closed source, not GPL, nor any other open source license, with sources that are not to be released to the public, neither to customers. It is private closed sources.

For ex.: i would like to create a service that listens to new files placed at folder /MakeMePretty/request
now, the proprietary software will place a file there and listen at /MakeMePretty/pretty

it would all be very fast like one check per 0.05s and /MakeMePretty/ would be in the ram drive.

also, the request would have only generic hints on how specific the GPL listener should proccess the input data, otherwise i read that if you pass specific params to the GPL app, it would be considered like a library and would not be allowed.

obs.: The dev is a person named something like Foo Barson. Foo Barson can release a proprietary closed source software's binary and Foo Barson can also release another software as GPL code.

ex.:

  • service is a xBRZ image upscaler. a gpl service, wrapping xBRZ lib, also implemented by Foo Barson and of course released in GPL.
  • client is a UDK unreal engine game.

case 1

  • client writes a request with a small file dimensions. And with a generic hint in the filename like "animal" "human" "object", or may be a less generic "building_LOD_x2"
  • xBRZ service determines slow processing predefined specific detailed config will be used to upscale the image.

case 2

  • client writes a request with a big landscape file dimensions.
  • xBRZ service determines fast special processing predefined specific detailed config will be used to upscale the image.

This is an intentional indirect way to inform the GPL app to use specific params. The proprietary sofware can use the GPL service but does not depend on it to run (could it depend tho?).

Obs.: Clarifications as requested:

  • The GPL software service will be released opensource with precompiled binaries publicly; it is standalone, doesnt depend on the proprietary software.
  • Then, one day, the proprietary software, that also do not depend on that GPL service, will also be released.
  • The work done by the GPL service could also be done by another app that provide acceptable results, thats the reason why the reqiests only have generic hints unrelated to specific things the service can prepare, but the service can be configured with presets that provide the specific proprietary software required results, and these presets can be used also by any other app thru the generic hints at least if they are also not gpl.

More clarifications (may be redundant):

  • They are independent. They are released independently also. Each of them, the GPL service and the proprietary app, can run without requiring eachother.
  • If the GPL service is listening, the proprietary app will capture and use the output in realtime.
  • The GPL service can be substituted by any equivalent service including a proprietary one.
  • The requests are configured using generic hints, but the service is specifically configured with precise presets that are used based on the generic hints provided by any app making the requests.

And more clarifications:

  • the GPL service is a listener and wrapper that uses xBRZ lib/app.
  • xBRZ is GPL, therefore that service must be GPL too.
  • the GPL service is not a networked service, it is a daemon that listens for new files to be processed in the specified directory.
  • That service will be published online on github independendly.
  • That service will proccess any file placed there, independently if you exported it from gimp, or if any other app save it there.
  • The service will never know what app made the request.

is it allowed?

13
  • 1
    Required reading: What is the difference between an “aggregate” and other kinds of “modified versions”? tl;dr: "This is a legal question, which ultimately judges will decide." Oct 10, 2023 at 7:36
  • I don't understand which part is really proprietary. You say in your description: "a gpl service, wrapping xBRZ lib, also implemented by the proprietary developer and of course released in gpl." So, if the custom software that you're developing (the xBRZ lib) is indeed "of course released in GPL", then it seems like there's no licensing problem and no real proprietary software involved. It seems that the only proprietary thing is that you're using this service on a private (proprietary) computer or a private (proprietary) hosting (which is of course allowed by GPL).
    – Brandin
    Oct 10, 2023 at 7:44
  • @PhilipKendall may be the only safe way would be to ask permission to the gpl app authors to let such service be used by any or some specific proprietary app. Now i remember reading that long ago, and the arbitrary final option leaving things unclear made me create the question now.
    – VeganEye
    Oct 10, 2023 at 8:18
  • 1
    @VeganEye For the vanilla GPL (i.e. not AGPL) it is essential to distinguish between the custom software (which you say is going to be GPL, yet you use the word 'proprietary' as wll, confusingly), and the service. It's definitely allowed to use custom GPL software in-house, without an obligation to release it to the public. Examples of companies who do that abound. I suggest that you consider clarifying your question.
    – Brandin
    Oct 10, 2023 at 11:06
  • 2
    @VeganEye The part which confuses me is when you say "implemented by the proprietary developer and of course released in gpl". To me, that's a bit of a contradiction.
    – Brandin
    Oct 11, 2023 at 6:05

2 Answers 2

1

When you use GPL software in this way, it can be considered a case of aggregation if they are able to run independently of each other and your configuration combines them.

Look at the case of Objective-C. Apple wanted to make a workaround by providing an object file for connection to GCC. They failed because the object file is not self-contained and must work with GCC. I personally would quibble about some aspects of this, but the reality is that Objective-C is Free Software Licensed today.[1]

Another case: linux kernel and "blobs". The Linux kernel includes small pieces of object code called "blobs" that are sent to and run on the CPU and other devices and are used for basic hardware support (at least by design). They can exist in GPL Linux because the Linux kernel would work without them (at least on the right hardware) and are independent.

In my opinion, what you want to do can be subjected to aggregation, but let's be honest - you do it to avoid publishing the code under the GPL. If the GPL code is adapted to your application and additionally downloaded from the same installer, someone may try to prove to you that it is a derivative work.

Therefore, it is best to require the user to download this environment separately (just like JRE is required to execute Java), and also to operate on a specific protocol (described in some document), so as to show that it is not a dependency on a program, but only on some API /protocol or something else.

Another aspect is the word "service". If your GPL application is on a server, you DO NOT NEED to share the code.

This is not legal advice

4
  • I added many clarifications. The GPL service is just a local (not networked) daemon listening to new files on the requests folder. UDK app doesnt need that GPL service to run. Neither the service needs udk app, they are independent. If that GPL service, or any other service, even a proprietary one, is listening to the requests folder; the proccessed requests will be available in another folder. The udk app will never know who proccessed it, the gpl service will never know who asked it.
    – VeganEye
    Oct 21, 2023 at 14:42
  • Each project is independent. Each will be published independently. Anyone can download and use the gpl service/daemon for free. The proprietary app needs to be bought.
    – VeganEye
    Oct 21, 2023 at 14:45
  • The gpl service/daemon (it wont be networked, it could be but thats not the idea so i wont implement it networked, it just listens to the requests folder), has configurable presets/templates/defaults that are generic and used to process generic contexts like: upscale humanoid drawing, or animal drawing, or a building etc, these cfgs are generic. But the user can tweak them.
    – VeganEye
    Oct 21, 2023 at 14:49
  • The gpl daemon wrapper will let the gpl xBRZ lib proccess requests from the proprietary app. But the proprietary app will not specifically configure the gpl daemon to its needs, it will just use generic options thru hints in the filename (like humanoid, animal, building) from it that will be available by default. But the end user may tweak these cfgs on the gpl daemon.
    – VeganEye
    Oct 21, 2023 at 15:01
-2

My understanding of the GPL license (I am not a lawyer) is that if you can code some other service (a toy application is enough) with a GPL license (or a compatible one) which interoperate with the GPL service you are safe.

So my advice is to code (under GPL license) a toy application which interoperates (like your proprietary app is doing) with the GPL service, using the same protocol to communicate. If this is not doable you could be (legally) in trouble.

The communication protocol is a specified and documented convention. For examples (GPL licensed) GCC can be extended by dlopen-ed plugins, and GNU emacs accepts proprietary and GPL-ed scripts, and Nikto2 interacts using HTTP with web services and GNU bash can run open source or proprietary scripts.

If the communication protocol is ad-hoc and tied to your proprietary software, you should be careful.

In all cases, consult a lawyer since these issues are country specific (or at least different in the EU and in the USA).

BTW, my pet open source project is (in 2023) the RefPerSys (GPLv3+ licensed) inference engine on github and I am living in France near Paris.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.