www-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

www/licenses gcc-exception-body.html gcc-except...


From: Brett Smith
Subject: www/licenses gcc-exception-body.html gcc-except...
Date: Tue, 27 Jan 2009 18:42:33 +0000

CVSROOT:        /web/www
Module name:    www
Changes by:     Brett Smith <brett>     09/01/27 18:42:33

Added files:
        licenses       : gcc-exception-body.html gcc-exception-faq.html 
                         gcc-exception.html 

Log message:
        Add GCC exception text and rationale

CVSWeb URLs:
http://web.cvs.savannah.gnu.org/viewcvs/www/licenses/gcc-exception-body.html?cvsroot=www&rev=1.1
http://web.cvs.savannah.gnu.org/viewcvs/www/licenses/gcc-exception-faq.html?cvsroot=www&rev=1.1
http://web.cvs.savannah.gnu.org/viewcvs/www/licenses/gcc-exception.html?cvsroot=www&rev=1.1

Patches:
Index: gcc-exception-body.html
===================================================================
RCS file: gcc-exception-body.html
diff -N gcc-exception-body.html
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ gcc-exception-body.html     27 Jan 2009 18:42:04 -0000      1.1
@@ -0,0 +1,74 @@
+
+<h3 style="text-align: center;">GCC RUNTIME LIBRARY EXCEPTION</h3>
+
+<p style="text-align: center;">Version 3, 27 January 2008</p>
+
+<p>
+ Copyright (C) 2007 Free Software Foundation, Inc. &lt;http://fsf.org/&gt;
+ </p><p>Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.</p>
+
+<p>This GCC Runtime Library Exception (&quot;Exception&quot;) is an additional
+permission under section 7 of the GNU General Public License, version
+3 (&quot;GPLv3&quot;).  It applies to a given file (the &quot;Runtime 
Library&quot;) that
+bears a notice placed by the copyright holder of the file stating that
+the file is governed by GPLv3 along with this Exception.</p>
+
+<p>When you use GCC to compile a program, GCC may combine portions of
+certain GCC header files and runtime libraries with the compiled
+program.  The purpose of this Exception is to allow compilation of
+non-GPL (including proprietary) programs to use, in this way, the
+header files and runtime libraries covered by this Exception.
+</p>
+
+<h4><a name="section0"></a>0. Definitions.</h4>
+
+<p>A file is an &quot;Independent Module&quot; if it either requires the 
Runtime
+Library for execution after a Compilation Process, or makes use of an
+interface provided by the Runtime Library, but is not otherwise based on
+the Runtime Library.</p>
+
+<p>&quot;GCC&quot; means a version of the GNU Compiler Collection, with or
+without modifications, governed by version 3 (or a specified later
+version) of the GNU General Public License (GPL) with the option of
+using any subsequent versions published by the FSF.</p>
+
+<p>&quot;GPL-compatible Software&quot; is software whose conditions of
+propagation, modification and use would permit combination with GCC in
+accord with the license of GCC.</p>
+
+<p>&quot;Target Code&quot; refers to output from any compiler for a real or
+virtual target processor architecture, in executable form or suitable
+for input to an assembler, loader, linker and/or execution phase.
+Notwithstanding that, Target Code does not include data in any format
+that is used as a compiler intermediate representation, or used for
+producing a compiler intermediate representation.</p>
+
+<p>The &quot;Compilation Process&quot; transforms code entirely represented in 
a
+high-level, non-intermediate language into Target Code.  Thus, for
+example, use of source code generators and preprocessors need not be
+considered part of the Compilation Process, since the Compilation
+Process can be understood as starting with the output of the
+generators or preprocessors.</p>
+
+<p>A Compilation Process is &quot;Eligible&quot; if it is done using GCC, alone
+or with other GPL-compatible software, or if it is done without using
+any work based on GCC.  For example, using non-GPL-compatible
+Software to optimize any GCC intermediate representations would not
+qualify as an Eligible Compilation Process.</p>
+
+<h4><a name="section1"></a>1. Grant of Additional Permission.</h4>
+
+<p>You have permission to propagate a work of Target Code formed by 
+combining the Runtime Library with Independent Modules, even if such 
+propagation would otherwise violate the terms of GPLv3, provided that 
+all Target Code was generated by Eligible Compilation Processes.  You 
+may then convey such a combination under terms of your choice,
+consistent with the licensing of the Independent Modules.</p>
+
+<h4><a name="section2"></a>2. No Weakening of GCC Copyleft.</h4>
+
+<p>The availability of this Exception does not imply any general
+presumption that third-party software is unaffected by the copyleft
+requirements of the license of GCC.</p>
+

