I'm a little new to the nuances of how licensing of software can propagate/affect other pieces of software so sorry if there's anything in the question that doesn't make sense.

Basically though, I'm trying to package up some software that is MIT licensed that has dependencies that are mixed licensed (I think it's a couple GPL dependencies and some MIT/BSD dependencies) into a more easily deployable solution (Docker).

I see my options as:

  1. Put commands for installing dependencies into the Dockerfile but have users build the image themselves (instead of pushing built images to an image repo). I think I've seen online that this is okay, but this isn't ideal for us because our clients won't always be familiar with Docker and how to run things themselves.

  2. Write an install script and have it as a part of a container's startup process at runtime. This is okay for us, but it adds some overhead to spinning up new containers (which we'll be running as scalable workers, so this isn't ideal as they'll be coming up/winding down often).

  3. Bake the dependencies into an image and push this image to a public image repository. This is ideal for us, but sounds closest to the language of "distribution", which is a bit spooky to me!

I guess I'm wondering, are there any differences from a licensing perspective between 2 and 3? If so, what are they? Will either 2 or 3 be incompatible with our desire to keep the source code for our binary MIT licensed? Are there other solutions that I've overlooked?

  • When you say dependencies, what do you mean? Is the software linked to some libraries?
    – MadHatter
    Oct 27, 2020 at 19:21
  • Nope - the container's Dockerfile likely contains something like "apt install readline" (to pick a random GPL-3 package). It's a really loose analogy but imagine they are distributing a VMWare appliance with GPL-3 stuff pre-installed.
    – kdopen
    Oct 27, 2020 at 21:33
  • @MadHatter the software calls out to the shell and runs the GPL licensed software from the command line (i.e. using subprocess.Popen in python). so the dependency is that the external software is installed in the local environment
    – joe
    Oct 28, 2020 at 18:30
  • @kdopen hmm okay so if I'm understanding you correctly, if in a Dockerfile I have "apt install readline", build that image, and push it to an image repository, that image will be GPL-3 licensed. what if the image had a bash script in the image that had the "apt install readline" command that ran at container runtime? does that make a difference?
    – joe
    Oct 28, 2020 at 18:33
  • 1
    @joe then the FSF's position is that it's not a derivative work. However, the Docker image still is, if it includes a copy of the program. Oct 29, 2020 at 14:02


Your Answer

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

Browse other questions tagged or ask your own question.