<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40"><head><meta http-equiv=Content-Type content="text/html; charset=utf-8"><meta name=Generator content="Microsoft Word 15 (filtered medium)"><style><!--
/* Font Definitions */
@font-face
        {font-family:Helvetica;
        panose-1:2 11 6 4 2 2 2 2 2 4;}
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
        {font-family:"Open Sans";}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        margin-bottom:.0001pt;
        font-size:12.0pt;
        font-family:"Times New Roman",serif;}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:purple;
        text-decoration:underline;}
p.msonormal0, li.msonormal0, div.msonormal0
        {mso-style-name:msonormal;
        mso-margin-top-alt:auto;
        margin-right:0in;
        mso-margin-bottom-alt:auto;
        margin-left:0in;
        font-size:12.0pt;
        font-family:"Times New Roman",serif;}
span.EmailStyle18
        {mso-style-type:personal;
        font-family:"Calibri",sans-serif;
        color:windowtext;
        font-weight:normal;
        font-style:normal;
        text-decoration:none none;}
span.EmailStyle19
        {mso-style-type:personal-compose;
        font-family:"Calibri",sans-serif;
        color:black;
        font-weight:normal;
        font-style:normal;
        text-decoration:none none;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-family:"Calibri",sans-serif;}
@page WordSection1
        {size:8.5in 11.0in;
        margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
        {page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]--></head><body lang=EN-US link=blue vlink=purple><div class=WordSection1><p class=MsoNormal style='margin-left:.5in'><span style='font-family:"Calibri",sans-serif'>Andi McClure wrote:<o:p></o:p></span></p><p class=MsoNormal style='margin-left:.5in'><span style='font-family:"Calibri",sans-serif'>> </span>The zlib license refers to "source distributions". The BSD license refers to "redistributions of source code". Neither license defines "source code". Without a definition, how do I (or someone who uses my project) know whether cases #2 and #3 are "source distributions"? Cases #2 and #3 are literally distributing Javascript source, although it is no longer the source to the original program.<span style='font-family:"Calibri",sans-serif'><o:p></o:p></span></p><p class=MsoNormal><span style='font-family:"Calibri",sans-serif'><o:p> </o:p></span></p><p class=MsoNormal><span style='font-family:"Calibri",sans-serif'>These areas of technical confusion perhaps explain why the U.S. copyright law does not distinguish between source and other forms of the same software. There are procedures for registering a copyright with either the source code or (for proprietary software) parts of the binary only. As far as the Library of Congress is concerned, both forms are the same original work protected by the exact same copyright.<o:p></o:p></span></p><p class=MsoNormal><span style='font-family:"Calibri",sans-serif'><o:p> </o:p></span></p><p class=MsoNormal><span style='font-family:"Calibri",sans-serif'>What is important for open source is that the source code be available for downstream modification and security validation. Otherwise the FOSS license needn't distinguish. Many open source licenses identify "source code" without defining it clearly. Here, though, is one definition:<o:p></o:p></span></p><p class=MsoNormal><span style='font-family:"Calibri",sans-serif'><o:p> </o:p></span></p><p class=MsoNormal style='margin-left:.5in'><span lang=EN style='font-size:10.5pt;font-family:"Open Sans";color:#444444'>3) <b>Grant</b> of Source Code License. The term "Source Code" means the preferred form of the Original Work for making modifications to it and all available documentation describing how to modify the Original Work. Licensor agrees to provide a machine-readable copy of the Source Code of the Original Work along with each copy of the Original Work that Licensor distributes. Licensor reserves the right to satisfy this obligation by placing a machine-readable copy of the Source Code in an information repository reasonably calculated to permit inexpensive and convenient access by You for as long as Licensor continues to distribute the Original Work.</span><span style='font-family:"Calibri",sans-serif'><o:p></o:p></span></p><p class=MsoNormal><span style='font-family:"Calibri",sans-serif'><o:p> </o:p></span></p><p class=MsoNormal><span style='font-family:"Calibri",sans-serif'><a href="https://opensource.org/licenses/osl-3.0">OSL 3.0</a> § 3. <o:p></o:p></span></p><p class=MsoNormal><span style='font-family:"Calibri",sans-serif'><o:p> </o:p></span></p><p class=MsoNormal><span style='font-family:"Calibri",sans-serif'>/Larry<o:p></o:p></span></p><p class=MsoNormal><span style='font-family:"Calibri",sans-serif'><o:p> </o:p></span></p><p class=MsoNormal><span style='font-family:"Calibri",sans-serif'><o:p> </o:p></span></p><p class=MsoNormal style='margin-left:.5in'><b><span style='font-size:11.0pt;font-family:"Calibri",sans-serif'>From:</span></b><span style='font-size:11.0pt;font-family:"Calibri",sans-serif'> Andi McClure [mailto:andi.m.mcclure@gmail.com] <br><b>Sent:</b> Thursday, May 19, 2016 7:06 PM<br><b>To:</b> license-discuss@opensource.org<br><b>Subject:</b> [License-discuss] Source-attribution licenses and Javascript compatibility<o:p></o:p></span></p><p class=MsoNormal style='margin-left:.5in'><o:p> </o:p></p><div><p class=MsoNormal style='margin-left:.5in'>I am working on some projects (a programming language, a game library) for which I wish to use a "source attribution" license-- for example, the zlib license, or the 2-clause BSD license if I could somehow delete the second clause. I want people redistributing or reusing source code from my project to keep attribution along with the source; however, I do not want to put conditions on people who are only distributing executable versions to be run by end users.<br><br>However it is ambiguous to me what "source" and "executable" mean when dealing with interpreted languages, or in particular when dealing with Javascript, which has developed an entire tools ecosystem around "minifying". Consider these scenarios:<br><br>1. A developer has taken a Javascript library I wrote and embedded it into a web app they wrote using a <script src> tag. (The .js source file is vended from their web server, but never made directly visible to the end user.)<br><br>2. A developer has used node.js, uglify.js and webpack to "compile" a Javascript library I wrote, along with their own code and other libraries, into a single large .js file. The code is dense, not human readable and is basically obfuscated.<br><br>3. A developer has used a transpiler like Emscripten to compile a C library I wrote into dense, non-human-readable Javascript code.<br><br>4. A developer has written a program in Lua, an interpreted language. They distribute this as a .exe containing an embedded Lua interpreter. They pack all the Lua code their program uses, including a Lua library I wrote, into a .zip file and distribute this .zip along with their .exe (possibly literally packed into the binary of the exe itself).<br><br>These are all real, non-hypothetical ways of using open source code (I have done all of them myself) and I do not think I know how to apply the zlib license to any of these.<br><br>The zlib license refers to "source distributions". The BSD license refers to "redistributions of source code". Neither license defines "source code". Without a definition, how do I (or someone who uses my project) know whether cases #2 and #3 are "source distributions"? Cases #2 and #3 are literally distributing Javascript source, although it is no longer the source to the original program.<br><br>The Apache and MPL licenses *do* define "source code" (both say something like "the form of the work preferred for making modifications"). Both of these licenses are more restrictive than I want to use, but the definition at least means the license is unambiguous, and clearly with these licenses cases #2 and #3 are not "source distributions". If I had a license which excused attribution in the case of #2 and #3, but required attribution in the case of #1 and #4, I think I would feel satisifed since I assume in cases #1 and #4 one could satisfy the license by simply leaving comments in the source files (#2 and #3 are awkward this way because the javascript-packing process naturally strips comments).<br><br>Is there a existing source-attribution license which fits my needs here?<br><br>Would it be sufficient to use the zlib license and then outside the license include a clarifying paragraph like:<br><br>    "For purposes of the above license, 'source' is defined as the preferred form for making modifications to the code. In other words, minified Javascript which is not intended to be modified does not count as a 'source distribution'."<br><br>…and if I included such a clarifying paragraph outside the license, would I break the magical spell of OSI compliance which zlib normally has?<br><br>Alternately, would it make sense to introduce a new license for this purpose? It seems like the javascript ecosystem is really hurting for an appropriate license, and this is a real need which should be filled at some point. My impression from my brief experiences with modern javascript development is many of the people using webpack are not bothering to fill their license requirements (ie using MIT licensed libraries but not surfacing license information anywhere).<br><br>- Andi McClure<br><a href="http://emilylang.org">http://emilylang.org</a><o:p></o:p></p></div></div></body></html>