Index: gcc-exception-faq.html
===================================================================
RCS file: gcc-exception-faq.html
diff -N gcc-exception-faq.html
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ gcc-exception-faq.html      27 Jan 2009 18:42:04 -0000      1.1
@@ -0,0 +1,296 @@
+
+<!--#include virtual="/server/header.html" -->
+<title>GCC Runtime Library Exception Rationale and FAQ - GNU Project - Free 
Software Foundation</title>
+<!--#include virtual="/server/banner.html" -->
+<h2>GCC Runtime Library Exception Rationale and FAQ</h2>
+
+<h3>Introduction</h3>
+
+<p>A year and a half ago, the Free Software Foundation released GPLv3.
+It was immediately adopted by fifteen GNU projects, and more made the
+switch in the following months.  Most of the GCC codebase migrated to
+the new license in the 4.2.2 release, and now we are preparing to
+finish that process.</p>
+
+<p>The licenses for some libraries that accompany GCC have not been
+changed yet.  These libraries are automatically used by the object
+code that GCC produces.  Because of that, if these libraries were
+simply distributed only under the terms of the GPL, all the object
+code that GCC produces would have to be distributed under the same
+terms.  However, the FSF decided long ago to allow developers to use
+GCC's libraries to compile any program, regardless of its license.
+Developing nonfree software is not good for society, and we have no
+obligation to make it easier.  We decided to permit this because
+forbidding it seemed likely to backfire, and because using small
+libraries to limit the use of GCC seemed like the tail wagging the
+dog.</p>
+
+<p>Therefore, these libraries have always had license exceptions that
+allow people to distribute the object code GCC produces under any
+license.  We are now moving these libraries to GPLv3 and updating
+their exceptions.  Our fundamental policy has not changed; the new
+license is meant to permit all the uses of GCC that were permitted
+before.  However, we have decided to use this opportunity to update
+the exception to accomplish three goals:</p>
+
+<ul>
+<li><p>Take advantage of GPLv3's new provisions.  GPLv3 features a number
+of new terms which benefit all software.  These include section 7,
+which establishes a framework for providing license exceptions.  In
+order for GCC to get the most benefit from GPLv3, we need to update
+the exception to take these new terms into account, and work within
+the parameters of section 7.</p></li>
+<li><p>Lay the groundwork for a plugin infrastructure in GCC.  For a while
+now, the GCC developers have considered adding a plugin framework to
+the compiler.  This would make it easier for others to contribute to
+the project, and accelerate the development of new compilation
+techniques for GCC.  However, there have also been concerns that
+unscrupulous developers could write plugins that called out to
+proprietary software to transform the compiled code&mdash;effectively
+creating proprietary extensions to GCC and defating the purpose of
+the GPL.  The updated exception prevents such abuse, enabling the
+GCC team to look forward to plugin developments.</p></li>
+<li><p>Make exceptions throughout the GCC code base consistent.  Over the
+years, as new files were added to GCC that needed to carry this
+license exception, we reviewed and updated the language to help
+clarify it and address new concerns.  As a result, there are now
+many different exception texts in GCC that provide the same basic
+permissions.  Now all of those files will be able to use the single
+new exception text that we've prepared, making it easier to perform
+legal reviews on the code.</p></li>
+</ul>
+
+<p>As with GPLv3, we worked hard to listen to various users' concerns
+while we drafted this, and address them appropriately.  All told, we
+have spent more than a year on this process.  The Free Software
+Foundation and the GCC Steering Committee would like to thank Richard
+Fontana, Bradley Kuhn, and Karen Sandler at the Software Freedom Law
+Center for all their hard work and assistance with the exception.  The
+changes here will strengthen the GCC community, and we look forward to
+the compiler developments it will enable.</p>
+
+<p>Because GCC is such a crucial part of developers' lives, we're
+expecting lots of questions about these changes, and we want to make
+sure that they're addressed.  Below we've addressed specific concerns
+that we expect users will have.  If you have questions about the new
+exception that aren't mentioned here, please feel free to contact us
+at <a href="mailto:address@hidden";>address@hidden</a>.</p>
+
+<h3>How the Exception Works</h3>
+
+<p>The permission you need&mdash;to convey the object code from these GCC
+libraries under your own project's license&mdash;is primarily contained in
+section 2:</p>
+
+<blockquote>
+  <p>You have permission to propagate a work of Target Code formed by
+  combining the Runtime Library with Independent Modules, even if such
+  propagation would otherwise violate the terms of GPLv3, provided
+  that all Target Code was generated by Eligible Compilation
+  Processes.  You may then convey such a combination under terms of
+  your choice, consistent with the licensing of the Independent
+  Modules.</p>
+</blockquote>
+
+<p>This section uses many defined terms, and their specific meanings are
+integral to how the exception works.  This section looks at how these
+terms relate to common scenarios.</p>
+
+<p>When you write your software, it consists of a set of source code
+files.  Each file is an "Independent Module," as long as it doesn't
+contain any source from the GCC libraries.</p>
+
+<p>When you compile those source code files, they usually go through a
+series of steps: source code generation, preprocessing, compilation to
+low-level code, assembling, and linking.  Not all projects follow all
+these steps, depending on what language you're using and how it's
+written, but they'll always go in this order, and everyone using GCC
+will go through the process of compiling high-level code into some
+low-level language such as assembly code or Java bytecode.  This phase
+is when GCC combines or links your own code with code from the GCC
+libraries.  We call it the "Compilation Process."  The output you get
+from it is called "Target Code," as long as that output is not used as
+compiler intermediate representation, or to create such an
+intermediate representation.</p>
+
+<p>In order to take advantage of this permission, the Compilation Process
+that you use to create Target Code has to be "Eligible," which means
+that it does not involve both GCC and GPL-incompatible software.  It's
+important to remember that the Compilation Process starts when you
+feed <em>any</em> high-level code to GCC, and ends as soon as it generates
+anything that can be considered Target Code.  Because of that, as long
+as GCC isn't writing out intermediate representation, your Compilation
+Process can still be Eligible even if you use GCC in conjunction with
+GPL-incompatible assemblers, linkers, or high-level source generators:
+those programs aren't involved in the Compilation Process as it's
+defined here.  The only place you can't use GPL-incompatible software
+with GCC is when it's performing the core compilation work.</p>
+
+<p>So, if you use GCC, with or without GPL-compatible enhancements, that
+would be an Eligible Compilation Process.  If you only use
+GPL-incompatible compiler tools, that would be an Eligible Compilation
+Process as well.  (It's not uncommon for people who build software for
+GNU/Linux to link against the GCC libraries even if they're using a
+different compiler.)  However, if you used GCC in conjunction with
+GPL-incompatible software during the process of transforming
+high-level code to low-level code, that would <em>not</em> be an Eligible
+Compilation Process.  This would happen if, for example, you used GCC
+with a proprietary plugin.</p>
+
+<p>As long as you use an Eligible Compilation Process, then you have
+permission to take the Target Code that GCC generates and propagate it
+"under terms of your choice."</p>
+
+<p>If you did use GPL-incompatible software in conjunction with GCC
+during the Compilation Process, you would not be able to take
+advantage of this permission.  Since all of the object code that GCC
+generates is derived from these GPLed libraries, that means you would
+be required to follow the terms of the GPL when propagating any of
+that object code.  You could not use GCC to develop your own
+GPL-incompatible software.</p>
+
+<h3>Frequently Asked Questions</h3>
+
+<dl>
+<dt>I am using a standard release of GCC (such as one provided by the
+FSF, or with my operating system) to compile GPL-incompatible
+software.  How does this change affect me?</dt>
+
+<dd><p>It should not affect you at all.  Unless you've configured GCC to
+output intermediate representation&mdash;which is rare&mdash;the new exception 
is
+designed to ensure that you have no license obligations when you do
+this, just as the old exceptions were.</p></dd>
+
+<dt>Who does this change affect?</dt>
+
+<dd><p>Nobody who is currently using GCC should be affected by this change.
+The only changes in policy are meant to prevent developers from making
+certain modifications to GCC that <em>will</em> become feasible in the future.
+The FSF has been working closely with GCC developers to learn more about
+the many different ways people use GCC today, and ensure that they will all
+be able to continue those activities under the new exception.</p></dd>
+
+<dt>I use GCC in conjunction with proprietary preprocessors and/or source
+generators to compile my program.  Can I still take advantage of the
+exception?</dt>
+
+<dd><p>Yes.  The Compilation Process can start with any "code entirely
+represented in a high-level, non-intermediate language."  This
+includes code generated by a preprocessor or other proprietary
+software.  As such, the Compilation Process in this case does not
+involve any proprietary software; it qualifies as Eligible, and the
+exception is available for this program.</p></dd>
+
+<dt>I use GCC in conjunction with proprietary assemblers and/or linkers to
+compile my program.  Can I still take advantage of the exception?</dt>
+
+<dd><p>Yes.  The Compilation Process ends when the compiler generates
+Target Code, which includes output that is "suitable for input to an
+assembler, loader, linker and/or execution phase."  In other words,
+the Compilation Process in this case is over when you have assembly
+code or unlinked object files from GCC, and so it does not involve any
+proprietary software.  It qualifies as Eligible, and the exception is
+thus available for this program.</p></dd>
+
+<dt>I use GCC to compile parts of my program, and a proprietary
+compiler to compile other parts.  The pieces are combined afterward,
+during assembler or linking phases.  Can I still take advantage of the
+exception?</dt>
+
+<dd><p>Yes.  In this case, each Independent Module is turned into Target Code
+through an Eligible Compilation Process.  Even though different modules
+will go through different processes, the exception is still available
+for this program.</p></dd>
+
+<dt>Why is compiler intermediate representation excluded from the
+definition of "Target Code?"</dt>
+
+<dd><p>When we first considered adding a plugin infrastructure to GCC, we
+were deeply concerned about the possibility that someone would write a
+plugin that would merely save GCC's internal, low-level compilation
+data structures to disk.  With that done, other software would be able
+to optimize or otherwise improve that code without being directly
+connected to GCC.  It may have been difficult for us to argue that
+those programs should be subject to the GPL's copyleft, so we wanted
+to discourage these sorts of arrangements.</p>
+
+<p>We do that by excluding such output from the definition of Target
+Code.  Because of this, even if someone writes a plugin that saves
+this information to disk, any programs that change the structures
+before GCC writes out Target Code will be involved in the Compilation
+Process.  If that program is proprietary, the exception will not be
+available to any software compiled with it; the object code that GCC
+ultimately creates will have to be distributed under the terms of the
+GPL.</p></dd>
+
+<dt>Will Classpath use this new exception?</dt>
+
+<dd><p>Even though Classpath's current exception serves a similar purpose,
+we are not updating it at this time.  Because of recent developments
+in the free software Java community, the priorities for Classpath's
+licensing policies are different from other GCC libraries, and we are
+evaluating it separately.</p></dd>
+</div><!-- for id="content", starts in the include above -->
+<!--#include virtual="/server/footer.html" -->
+<div id="footer">
+
+<p>
+Please send FSF &amp; GNU inquiries to 
+<a href="mailto:address@hidden";><em>address@hidden</em></a>.
+There are also <a href="/contact/">other ways to contact</a> 
+the FSF.
+<br />
+Please send broken links and other corrections or suggestions to
+<a href="mailto:address@hidden";><em>address@hidden</em></a>.
+</p>
+
+<p>
+Please see the 
+<a href="/server/standards/README.translations.html">Translations
+README</a> for information on coordinating and submitting
+translations of this article.
+</p>
+
+<p>
+Copyright &copy; 2008 Free Software Foundation, Inc.,
+</p>
+<address>51 Franklin St, Fifth Floor, Boston, MA 02110, USA</address>
+<p>Verbatim copying and distribution of this entire article are
+permitted worldwide, without royalty, in any medium, provided this
+notice, and the copyright notice, are preserved.
+</p>
+
+<p>
+Updated:
+<!-- timestamp start -->
+: 2008/07/25 17:12:07 $
+<!-- timestamp end -->
+</p>
+</div>
+
+<div id="translations">
+<h4>Translations of this page</h4>
+
+<!-- Please keep this list alphabetical by language code. -->
+<!-- Comment what the language is for each type, i.e. de is German. -->
+<!-- Write the language name in its own language (Deutsch) in the text. -->
+<!-- If you add a new language here, please -->
+<!-- advise address@hidden and add it to -->
+<!--  - /home/www/html/server/standards/README.translations.html -->
+<!--  - one of the lists under the section "Translations Underway" -->
+<!--  - if there is a translation team, you also have to add an alias -->
+<!--  to mail.gnu.org:/com/mailer/aliases -->
+<!-- Please also check you have the language code right; see: -->
+<!-- http://www.loc.gov/standards/iso639-2/php/code_list.php -->
+<!-- If the 2-letter ISO 639-1 code is not available, -->
+<!-- use the 3-letter ISO 639-2. -->
+<!-- Please use W3C normative character entities. -->
+
+<ul class="translations-list">
+<!-- English -->
+<li><a href="/licenses/gcc-exception-faq.html">English</a>&nbsp;[en]</li>
+</ul>
+</div>
+</div>
+</body>
+</html>

