Van Lindberg <[EMAIL PROTECTED]> added the comment: Sorry for the long comment. There are two parts to this comment. First, my recommendation, and second, the somewhat tedious analysis of the Microsoft EULAs. The second part is the verbiage to justify the first.
Recommendation ============== To comply with Microsoft's EULA, the PSF should include text like the following in the Windows binary installer license text: ---- "This program is linked with and uses Microsoft Distributable Code, copyrighted by Microsoft Corporation. The Microsoft Distributable Code includes the following files: [...] If you further distribute programs that include the Microsoft Distributable Code, you must comply with the restrictions on distribution specified by Microsoft. In particular, you must require distributors and external end users to agree to terms that protect the Microsoft Distributable Code at least as much as Microsoft's own requirements for the Distributable Code. See Microsoft's documentation (included in its developer tools and on its website at microsoft.com) for specific details. Redistribution of the Windows binary build of the Python interpreter complies with this agreement, provided that you do not: - alter any copyright, trademark or patent notice in Microsoft's Distributable Code; - use Microsoft’s trademarks in your programs’ names or in a way that suggests your programs come from or are endorsed by Microsoft; - distribute Microsoft's Distributable Code to run on a platform other than Microsoft operating systems, run-time technologies or application platforms; - include Microsoft Distributable Code in malicious, deceptive or unlawful programs; or - modify or distribute the source code of any Microsoft Distributable Code so that any part of it becomes subject to an Excluded License. An Excluded License is one that requires, as a condition of use, modification or distribution, that the code be disclosed or distributed in source code form; or others have the right to modify it. These restrictions apply only to the Microsoft Distributable Code as defined above, not to Python itself or any programs running on the Python interpreter. The redistribution of the Python interpreter and libraries is governed by the Python Software License included with this file, or by other licenses as marked. ---- Commentary on the distribution requirements =========================================== VS 2008 (labels added for clarity) ---------------------------------- "ii. Distribution Requirements. For any Distributable Code you distribute, you must (A) add significant primary functionality to it in your programs;" This term is satisfied by the addition of the Python interpreter. (B) "for any Distributable Code having a filename extension of .lib, distribute only the results of running such Distributable Code through a linker with your program;" This prohibits distributing libraries in .lib form. Based on what I see in the MSI, we do not do this. We do include _msi.lib, but that is not Microsoft's _msi.lib, but the ready-for linking version of MvL's msilib. (C) "distribute Distributable Code included in a setup program only as part of that setup program without modification;" Python does not include any Distributable Code included in a setup program. (D) "require distributors and external end users to agree to terms that protect it at least as much as this agreement;" This term specifies that any Distributable Code that we distribute must itself have some sort of agreement that protects Microsoft's rights in "it" (the code) "at least as much as this agreement." The important term here is "it." The antecedent here is "Distributable Code you distribute," (Microsoft's code, in this case the msvcrt.dll), not "your programs" (Python). (E) "display your valid copyright notice on your programs; and" Python complies with this requirement, as we display our own license agreement and include sys.copyright. (F) "indemnify, defend, and hold harmless Microsoft from any claims, including attorneys’ fees, related to the distribution or use of your programs." Under this provision, we agree not to sue Microsoft for distributing Python. "iii. Distribution Restrictions. You may not (G) alter any copyright, trademark or patent notice in the Distributable Code;" Python complies with this requirement, as the Microsoft Distributable Code is distributed unaltered. (H) "use Microsoft’s trademarks in your programs’ names or in a way that suggests your programs come from or are endorsed by Microsoft;" Python complies with this requirement, as we do use Microsoft's trademarks in the program name and we don't suggest that Python comes from or is endorsed by Microsoft. (I) "distribute Distributable Code to run on a platform other than Microsoft operating systems, run-time technologies or application platforms;" While Python could technically run on non-Microsoft platforms (e.g. Wine), the Windows binary distribution is explicitly provided *for Windows.* Other platforms are provided source code or explicit binaries. Therefore, the PSF does not "distribute Distributable Code to run on a platform other than Microsoft operating systems." (J) "include Distributable Code in malicious, deceptive or unlawful programs; or" Python complies with this requirement, as it is not malicious, deceptive, or unlawful. (K) "modify or distribute the source code of any Distributable Code so that any part of it becomes subject to an Excluded License. An Excluded License is one that requires, as a condition of use, modification or distribution, that the code be disclosed or distributed in source code form; or others have the right to modify it." Python complies with this requirement, as it does not express any claim or licensing requirement on any part of the code that goes into a binary distribution. ----- (VS 7.1 EULA) ------------- The analysis for the VS 7.1 EULA is similar to the 2008 EULA above. "3.1 General Distribution Requirements. (a) If you choose to redistribute Sample Code, or Redistributable Code (collectively, the “Redistributables”) as described in Section 2, you agree:" The PSF redistributes "Redistributables", so this section applies to us. "(i) except as otherwise noted in Section 2.1 (Sample Code), to distribute the Redistributables only in object code form and in conjunction with and as a part of a software application product developed by you that adds significant and primary functionality to the Redistributables (“Licensee Software”);" This is similar to requirement (A) above in the 2008 EULA. The Python interpreter fulfills this requirement. "(ii) that the Redistributables only operate in conjunction with Microsoft Windows platforms;" As discussed above relative to paragraph (I) above, and end user could conceivably take the Windows binary distribution of Python and run it on Wine. Regardless, the Windows binary build is clearly marked for use on the Microsoft Windows platform and other platforms have their own builds. Accordingly, Python fulfills this requirement. "(iii) that if the Licensee Software is distributed beyond Licensee’s premises or externally from Licensee’s organization, to distribute the Licensee Software containing the Redistributables pursuant to an end user license agreement (which may be “break-the-seal”, “click-wrap” or signed), with terms no less protective than those contained in this EULA;" The wording in the VS 7.1 EULA is not as clear as in the 2008 EULA, but these license terms only apply to the Microsoft Redistributables, not to Python itself. The PSF will comply with this provision by incorporating Microsoft's terms by reference and explicitly applying them to the Microsoft Redistributables only. "(iv) not to use Microsoft’s name, logo, or trademarks to market the Licensee Software;" As discussed relative to paragraph (H) above, Python complies with this provision. "(v) to display your own valid copyright notice which shall be sufficient to protect Microsoft’s copyright in the Software;" As discussed relative to paragraph (E) above, Python complies with this provision. "(vi) not to remove or obscure any copyright, trademark or patent notices that appear on the Software as delivered to you;" As discussed relative to paragraph (G) above, Python complies with this provision. "(vii) to indemnify, hold harmless, and defend Microsoft from and against any claims or lawsuits, including attorney’s fees, that arise or result from the use or distribution of the Licensee Software;" As discussed relative to paragraph (F) above, Python complies with this provision. "(viii) to otherwise comply with the terms of this EULA;" The PSF and the Python Windows binary distribution otherwise comply with the EULA. "and (ix) agree that Microsoft reserves all rights not expressly granted." The PSF can agree to this provision, again as it refers only to the Microsoft Distributable Code, not Python itself. "You also agree not to permit further distribution of the Redistributables by your end users except you may permit further redistribution of the Redistributables by your distributors to your end-user customers if your distributors only distribute the Redistributables in conjunction with, and as part of, the Licensee Software, you comply with all other terms of this EULA, and your distributors comply with all restrictions of this EULA that are applicable to you." This provision has two parts. First, the PSF agrees to only allow the redistribution of the Microsoft Distributable Code with the Python interpreter, and second, redistributions of the Microsoft Distributable Code need to comply with the EULA. The provided statement complies with both of these provisions by making the restrictions on the Microsoft Distributable Code clear and by incorporating Microsoft's restrictions by reference. "If you use the Redistributables, then in addition to your compliance with the applicable distribution requirements described for the Redistributables, the following also applies. Your license rights to the Redistributables are conditioned upon your not (i) creating derivative works of the Redistributables in any manner that would cause the Redistributables in whole or in part to become subject to any of the terms of an Excluded License; or (ii) distributing the Redistributables (or derivative works thereof) in any manner that would cause the Redistributables to become subject to any of the terms of an Excluded License. An “Excluded License” is any license that requires as a condition of use, modification and/or distribution of software subject to the Excluded License, that such software or other software combined and/or distributed with such software be (x) disclosed or distributed in source code form; (y) licensed for the purpose of making derivative works; or (z) redistributable at no charge." As discussed relative to paragraph (K) above, Python complies with this provision, as it does not express any claim or licensing requirement on any part of the code that goes into a binary distribution. ---------- nosy: +vanl _______________________________________ Python tracker <[EMAIL PROTECTED]> <http://bugs.python.org/issue3617> _______________________________________ _______________________________________________ Python-bugs-list mailing list Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com