I plan to build a closed-source software with C++ language using GSL (GNU Scientific Library). This software is made by compiling my source codes into executable. By the way, my source codes use GSL without any modification (as it is from its official website).

I plan to do the following things. But before that, I want to make sure if it is allowed.

  1. I sell this software to only one client. I give the client both the executable software, and my source codes. The money I will get from my client is only to compensate the my labour hours.
  2. My client will use my software as backend. He will make front-end (the graphical user interface) which calls the backend to do some tasks. My client will then pack the backend and front-end as a whole software, put it on the internet, and make it free-to-use by anyone. Note that it is not a web-service. Users need to download it and use on their own computers. But my client will not share the source codes (neither my source codes for the backend, nor his source codes for the front-end).

In the whole process, I do not modify GSL, I only use GSL in my source codes to build my software.

So my questions are:

  1. Are the above mentioned two actions allowed?
  2. If yes, my client will also write a license.txt file for the whole software. Do you have any suggestions about which type of the license should be? Must he also use GPL license? Or can he use like BSD, MIT, Apache license?

This is quite important to me, since I have to choose a scientific library which can do linear algebra, Bessel functions, Fourier transformation (fft, and inverse fft).

I checked some other asked questions like Can I use GPL libraries in a closed source project if only the output is distributed?, I learned something from them, but I could not find any information related to my questions.


1 Answer 1


The GSL says it's available through the Gnu General Public License, and links to GPLv3. The exact version doesn't matter here.

You can certainly incorporate GPLed software into something you sell to one client for any mutually agreed-on price. That client receives the software under the GPL, and has the usual rights to distribute it under the usual conditions. The client is not required to distribute, though, and it's possible that redistribution would cut into your client's competitive advantage. (See a few sections of the Gnu GPL FAQ to confirm this.)

The client can use the software as a back end without distributing it, since the GSL license is not some version of the Affero GPL, provided the front end and the back end communicate as separate processes.

So, yes, what you propose is legal. You can't prevent the client from distributing the software, including your own contributions, but that seems unlikely to be a problem.

The GSL and all software linking to it in some way are under the GPLv3, and that's what the license.txt has to say.

Edit: From the comments, it's evident that the front and back end will be one program and linked together. The next question is whether the front end is distributed, rather than used. Any Javascript supplied by the client's server is distributed, but software that reacts to HTTP requests is not normally being distributed. I'd need more details to say for sure, but it looks like there's no required distribution if the software uses GSL.

  • 1
    @aura Note that this answer is correct as long as either (1) the client never distributes the back end but only offers it as a network service, or (2) the interaction between the front end and back end is sufficiently separate to classify them as separate works under copyright law (and the client obeys GPL requirements on the back end when he distributes it). The question doesn't make these points very clear -- is "back end" a Web service back end? If so, will the client merely run the service or share it to allow others to run their own service?
    – apsillers
    Aug 17, 2018 at 13:06
  • @apsillers My client will pack my backend and his front-end as a whole software. He will put it on the internet, and anyone can download the whole software and use on their own computer. So it is not a web-service. Users download the whole software (excluding the source codes) on their own computer.
    – aura
    Aug 17, 2018 at 13:33
  • 1
    @aura In that case, this answer does not apply to your situation. (This is a good answer, but it's a good answer for a different question!) The answerer here assumes that your client will not distribute the back end code, which is substantially different from your actual situation.(Importantly, the paragraph "The client can use the software as a back end without distributing it..." is correct, but does not apply to your case.
    – apsillers
    Aug 17, 2018 at 13:47
  • @apsillers thanks for your explanation! Then I cannot use GSL.
    – aura
    Aug 17, 2018 at 13:48

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.