View Issue Details
| ID | Project | Category | View Status | Date Submitted | Last Update |
|---|---|---|---|---|---|
| 0013932 | Scribus | Build System | public | 2016-04-08 20:55 | 2016-04-13 14:04 |
| Reporter | NumOpen | Assigned To | jghali | ||
| Priority | normal | Severity | minor | Reproducibility | always |
| Status | closed | Resolution | no change required | ||
| Platform | Intel 64 bits | OS | Windows | OS Version | 7 Professional |
| Product Version | 1.5.1 | ||||
| Summary | 0013932: Microsoft Visual C++ 2008 and Microsoft Visual C++ 2012 are included the setup package | ||||
| Description | I installed https://sourceforge.net/projects/scribus/files/scribus-devel/1.5.1/scribus-1.5.1-windows-x64-r2.exe/download in Windows 7 Professional. The setup installs Scribus, Microsoft Visual C++ 2008 and Microsoft Visual C++ 2012. It should not include Microsoft Visual C++ 2008 and Microsoft Visual C++ 2012 but test if they are already installed and if not, download and install them. | ||||
| Tags | discussion | ||||
| Patch | No | ||||
|
|
|
|
|
>> It should not include Microsoft Visual C++ 2008 and Microsoft Visual C++ 2012 but test if they are already installed and if not, download and install them. Installer already tests if required runtimes are already installed. Scribus must include them as downloading does not work per definition in offline installs. |
|
|
It's a bad choice because you can't add proprietary libraries into a free software package. I think you are violating the GNU GPL version 2 license. In all the free softwares that I'm distributing in http://www.numopen.fr/compilibre-en and in all the others free softwares, none of them include MS VC++. They all have a test in the installer that download the MS proprietary librairies if necessary. I can't add Scribus into my compilation. |
|
|
The matter seems complicated. Here is a nice counter example from Blender project itself which use a dual GPL v2/v3 license: http://ftp.halifax.rwth-aachen.de/blender/release/Blender2.77/blender-2.77a-windows64.zip You'll see that the visual c++ dlls are included. |
|
|
That's your choice. I remove Scribus from my next compilation of free softwares as Visual C++ is included into the installer. |
|
|
For your information the blender 2.76 installers (blender-2.76b_32-bits.msi and blender-2.76b_64-bits.msi) included in your current compilation also include the Visual C++ runtimes. I just did an out of line install using a virtual machine and after installation you find the visual c++ 2013 runtimes, msvcp120.dll and msvcr120.dll, right into the installation folder. |
|
|
You can also remove the openjdk installer (openjdk-1.7.0-u80-unofficial-windows-i586-installer) also under GPL v2. You'll find a Visual Studio 2010 runtime dll right into the jre\bin folder: msvcr100.dll. |
|
|
>> in all the others free softwares, none of them include MS VC++. This is clearly not true. |
|
|
jghali, thanks for doing some sleuthing on the subject. Had no idea about this. NumOpen, based on what jghali has found and presented, you may want to rethink your software repository rules. |
|
|
NumOpen, follow-up ? |
|
|
I will not rethink my software repository rules, free softwares are free softwares and not something else. In next version of the NumOpen compilation : - OpenJDK will be replaced by Zulu. Azul System support accepted to improve Zulu to have it compatible with all NumOpen compilation softwares : http://zulu.org/forum/thread/zulu-dont-work-on-windows-7/ - All free softwares that contains proprietary librairies will be removed until they install them separately : * Scribus. * Blender msi package doesn't install VC++, I asked them the question about the DLL in the ZIP package, thank you for your advice about it. |
|
|
Any examples of free softwares that correctly test and if necessary install VC++ : HexChat, PHPServer, Shareaza, Wings 3D. |
|
|
>> Blender msi package doesn't install VC++, I asked them the question about the DLL in the ZIP package Given presence of Visual C++ runtime dlls after install right in Blender install directory, this is clearly false. |
|
|
They know that, I made a bug report to their support. |
|
|
Note that Blender is GPL v2 *or later*, same as us, btw. See: https://www.scribus.net/websvn/filedetails.php?repname=Scribus&path=%2Ftrunk%2FScribus%2FCOPYING Under GPL v3, distribution of dlls required to run the program is not a problem. See GPL v3 definition is system libraries: The “System Libraries” of an executable work include anything, other than the work as a whole, that (a) is included in the normal form of packaging a Major Component, but which is not part of that Major Component, and (b) serves only to enable use of the work with that Major Component, or to implement a Standard Interface for which an implementation is available to the public in source code form. A “Major Component”, in this context, means a major essential component (kernel, window system, and so on) of the specific operating system (if any) on which the executable work runs, or a compiler used to produce the work, or an object code interpreter used to run it. And section 6: "A separable portion of the object code, whose source code is excluded from the Corresponding Source as a System Library, need not be included in conveying the object code work." |
|
|
>> Any examples of free softwares that correctly test and if necessary install VC++ : HexChat, PHPServer, Shareaza, Wings 3D. Not quite correct. I just checked Wings 3D installers and they have also the VC ++ runtimes redistributable embedded. It will install them without downloading *anything* if they are not present. Have not checked the others. |
|
|
In this case, you'll even find the VC ++ runtime installer (vcredist_*) in Wings 3D install folder at the end of installation. |
|
|
http://www.gnu.org/licenses/gpl-faq.en.html#WindowsRuntimeAndGPL "You may not distribute these libraries in compiled DLL form with the program. To prevent unscrupulous distributors from trying to use the System Library exception as a loophole, the GPL says that libraries can only qualify as System Libraries as long as they're not distributed with the program itself. If you distribute the DLLs with the program, they won't be eligible for this exception anymore; then the only way to comply with the GPL would be to provide their source code, which you are unable to do." |
|
|
GPL v3 does not say that. |
|
|
http://www.gnu.org/licenses/quick-guide-gplv3.fr.html |
|
|
Sorry here is the English version: http://www.gnu.org/licenses/quick-guide-gplv3.en.html "The new definition also makes it clear that you can combine GPLed software with GPL-incompatible System Libraries, such as OpenSolaris' C library, and distribute them both together. These changes will make life easier for free software distributors who want to provide these combinations to their users." |
|
|
I made a bug report for Wings 3D too. |
|
|
Wings 3D is not under GPL, but under a much more permissive license, so there is no bug here. |
|
|
I suppose you can provide the OpenSolaris C library code. But you can't provide Microsoft DLL code, so they are not eligible for the System Library exception. The best thing to do is to ask to FSF, they will confirm and explain the GPL license, it's not so easy as it seems. Anyway, I don't understand the goal to write a so good software as Scibus and to trap it with proprietary DLL. |
|
|
http://www.gnu.org/licenses/quick-guide-gplv3.en.html GNU GPL v3 permits to include GPL incompatible libraries code but doesn't permit to include proprietary code (you don't have the source code of DLL). And you can't include Microsoft DLL because of the trade mark too (Microsoft is a trade mark). |
|
|
>> GNU GPL v3 permits to include GPL incompatible libraries code but doesn't permit to include proprietary code (you don't have the source code of DLL). Does not apply to VC++ runtimes under system libraries clause. >> And you can't include Microsoft DLL because of the trade mark too (Microsoft is a trade mark). Sorry but MS gives an explicit right to redistribute the VC++ "redistributable". |
|
|
GPL v3 FAQ update : http://gplv3.fsf.org/wiki/index.php/FAQ_Update "I'm writing a Windows application with Microsoft Visual C++ (or Visual Basic) and I will be releasing it under the GPL. Is dynamically linking my program with the Visual C++ (or Visual Basic) run-time library permitted under the GPL? Yes, because that run-time library normally accompanies the compiler or interpreter you are using. So it falls under the exception in GPLv2 section 3, or GPLv3 section 1. It is lawful to do this. That doesn't mean it is a good idea to write the program so that it only runs on Windows. Doing so results in a program that is free software but "trapped" (in this case, trapped by Windows instead of by Java, but the effect is the same). " Note the second paragraph has been completely removed compared to the GPL v2 version (http://www.gnu.org/licenses/gpl-faq.en.html#WindowsRuntimeAndGPL) |
|
|
The response of the Blender guy also indicates there is an inconsistency with http://www.gnu.org/licenses/gpl-faq.en.html#WindowsRuntimeAndGPL and the possibility to include the VC++ runtimes with GPL v3: https://developer.blender.org/T48109 The provided link clearly says it is possible to link against a proprietary system library and ship it without providing its code: http://www.gnu.org/licenses/gpl-faq.en.html#SystemLibraryException But there is one thing where we will probably agree: this apply only to GPL v3. As we are GPL v2 or later, I think the Windows binary distribution is OK as it is. Another somewhat related note: you should notice we have GPL exceptions in our license permitting to link the commercial version of Qt. Several versions of Scribus have been released using the Qt commercial DLLs. |
|
|
jghali, re: Qt commercial DLLs does this also relate to other FLOSS projects like Krita ? |
|
|
Each project can add its own exceptions to the GPL. So yes, other projects can also have such exceptions. |
|
|
Seen on https://developer.blender.org/T48109 >> And after the installation, users can look at the list of installed programs and keep only the last version of the installed VC++ Not really. First VC++ runtimes are incompatible between Visual Studio major versions. Second between minor updates, there can be minor incompatibilities which requires to use a particular version. >> Most of the professional proprietary softwares are making this too. Totally wrong. A professional software will certainly do not such download of VC++ runtimes, because depending on security environment, this may not be possible. VC++ runtimes are usually always embedded in the installer. |
|
|
Seen again on https://developer.blender.org/T48109 >> http://www.gnu.org/licenses/gpl-faq.en.html#WindowsRuntimeAndGPL is a recommandation of the FSF, it's a reference and a rule that must be followed if you use a GPL v2 or v3 license. At this point, this is simply dishonest intellectually. http://www.gnu.org/licenses/gpl-faq.en.html#SystemLibraryException is exactly on the same page, so this is a fsf recommendation as well. |
|
|
In http://www.gnu.org/licenses/gpl-faq.en.html#WindowsRuntimeAndGPL: "the GPL says that libraries can only qualify as System Libraries as long as they're not distributed with the program itself" This clearly refer to GPL v2. GPL v3 does not say that at all. |
|
|
So, if you distribute Microsoft DLL with the program itself, you can't qualify them as System Libraries. And then, you must add their source code as explained in http://www.gnu.org/licenses/gpl-faq.en.html#WindowsRuntimeAndGPL, so Windows DLL can't be included in the installer. I agree that "even if you distribute a linked executable containing them" is confusing in http://www.gnu.org/licenses/gpl-faq.en.html#SystemLibraryException and this point should be asked to FSF but I'm sure MS DLL should not be included in the installer but donwloaded and installed separately. |
|
|
>> So, if you distribute Microsoft DLL with the program itself, you can't qualify them as System Libraries. Does not apply to GPL v3. GPL v3 does not says that at all, only v2. |
|
|
http://www.gnu.org/licenses/gpl-faq.en.html#WindowsRuntimeAndGPL is speaking about GPL 2 and 3. |
|
|
In fact the only link which says that is http://www.gnu.org/licenses/gpl-faq.en.html#WindowsRuntimeAndGPL On the other side, there is three links which clearly says the contrary for v3: http://www.gnu.org/licenses/quick-guide-gplv3.en.html http://www.gnu.org/licenses/gpl-faq.en.html#SystemLibraryException http://gplv3.fsf.org/wiki/index.php/FAQ_Update So it is more than likely that the first link has not been updated properly for GPL v3. |
|
|
>> http://www.gnu.org/licenses/gpl-faq.en.html#WindowsRuntimeAndGPL [^] is speaking about GPL 2 and 3. The second paragraph clearly refers to GPL v2 and that part of GPL v2: "unless that component itself accompanies the executable." This wording does not exists at all in GPL v3. |
|
|
http://www.gnu.org/licenses/quick-guide-gplv3.en.html is speaking only about Open Source libraries non-compatible with GNU GPL. "Less Source to Distribute: New System Libraries Exception" http://www.gnu.org/licenses/gpl-faq.en.html#SystemLibraryException speaks only about libraries you can't qualify as System Librarie and it doesn't apply to Microsoft Libraries because you can't add their source code. http://gplv3.fsf.org/wiki/index.php/FAQ_Update#What_legal_issues_come_up_if_I_use_GPL-incompatible_libraries_with_GPL_software.3F is talking about Open Source libraries non-compatible with GNU GPL too. So, it's sure you can't add MS DLL in the installer. |
|
|
I'm asking more explanations to FSF. |
|
|
>> http://www.gnu.org/licenses/gpl-faq.en.html#SystemLibraryException [^] speaks only about libraries you can't qualify as System Librarie and it doesn't apply to Microsoft Libraries because you can't add their source code. False, this restriction related to source code does not exists in v3. |
|
|
Here is the system library definition of GPL v3: "The “System Libraries” of an executable work include anything, other than the work as a whole, that (a) is included in the normal form of packaging a Major Component, but which is not part of that Major Component, and (b) serves only to enable use of the work with that Major Component, or to implement a Standard Interface for which an implementation is available to the public in source code form. A “Major Component”, in this context, means a major essential component (kernel, window system, and so on) of the specific operating system (if any) on which the executable work runs, or a compiler used to produce the work, or an object code interpreter used to run it." The point 6 of GPL v3: "A separable portion of the object code, whose source code is excluded from the Corresponding Source as a System Library, need not be included in conveying the object code work." Conclusion: in GPL v3 there is no need to provide source code for system libraries. |
|
|
You are talking about source code of system libraries, I'm talking about proprietary Microsoft libraries. Try to have the source code of them ! |
|
|
A “Major Component”, in this context, means a major essential component (kernel, window system, and so on) of the specific operating system (if any) on which the executable work runs, *or a compiler used to produce the work* ... For GPL v3, vc++ runtimes are system libraries: "(a) is included in the normal form of packaging a Major Component, but which is not part of that Major Component, and (b) serves only to enable use of the work with that Major Component" The Major Component being here Visual C++ as a "compiler used to produce the work". Do not try to change definition of GPL v3 system libraries. |
|
|
At this point this seems more about about opinions then actual licenses and legalities. Marking as 'Resolved' (no change required) |
|
|
NumOpen, hopefully you'll re-consider your repo rules based on the new information shared in this thread. Thanks to all involved. Closing ticket. |
| Date Modified | Username | Field | Change |
|---|---|---|---|
| 2016-04-08 20:55 | NumOpen | New Issue | |
| 2016-04-08 20:55 | NumOpen | File Added: Screenshot at 2016-04-08 20:57:40.png | |
| 2016-04-08 21:48 | jghali | Note Added: 0039925 | |
| 2016-04-08 21:48 | jghali | Status | new => resolved |
| 2016-04-08 21:48 | jghali | Resolution | open => no change required |
| 2016-04-08 21:48 | jghali | Assigned To | => jghali |
| 2016-04-08 21:48 | jghali | Status | resolved => closed |
| 2016-04-08 21:56 | NumOpen | Note Added: 0039927 | |
| 2016-04-08 21:56 | NumOpen | Status | closed => feedback |
| 2016-04-08 21:56 | NumOpen | Resolution | no change required => reopened |
| 2016-04-09 01:02 | jghali | Note Added: 0039930 | |
| 2016-04-09 07:07 | NumOpen | Note Added: 0039946 | |
| 2016-04-09 07:07 | NumOpen | Status | feedback => assigned |
| 2016-04-09 10:26 | jghali | Note Added: 0039949 | |
| 2016-04-09 10:33 | jghali | Note Added: 0039950 | |
| 2016-04-09 10:34 | jghali | Note Added: 0039951 | |
| 2016-04-09 10:39 | jghali | Note Edited: 0039951 | |
| 2016-04-09 12:48 | Kunda | Tag Attached: discussion | |
| 2016-04-09 12:50 | Kunda | Note Added: 0039954 | |
| 2016-04-10 15:56 | Kunda | Note Added: 0040018 | |
| 2016-04-11 08:05 | NumOpen | Note Added: 0040036 | |
| 2016-04-11 08:16 | NumOpen | Note Added: 0040037 | |
| 2016-04-11 08:26 | jghali | Note Added: 0040039 | |
| 2016-04-11 08:41 | NumOpen | Note Added: 0040040 | |
| 2016-04-11 08:51 | jghali | Note Added: 0040041 | |
| 2016-04-11 09:16 | jghali | Note Added: 0040042 | |
| 2016-04-11 09:19 | jghali | Note Added: 0040043 | |
| 2016-04-11 09:19 | jghali | Note Edited: 0040043 | |
| 2016-04-11 09:41 | NumOpen | Note Added: 0040044 | |
| 2016-04-11 09:45 | jghali | Note Added: 0040045 | |
| 2016-04-11 09:46 | jghali | Note Added: 0040046 | |
| 2016-04-11 09:47 | jghali | Note Added: 0040047 | |
| 2016-04-11 09:48 | NumOpen | Note Added: 0040048 | |
| 2016-04-11 09:53 | jghali | Note Added: 0040049 | |
| 2016-04-11 09:56 | NumOpen | Note Added: 0040050 | |
| 2016-04-11 10:01 | NumOpen | Note Added: 0040051 | |
| 2016-04-11 10:02 | NumOpen | Note Edited: 0040051 | |
| 2016-04-11 10:03 | NumOpen | Note Edited: 0040051 | |
| 2016-04-11 10:05 | NumOpen | Note Edited: 0040050 | |
| 2016-04-11 10:09 | jghali | Note Added: 0040052 | |
| 2016-04-11 10:36 | jghali | Note Added: 0040053 | |
| 2016-04-11 13:40 | jghali | Note Added: 0040057 | |
| 2016-04-11 13:42 | jghali | Note Edited: 0040057 | |
| 2016-04-11 13:44 | Kunda | Note Added: 0040058 | |
| 2016-04-11 13:49 | jghali | Note Added: 0040059 | |
| 2016-04-11 13:57 | jghali | Note Added: 0040061 | |
| 2016-04-11 13:58 | jghali | Note Edited: 0040061 | |
| 2016-04-11 13:58 | jghali | Note Edited: 0040061 | |
| 2016-04-11 13:59 | jghali | Note Edited: 0040061 | |
| 2016-04-11 14:02 | jghali | Note Added: 0040062 | |
| 2016-04-11 14:02 | jghali | Note Edited: 0040062 | |
| 2016-04-11 14:05 | jghali | Note Added: 0040063 | |
| 2016-04-11 14:11 | jghali | Note Edited: 0040063 | |
| 2016-04-11 14:17 | NumOpen | Note Added: 0040064 | |
| 2016-04-11 14:20 | jghali | Note Added: 0040065 | |
| 2016-04-11 14:23 | NumOpen | Note Added: 0040066 | |
| 2016-04-11 14:23 | jghali | Note Added: 0040067 | |
| 2016-04-11 14:26 | jghali | Note Added: 0040068 | |
| 2016-04-11 14:33 | NumOpen | Note Added: 0040069 | |
| 2016-04-11 14:34 | NumOpen | Note Added: 0040070 | |
| 2016-04-11 14:40 | jghali | Note Added: 0040071 | |
| 2016-04-11 14:53 | jghali | Note Added: 0040072 | |
| 2016-04-11 14:57 | NumOpen | Note Added: 0040073 | |
| 2016-04-11 14:58 | NumOpen | Note Edited: 0040073 | |
| 2016-04-11 15:03 | jghali | Note Added: 0040074 | |
| 2016-04-11 15:03 | jghali | Note Edited: 0040074 | |
| 2016-04-11 15:04 | jghali | Note Edited: 0040074 | |
| 2016-04-11 18:40 | Kunda | Note Added: 0040080 | |
| 2016-04-11 18:40 | Kunda | Status | assigned => resolved |
| 2016-04-11 18:40 | Kunda | Resolution | reopened => no change required |
| 2016-04-13 14:04 | Kunda | Note Added: 0040124 | |
| 2016-04-13 14:04 | Kunda | Status | resolved => closed |