Index: gcc-exception.html
===================================================================
RCS file: gcc-exception.html
diff -N gcc-exception.html
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ gcc-exception.html  27 Jan 2009 18:42:04 -0000      1.1
@@ -0,0 +1,81 @@
+<!--#include virtual="/server/header.html" -->
+
+<title>GCC Runtime Library Exception - GNU Project - Free Software Foundation 
(FSF)</title>
+
+<!--#include virtual="/server/banner.html" -->
+
+<h2>GCC Runtime Library Exception</h2>
+
+<p>A <a href="/licenses/gcc-exception-faq.html">rationale document and
+  FAQ</a> is available for this exception.</p>
+
+<hr style="clear: both;" />
+
+<!--#include virtual="/licenses/gcc-exception-body.html" -->
+</div>
+<!--#include virtual="/server/footer.html" -->
+ 
+
+<div id="footer">
+
+<p>
+Please send FSF &amp; GNU inquiries to 
+<a href="mailto:address@hidden";><em>address@hidden</em></a>.
+There are also <a href="/contact/">other ways to contact</a> 
+the FSF.
+<br />
+Please send broken links and other corrections or suggestions to
+<a href="mailto:address@hidden";><em>address@hidden</em></a>.
+</p>
+
+<p>
+Please see the 
+<a href="/server/standards/README.translations.html">Translations
+README</a> for information on coordinating and submitting
+translations of this article.
+</p>
+
+<p>
+Copyright notice above.</p>
+<address>51 Franklin Street, Fifth Floor, Boston, MA 02110, USA</address>
+
+<p>
+Verbatim copying and distribution of this entire article is
+permitted in any medium without royalty provided this notice is 
+preserved.
+</p>
+
+<p>
+Updated:
+<!-- timestamp start -->
+$Date: 2009/01/27 18:42:04 $
+<!-- timestamp end -->
+</p>
+</div>
+
+<div id="translations">
+<h4>Translations of this page</h4>
+
+<!-- Please keep this list alphabetical by language code. -->
+<!-- Comment what the language is for each type, i.e. de is German. -->
+<!-- Write the language name in its own language (Deutsch) in the text. -->
+<!-- If you add a new language here, please -->
+<!-- advise address@hidden and add it to -->
+<!--  - /home/www/html/server/standards/README.translations.html -->
+<!--  - one of the lists under the section "Translations Underway" -->
+<!--  - if there is a translation team, you also have to add an alias -->
+<!--  to mail.gnu.org:/com/mailer/aliases -->
+<!-- Please also check you have the language code right; see: -->
+<!-- http://www.loc.gov/standards/iso639-2/php/code_list.php -->
+<!-- If the 2-letter ISO 639-1 code is not available, -->
+<!-- use the 3-letter ISO 639-2. -->
+<!-- Please use W3C normative character entities. -->
+
+<ul class="translations-list">
+<!-- English -->
+<li><a href="/licenses/gcc-exception.html">English</a>&nbsp;[en]</li>
+</ul>
+</div>
+</div>
+</body>
+</html>




reply via email to

[Prev in Thread] Current Thread [Next in Thread]