There is an explanation on the JULIA web page as: “therefore the environment, which consists of the language, user interfaces, and libraries, is under the GPL”.
I think the most strict license determines the rights and since GPL is not suitable for proprietary software, nor does JULIA. Because of which component, tool or project does GPL apply? If I know, I may avoid using it.
If you build Julia with the USE_GPL_LIBS=0 flag … then there are no GPL-only libraries used (some are dual-license, as we discussed in the other thread).
The Julia bundles that you can download right now, provided by the community on julialang.org, include GPL libraries, so they are provided under the terms of the GPL – you have the right to source code (obviously we give that to you); you have the right to redistribute the source code; you can’t take those rights away from the next person to whom you give either the code or derived binaries.
The GPL libraries are included because for now it is more important to have those functions available immediately to the end-user in a single download. In the future we might not (there has been work in this direction). But the Julia core code is always MIT licensed if you are using it alone (just because we happen to distribute a GPL bundle now, the license of the bundle doesn’t “flow backward” into the code in the github.com/julialang/julia itself).
We are using Julia at Dynactionize.com, to develop proprietary software, and we do have to build our own Julia with USE_GPL_LIBS = 0.
The one issue that was a problem when I first started with Julia, was that there was some code derived from GPL code, in the sparse matrix support, that was part of Julia.
Since it can be dangerous to study GPL derived source code, because of the viral nature of GPL, if you are implementing (or ever want to implement in the future) something proprietary, or even that you want to place under a more permissive license such as MIT, it’s not a good idea to have any GPL derived source at all in the Julia code base.
I do believe that has all been taken care of.
But if I use functions from SuiteSparse for instance then I cannot package the whole thing in one binary and hide the source, that’s against GPL from my limited understanding? So one has to be careful which functionality is used and packaged.
However I do not understand why web page says Julia is under GPL. By “GPL”, does it mean GPL and LGPL licenses? I mean for example what happens when USE_GPL_LIBS=0 flag is used. Are GMP, LIBGIT2, MBEDTLS, MPFR and SUITESPARSE removed during compilation?
Meanwhile was JuliaPro compiled with USE_GPL_LIBS=0 flag?
Example 1: you build Julia yourself from source with USE_GPL_LIBS=0. The Julia source code is under MIT, except the interface subdirectories noted in LICENSE.md which are excluded from the system image by USE_GPL_LIBS=0. No GPL code is linked or loaded in the system image. You can embed in a proprietary application and distribute* without any GPL obligation (MIT license applies).
Example 2: you link your application against the Julia download distribution, which loads GPL code and links to GPL libraries. If you distribute your application, then the GPL applies.
The libraries will never be compiled. The source shouldn’t even be downloaded.
That would probably be a good guess, but I don’t know (I don’t work for Julia Computing).
*Again, if this will impact your business: talk to an actual lawyer who knows something about open source!. There are also open source compliance companies, and Julia Computing mentions that an “indemnity contract” is available for Julia Pro (whether that covers open source compliance specifically, I don’t know – contact them directly).