0

My friend is currently in preparation of distributing his software and wants to cleanup on the licenses of software he uses. The strategy is that he collects all the files that provides the licensing text.

He finished collecting all the "obvious" licenses, such as the Qt license of the Qt libraries he uses. However he also uses some of the Windows DLLs that come with Windows, such as kernel32.dll and advapi32.dll.

Where can he find the license files so that he can publish it with his software? The first DLL file, kernel32 appears to be automatically linked to his software based on an http://en.wikipedia.org/wiki/Auto-linking directive. The second file, advapi32.dll is linked explicitly to his software, and he wants to cleanup the situation of that file by collecting the file that provides the license.

For debian linux for example, he knows that the files are below /usr/share/doc/<package of the library>/copyright.

Johannes Schaub - litb
  • 496,577
  • 130
  • 894
  • 1,212
  • AFAIK, these libraries are never redistributed because every Windows computer has them. – Alex F Sep 18 '14 at 11:25
  • @AlexFarber but he does link against them. doesn't the mere fact of linking constitute a "use"? Otherwise i could just link a proprietary program against a GPL library dynamically and say they should download the DLL from the official webpages.. that can't be true. – Johannes Schaub - litb Sep 18 '14 at 13:30
  • http://msdn.microsoft.com/en-us/library/8kche8ah.aspx Look at this: `Typically, you do not have to redistribute system DLLs ... However, there might be exceptions ... In this case, be sure to read the corresponding license terms` I think this is quite enough to be sure, that using Windows libraries is not subject of licensing. Only hypothetical case of redistribution requires some attention. – Alex F Sep 18 '14 at 14:15
  • One could take comfort in the fact that Microsoft, who after all want to continue to make money and have no philosophical axe to grind, have no motive to discourage people from writing and distributing Windows applications. – Harry Johnston Sep 19 '14 at 04:21
  • 4
    I'm voting to close this question as off-topic because it is about licensing or legal issues, not programming or software development. [See here](http://meta.stackoverflow.com/questions/274963/questions-about-licensing/274964#274964) and [here](http://meta.stackexchange.com/questions/139804/can-licensing-questions-ever-be-on-topic) for details, and the [help] for more. – JasonMArcher Jun 15 '15 at 04:58
  • @jason i disagree. The question is about the file or internet location of the license information. Not about licenaing or legal issues concerning that or any other license. – Johannes Schaub - litb Jun 16 '15 at 17:36
  • @JohannesSchaub-litb Asking for the location of something is also off-topic. I chose the reason I did because it was the most off-topic thing about this question. But there is no on-topic part of this question. – JasonMArcher Jun 16 '15 at 17:38
  • @jason why do you think that asking about the location of a file of a tool commonly used by programmers (windows api dlls) is not a question about tools commonly used by programmers? The latter is ontopic according to the helpcenter. – Johannes Schaub - litb Jun 16 '15 at 17:42
  • Check the [Help Center](http://stackoverflow.com/help/on-topic), item 4. – JasonMArcher Jun 16 '15 at 18:14
  • @JasonMArcher my question does not ask for recommendation or search for a tool or resource that can be answered in different ways on per-opinion base (item 4). The location of the file is not up to the answering people's opinion and does not attract spam/advertisement. This is no different from asking about the location of a header/module file of a software system (which is also on-topic, and questions like that have been asked before). You are interpreting the text of item 4 to yield a meaning that isn't intended by item 4. The item even gives its rationale to prevent such misinterpreation. – Johannes Schaub - litb Jun 16 '15 at 18:42
  • @JohannesSchaub-litb "What is the license of those files and **where can he find** the license" – JasonMArcher Jun 16 '15 at 18:56
  • @JasonMArcher OK see what your point is now. Thanks for noting. Improved. – Johannes Schaub - litb Jun 16 '15 at 18:57

3 Answers3

4

Not an option, distributing those Windows components cannot work. Different Windows versions have very different implementations of these DLLs. Even computers with the same version may have different DLL versions, these runtime components are often updated by Windows Update. Forcibly overwriting them would be normally disastrous, but the File System Protection feature in Windows recovers the damage.

There simply is no need to distribute these DLLs. Every Windows machine already has them, along with a solid promise from Microsoft that they will be compatible with the program as long as the programmer set the _WIN32_WINNT macro correctly in his code. Which selects the minimum Windows version that he chooses to support, it prevents accidentally taking a dependency on winapi functions that are only available in later versions. Getting that wrong simply prevents the program from starting.

Hans Passant
  • 922,412
  • 146
  • 1,693
  • 2,536
  • He's not talking about distribution. He's talking about the requirement in GPL to license everything he links with under GPL also. I guess he isn't aware of the GPL exception for system libraries. – Ben Voigt Sep 18 '14 at 14:42
  • @Ben I am not asking about requirements of GPL (I am aware about the system libraries exception in the GPL license), but about requirements of linking against windows DLL files and distribution of a program that links against them (He does *not* want to distribute windows DLL files. Windows already contains them). – Johannes Schaub - litb Sep 18 '14 at 16:40
  • @Hans thanks for your answer. But the question actually is: If the DLLs are not distributed, but the program that links against the DLL is distributed, what licensing requirements are imbued upon the program that uses functions of the DLL? Where is this specified? – Johannes Schaub - litb Sep 18 '14 at 16:43
  • 2
    None that I know of. The use of the import libraries to get the program linked is covered by the Windows SDK license. It is the user's burden to have a properly licensed copy of the operating system. Microsoft doesn't have any similar to a "viral" license that puts demands on just linking to other code. – Hans Passant Sep 19 '14 at 01:51
1

Since you mentioned GPL in the comments, you need to know that GPL has special language concerning system libraries.

The GPL FAQ says

Both versions of the GPL have an exception to their copyleft, commonly called the system library exception. If the GPL-incompatible libraries you want to use meet the criteria for a system library, then you don't have to do anything special to use them; the requirement to distribute source code for the whole program does not include those libraries, even if you distribute a linked executable containing them.

Naturally you should rely on the actual legal language of the license, not the FAQ. Hopefully any infectious non-GPL licenses take a similar approach.

The license that applies to Windows system DLLs is the end-user license for the desktop or server OS that they came with. There are many variations on these, such as volume licenses or development subscription licenses. So your friend needs to just chalk those up as "system library, non-distributable, source not distributable, governed by OS license".

Contrary to Alex's assertion in the comments, the Windows license does (or at least attempts to) govern use in addition to redistribution. Running the application in, for example WINE, where there may not be a valid license for certain required system libraries would present a problem, even if the system libraries were placed onto the hard drive during installation/patching of a licensed copy of Windows. I am not a lawyer, but I'm pretty sure that problem falls on the administrator of the WINE environment who caused those DLLs to be loaded, not the third-party application developer.

Ben Voigt
  • 277,958
  • 43
  • 419
  • 720
0

You may not redistribute Windows system DLLs. This includes kernel32, ntdll, advapi32, and a couple of others. The exact list is not fixed but basically, it includes almost anything in the system32 directory. (This list may be a good start.) These files are considered to be part of Windows and thus covered by Windows EULA.

What you may redistribute depends on your compiler and/or any third-party (non included in Windows) libraries you're using. For Microsoft Visual C++, see redist.txt in the installation directory. It usually has a text similar to following:

Visual C++ Runtime files

Subject to the license terms for the software, you may redistribute the .EXE files (unmodified) listed below. 
These files can be run as prerequisites during installation.

vcredist_x86.exe
vcredist_x64.exe 
vcredist_IA64.exe

Subject to the license terms for the software, you may redistribute MSM files listed below unmodified as a part of your installation package:

[...]

See here on the specifics of redistributing MS C runtime.

For other compilers/libraries you will need to consult their documentation.

Community
  • 1
  • 1
Igor Skochinsky
  • 24,629
  • 2
  • 72
  • 109