<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"><html><head><meta name="qrichtext" content="1" /><style type="text/css">p, li { white-space: pre-wrap; }</style></head><body style=" font-family:'DejaVu Sans'; font-size:9pt; font-weight:400; font-style:normal;">To the OSI Board,<br>
<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; -qt-user-state:0;"><br></p>This is a formal request of Approval for the Falcon Programming Language License 1.1.<br>
<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; -qt-user-state:0;"><br></p>FPLL is meant to be a general purpose, open source license aiming to protect the freedom and the rights of programming language writers and users. It is widely based on Apache 2. <br>
<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; -qt-user-state:0;"><br></p>The official text of the license is available here:<br>
<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; -qt-user-state:0;"><br></p>http://www.falconpl.org/index.ftd?page_id=license_1_1<br>
<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; -qt-user-state:0;"><br></p><p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; -qt-user-state:0;"><br></p>I add a legal analysis performed by a prominent attorney in my country. I am sending a translation in english (approved by the attorney), the original document in PDF format and a transcription in .txt format. The analysis is centered on comparation with Apache 2 license (as required by the submission rules).<br>
<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; -qt-user-state:0;"><br></p>Here below I write the rationale of the License.<br>
<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; -qt-user-state:0;"><br></p>Thank you in advance for your Kind Attention,<br>
Giancarlo Niccolai<br>
<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; -qt-user-state:0;"><br></p><p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; -qt-user-state:0;"><br></p><p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; -qt-user-state:0;"><br></p><p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; -qt-user-state:0;"><br></p>Rationale<br>
======<br>
<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; -qt-user-state:0;"><br></p>The Falcon Programming Language License (FPLL) is meant to be a general purpose, open source license aiming to protect the freedom and the rights of programming language writers and users.<br>
<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; -qt-user-state:0;"><br></p>When first releasing the Falcon Programming Language to the public, I searched for an open source license that may grant openness of the distributed code, prevent abuses as close-source boxing, but yet fully grant the ability to use the Falcon scripting engine everywhere, including in commercial applications and to do anything, including falcon-based commercial source applications. Studying deeply the GPL and LGPL licenses, and participating also to related newsgroups and mailing list, I discovered that they were not adequate for such a task, as they required any application where such a deep embedding is performed to be released under a GPL-compatible license. This would have made extremely difficult to integrate a Falcon scripting engine in already existing commercial applications, and would have been a deterrent to further adoption of Falcon in commercial realities where it was already somewhat used at the time.<br>
Further studies confirmed this analysis: up to date, there is NO mainstream programming language, embeddable or stand-alone, released under a “pure” GPL compatible license.<br>
Python, PHP, Ruby are all licensed under a proprietary license, which makes explicit reference to the entities that own the copyright of the original software (i.e. the Python foundation). In particular, Ruby license is controversial on some aspect regarding some specific key areas of the inner code. They are all OSI approved, but being project specific they cannot be used in other projects without modifications.<br>
PERL is released under dual licensing, GPL and Artistic license; it is embeddable in existing commercial applications due to the latter, while the former grants compatibility with GPL based software distributions (i.e. GNU/Linux distributions).<br>
SWI Prolog, Common Lisp, and even GCC are licensed under GPL or LGPL with some language/usage specific exceptions. In particular, runtime libraries for GCC are distributed under the “GCC Runtime Library Exception.”<br>
Lua was licensed under a Lua-specific license (OSI approved, derived from z-lib) up to version 4.0; version 5.0 and following are licensed under MIT license; yet, Lua source code is meant for inclusion and modification directly in other applications, rather than for usage as-is (as a ready-to-use engine), and as such its common pattern usage is a bit different with respect to the other programming languages.<br>
<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; -qt-user-state:0;"><br></p>In short, from this picture it is rather evident that the currently existing OSI approved licenses are deficient in covering the licensing needs of open source programming languages and scripting engines.<br>
Also, the option of adopting an existing license and modifying it, i.e. applying an exception to it, may seem to reduce the problem of license proliferation, but it is actually working towards the proliferation of potential legal issues. IMHO it's evil #1, evil #2, evil #3 and evil #4.<br>
It's evil #1 because it forces both commercial-oriented and free-oriented users into studying separate exceptions for separate products. When legal issues become relevant, this force, or should force, both open-source based institutions (i.e. GNU/Linux distributors) and commercial entities (i.e. firms willing to use my software) into kicking the exception down to the legal department and wait for a response before deciding to adopt a software with such a modified license. The argument that an exception is easier to analyse  than a whole new license doesn't hold, as if it's true that the text of exceptions are usually (but not necessarily) shorter than the text of a full license, it's also true that the legal consequences may have the same width.<br>
It's evil #2 because both who writes the exception and who accepts it may not have fully calculated the legal effects of it. At least in theory, it is possible to configure legal scenarios that can happen due to an exception and that are undesirable for one of the party, or for the general idea of software freedom; those legal scenario are exactly what a certification process is meant to exclude.<br>
It's evil #3 because, applying such exceptions outside the control of a legal entity may generate a legal monster, which sneaks into otherwise legal-proof software set. The software base of GNU/Linux distributions, for instance, is just too big to account for an endless set of exceptions, and I have personally witnessed cases where open source software licensed under GPL with an exception had been added to the distribution without any further legal analysis of the exception. Similar scenario can be thought of commercial entities willing to adopt an open-source software to drive an internal or commercial project, could just read and approve the license terms, but it may overlook the exception as a minor detail, underestimating its legal consequences. This “legal time-bombs” may one day trigger a legal action that may 1) be a very unpleasant surprise for distributors, commercial developers and general users, and 2) provoke a damage to the image of free software.<br>
It's evil #4 because, both in a commercial reality and in an open-source driven institution, it is impossible to account for the effects of all the combinations of every exception. The argument that “as long as it sticks with the policy (Debian), or with the criteria (OSI), the exception is OK” doesn't hold, as it is possible to figure some scenario where an exception may be in contrast with others without breaking those rules, or at least, without breaking a consistent subset of rules (compatibility with GPL OR (exclusive) conformance to OSI criteria OR (exclusive) conformance with the Policy) which may justify legally the existence of that exception in some open-source or free-software contexts.<br>
In short, considering the inadequacy of existing non-specific licenses to cover the needs of an open source programming language interpreter/compiler/embedded engine, and considering the fact that exception proliferation is by no mean better than license proliferation, I worked towards a general Open Source license meant for this kind of software.<br>
As a base, I used the Apache 2.0 license, which was the general purpose open source license nearest to the needs of a stand-alone language interpreter/compiler. The FPLL 1.0 was just the generalization of the Apache 2.0 license with the introduction of the definitions of Embedding applications (an application using the “work” as an engine to perform some tasks) and of Applications of the work (that is “your scripts”, or better, an application run through the “work” which interprets it, or through the prominent usage of its libraries in case of compiled, machine runnable code). The distinction was made so that open source requirements applied only to the derivative works (that is, for example, an XFalcon which just extended the Falcon compiler or virtual machines with new functionalities), while applications and embedding works were required less stringent terms. After a discussion on the Fedora and Debian project legal mailing lists, and with the help of an attorney, I worked out a new version simplifying some concepts and clearing some ambiguities.<br>
In its current form, FPLL states that:<br>
Derivative works must be distributed under the FPLL license or compatible, and thus, 1) they must be made available in source code, 2) the original source must be made available or it must be indicated where to get it, 3) the modification with respect to the original source must be described.<br>
Open source (i.e. when the source is made available) embedding applications and applications of the work (scripts in Falcon USING a FPLL licensed interpreter) are free from any restriction. They are positively outside the scope of the FPLL license. FPLL do not applies to them, nor can be extended to them improperly.<br>
Closed source embedding application and applications of the work (i.e. when the source is hidden) must indicate the fact that they are using the FPLL engine or are compiled/run through the FPLL compiler/interpreter/virtual machine; as an additional requirement, closed source embedding applications must also indicate what the FPLL engine is used for.<br>
In other words, FPLL requires derivative works to stay open as the original work, while applications written through them or embedding applications can be distributed under any license, and in any form, under the condition that if they are not open source they must acknowledge the fact that they are using the product, and where it is not self-evident, also why.<br>
The rationale of this is that of preventing obfuscation and hiding of the FPLL licensed product away from the final user. Users of the FPLL licensed product are still able to decide not to publish their source code or not, yet they must grant their final users the right to know what underlying engine is driving their applications, or what part of the application they're are using is driven by FPLL licensed software.<br>
<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; -qt-user-state:0;"><br></p>Although the Falcon Programming Language License bear the name of “Falcon”, it is totally generic and makes no reference to a specific software; rather, it addresses the category of software that can be used to write higher level applications and/or to be included (or used) into other applications to perform relevant tasks.<br>
In this, as the Apache license, it can be applied to a wide range of open source software.<br>
<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; -qt-user-state:0;"><br></p>Lastly, let me state that I am ready to accept any amendment the OSI council may want to bring in the to improve it.</p></body></html>