View Issue Details

IDProjectCategoryView StatusLast Update
0013932ScribusBuild Systempublic2016-04-13 14:04
ReporterNumOpen Assigned Tojghali  
PrioritynormalSeverityminorReproducibilityalways
Status closedResolutionno change required 
PlatformIntel 64 bitsOSWindows OS Version7 Professional
Product Version1.5.1 
Summary0013932: Microsoft Visual C++ 2008 and Microsoft Visual C++ 2012 are included the setup package
DescriptionI 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.
Tagsdiscussion
PatchNo

Activities

NumOpen

2016-04-08 20:55

reporter  

jghali

2016-04-08 21:48

administrator   ~0039925

>> 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.

NumOpen

2016-04-08 21:56

reporter   ~0039927

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.

jghali

2016-04-09 01:02

administrator   ~0039930

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.

NumOpen

2016-04-09 07:07

reporter   ~0039946

That's your choice. I remove Scribus from my next compilation of free softwares as Visual C++ is included into the installer.

jghali

2016-04-09 10:26

administrator   ~0039949

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.

jghali

2016-04-09 10:33

administrator   ~0039950

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.

jghali

2016-04-09 10:34

administrator   ~0039951

Last edited: 2016-04-09 10:39

>> in all the others free softwares, none of them include MS VC++.

This is clearly not true.

Kunda

2016-04-09 12:50

updater   ~0039954

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.

Kunda

2016-04-10 15:56

updater   ~0040018

NumOpen, follow-up ?

NumOpen

2016-04-11 08:05

reporter   ~0040036

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.

NumOpen

2016-04-11 08:16

reporter   ~0040037

Any examples of free softwares that correctly test and if necessary install VC++ : HexChat, PHPServer, Shareaza, Wings 3D.

jghali

2016-04-11 08:26

administrator   ~0040039

>> 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.

NumOpen

2016-04-11 08:41

reporter   ~0040040

They know that, I made a bug report to their support.

jghali

2016-04-11 08:51

administrator   ~0040041

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."

jghali

2016-04-11 09:16

administrator   ~0040042

>> 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.

jghali

2016-04-11 09:19

administrator   ~0040043

Last edited: 2016-04-11 09:19

In this case, you'll even find the VC ++ runtime installer (vcredist_*) in Wings 3D install folder at the end of installation.

NumOpen

2016-04-11 09:41

reporter   ~0040044

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."

jghali

2016-04-11 09:45

administrator   ~0040045

GPL v3 does not say that.

jghali

2016-04-11 09:46

administrator   ~0040046

http://www.gnu.org/licenses/quick-guide-gplv3.fr.html

jghali

2016-04-11 09:47

administrator   ~0040047

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."

NumOpen

2016-04-11 09:48

reporter   ~0040048

I made a bug report for Wings 3D too.

jghali

2016-04-11 09:53

administrator   ~0040049

Wings 3D is not under GPL, but under a much more permissive license, so there is no bug here.

NumOpen

2016-04-11 09:56

reporter   ~0040050

Last edited: 2016-04-11 10:05

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.

NumOpen

2016-04-11 10:01

reporter   ~0040051

Last edited: 2016-04-11 10:03

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).

jghali

2016-04-11 10:09

administrator   ~0040052

>> 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".

jghali

2016-04-11 10:36

administrator   ~0040053

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)

jghali

2016-04-11 13:40

administrator   ~0040057

Last edited: 2016-04-11 13:42

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.

Kunda

2016-04-11 13:44

updater   ~0040058

jghali, re: Qt commercial DLLs
does this also relate to other FLOSS projects like Krita ?

jghali

2016-04-11 13:49

administrator   ~0040059

Each project can add its own exceptions to the GPL. So yes, other projects can also have such exceptions.

jghali

2016-04-11 13:57

administrator   ~0040061

Last edited: 2016-04-11 13:59

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.

jghali

2016-04-11 14:02

administrator   ~0040062

Last edited: 2016-04-11 14:02

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.

jghali

2016-04-11 14:05

administrator   ~0040063

Last edited: 2016-04-11 14:11

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.

NumOpen

2016-04-11 14:17

reporter   ~0040064

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.

jghali

2016-04-11 14:20

administrator   ~0040065

>> 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.

NumOpen

2016-04-11 14:23

reporter   ~0040066

http://www.gnu.org/licenses/gpl-faq.en.html#WindowsRuntimeAndGPL is speaking about GPL 2 and 3.

jghali

2016-04-11 14:23

administrator   ~0040067

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.

jghali

2016-04-11 14:26

administrator   ~0040068

>> 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.

NumOpen

2016-04-11 14:33

reporter   ~0040069

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.

NumOpen

2016-04-11 14:34

reporter   ~0040070

I'm asking more explanations to FSF.

jghali

2016-04-11 14:40

administrator   ~0040071

>> 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.

jghali

2016-04-11 14:53

administrator   ~0040072

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.

NumOpen

2016-04-11 14:57

reporter   ~0040073

Last edited: 2016-04-11 14:58

You are talking about source code of system libraries, I'm talking about proprietary Microsoft libraries. Try to have the source code of them !

jghali

2016-04-11 15:03

administrator   ~0040074

Last edited: 2016-04-11 15:04

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.

Kunda

2016-04-11 18:40

updater   ~0040080

At this point this seems more about about opinions then actual licenses and legalities.
Marking as 'Resolved' (no change required)

Kunda

2016-04-13 14:04

updater   ~0040124

NumOpen, hopefully you'll re-consider your repo rules based on the new information shared in this thread.
Thanks to all involved.
Closing ticket.

Issue History

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