This is the mail archive of the gcc@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: clang vs free software


[[[ To any NSA and FBI agents reading my email: please consider    ]]]
[[[ whether defending the US Constitution against all enemies,     ]]]
[[[ foreign or domestic, requires you to follow Snowden's example. ]]]

In the free software movement, we campaign for the freedom of the
users of computing.  The values of free software are fundamentally
different from the values of open source, which make "better code" the
ultimate goal.  If GCC were to change from a free compiler into a
platform for nonfree compilers, it would no longer serve the goal of
freedom very well.  Therefore, we had to take care to prevent that.

(See http://www.gnu.org/philosophy/open-source-misses-the-point.html
for more explanation of the difference between free software and open
source.  See also http://thebaffler.com/past/the_meme_hustler for
Evgeny Morozov's article on the same point.)

The Clang and LLVM developers reach different conclusions from ours
because they do not share our values and goals.  They object to the
measures we have taken to defend freedom because they see the
inconvenience of them and do not recognize (or don't care about) the
need for them.  I would guess they describe their work as "open
source" and do not talk about freedom.  They have been supported by
Apple, the company which hates our freedom so much that its app store
for the ithings _requires_ all apps to be nonfree. (*)

The nonfree compilers that are now based on LLVM prove that I was
right -- that the danger was real.  If I had "opened" up GCC code for
use in nonfree combinations, that would not have prevented a defeat;
rather, it would have caused that defeat to occur very soon.

For GCC to be replaced by another technically superior compiler that
defended freedom equally well would cause me some personal regret, but
I would rejoice for the community's advance.  The existence of LLVM is
a terrible setback for our community precisely because it is not
copylefted and can be used as the basis for nonfree compilers -- so
that all contribution to LLVM directly helps proprietary software as
much as it helps us.

The cause of the setback is the existence of a non-copylefted compiler
that therefore becomes the base for nonfree compilers.  The identity
of that compiler -- whether it be LLVM, GCC, or something else -- is a
secondary detail.  To make GCC available for such use would be
throwing in the towel.  If that enables GCC to "win", the victory
would be hollow, because it would not be a victory for what really
matters: users' freedom.

If you think we ought to "compromise" on this point, please see
http://www.gnu.org/philosophy/compromise.html.

The only code that helps us and not our adversaries is copylefted
code.  Free software released under a pushover license is available
for us to use, but available to our adversaries just as well.  If you
want your work to give freedom an advantage, use the leverage
available to you -- copyleft your code.  I invite those working on
major add-ons to LLVM to release them under GNU GPL
version-3-or-later.


If you want to argue for changing the goals of the GNU Project, the
proper place to do this is gnu-misc-discuss@gnu.org.  Please move this
discussion there.


* If a binary is made from published source code, but you can't
  install your binary of a modified version of that source code, the
  binary is proprietary even if the source code is free.  (See
  http://www.gnu.org/philosophy/free-sw.html.)  A binary in Apple's
  app store may be made from published free source code, but under
  Apple's rules and Apple's DRM, the binary can't be free.

-- 
Dr Richard Stallman
President, Free Software Foundation
51 Franklin St
Boston MA 02110
USA
www.fsf.org  www.gnu.org
Skype: No way! That's nonfree (freedom-denying) software.
  Use Ekiga or an ordinary phone call.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]