210 lines
11 KiB
Markdown
210 lines
11 KiB
Markdown
|
# FreeBSD, Clang and GCC: Copyleft vs. Community
|
||
|
|
||
|
A useful perspective explaining why [FreeBSD is moving away from GCC in
|
||
|
favor of Clang][0]; indeed, they are moving away from GPL-licensed software
|
||
|
in general. While this is [not a perspective that I personally agree
|
||
|
with][1], it is one that I will respect for the project. It is worth
|
||
|
understanding the opinions of those who disagree with you to better
|
||
|
understand and formulate your own perspective.
|
||
|
|
||
|
[0]: http://unix.stackexchange.com/a/49970
|
||
|
[1]: /2012/11/vlcs-move-to-lgpl
|
||
|
|
||
|
But I am still a free software activist.
|
||
|
|
||
|
<!-- more -->
|
||
|
|
||
|
According to the [FreeBSD FAQ][2]:
|
||
|
|
||
|
> The goal of the FreeBSD Project is to provide a stable and fast general
|
||
|
> purpose operating system that may be used for any purpose without strings
|
||
|
> attached.
|
||
|
|
||
|
As is mentioned in [the aforementioned article][0], the BSD community does not
|
||
|
hold the same opinions on what constitutes "without strings
|
||
|
attached"---the BSD community [considers the restriction on the user's
|
||
|
right to make proprietary use of the software to be a "string"][2],
|
||
|
whereas the free software community under [RMS][3] believes that [the
|
||
|
ability to make a free program proprietary is unjust][4]:
|
||
|
|
||
|
> Making a program proprietary is an exercise of power. Copyright law today
|
||
|
> grants software developers that power, so they and only they choose the
|
||
|
> rules to impose on everyone else—a relatively small number of people make
|
||
|
> the basic software decisions for all users, typically by denying their
|
||
|
> freedom. When users lack the freedoms that define free software, they
|
||
|
> can't tell what the software is doing, can't check for back doors, can't
|
||
|
> monitor possible viruses and worms, can't find out what personal
|
||
|
> information is being reported (or stop the reports, even if they do find
|
||
|
> out). If it breaks, they can't fix it; they have to wait for the developer
|
||
|
> to exercise its power to do so. If it simply isn't quite what they need,
|
||
|
> they are stuck with it. They can't help each other improve it.
|
||
|
|
||
|
The [Modified BSD License][5] is a GPL-compatible Free Software
|
||
|
license---that is, software licensed under the Modified BSD license meets
|
||
|
the requirements of the [Free Software Definition][6]. The additional
|
||
|
"string" that the BSD community is referring to is the concept of
|
||
|
[copyleft][7]---Richard Stallman's copyright hack and one of his most
|
||
|
substantial contributions to free software and free society. To put it into
|
||
|
the [words of the FSF][7]:
|
||
|
|
||
|
> Copyleft is a general method for making a program (or other work) free,
|
||
|
> and requiring all modified and extended versions of the program to be free
|
||
|
> as well.
|
||
|
|
||
|
Critics often adopt the term ["viral" in place of "copyleft"][8] because
|
||
|
of the requirement that all derivatives must contain the same copyleft
|
||
|
terms---the derivative must itself be Free Software, perpetually (until, of
|
||
|
course, the copyright term expires and it becomes part of the public domain,
|
||
|
[if such a thing will ever happen at this rate][9]). In the case of the
|
||
|
Modified BSD license---being a more permissive license that is non-copyleft
|
||
|
and thus allows proprietary derivatives---derivative works that include both
|
||
|
BSD- and GPL-licensed code essentially consume the [Modified BSD license's
|
||
|
terms][10], which are a subset of the [GPL's][11]. Of course, this is not
|
||
|
pursuant to [FreeBSD's goals][2] and so they consider this to be a bad
|
||
|
thing: There are "strings attached".
|
||
|
|
||
|
This is more demonstrative of the ["open source" philosophy than that of
|
||
|
"Free Software"][12] (yes, notice the bias in my capitalization of these
|
||
|
terms).
|
||
|
|
||
|
[Copyleft is important][7] because it ensures that all users will forever
|
||
|
have the [four fundamental freedoms associated with Free Software][6]. The
|
||
|
GPL incorporates copyleft; BSD licenses do not. Consider why this is a
|
||
|
problem: Imagine some software Foo licensed under [the Modified BSD
|
||
|
license][10]. Foo is free software; it is licensed under a [free software
|
||
|
license (Modified BSD)][5]. Now consider that someone makes a fork---a
|
||
|
derivative---of Foo, which we will call "Foobar". Since [the Modified BSD
|
||
|
license is not copyleft][10], the author of Foobar decides that he or she
|
||
|
does not wish to release its source code; this is perfectly compliant with
|
||
|
the Modified BSD license, as it does not require that source code be
|
||
|
distributed with a binary (it only requires---via its [second
|
||
|
clause][10]---that the copyright notice, list of conditions and disclaimer be
|
||
|
provided).
|
||
|
|
||
|
The author has just taken Foo and made it proprietary.
|
||
|
|
||
|
The FreeBSD community is okay with this; [the free software community is
|
||
|
not][4]. There is a distinction between these two parties: When critics of
|
||
|
copyleft state that they believe the GPL is "less free" than more
|
||
|
permissive licenses such as the BSD licenses, they are taking into
|
||
|
consideration the freedoms of developers and distributors; the GPL, on the
|
||
|
other hand, explicirly *restricts* these parties' rights in order to protect
|
||
|
the *users* because those parties are precisely those that seek to *restrict
|
||
|
the users' freedoms*; we cannot provide such freedoms to developers and
|
||
|
distributors without sacrificing the rights of the vulnerable users who
|
||
|
generally do not have the skills to protect themselves from being taken
|
||
|
advantage of.[^13] Free software advocates have exclusive, unwaivering
|
||
|
loyalty to users.
|
||
|
|
||
|
As an example of the friction between the two communities, consider a
|
||
|
concept that has been termed ["tivoization"][14]:
|
||
|
|
||
|
> Tivoization means certain “appliances” (which have computers inside)
|
||
|
> contain GPL-covered software that you can't effectively change, because
|
||
|
> the appliance shuts down if it detects modified software. The usual
|
||
|
> motive for tivoization is that the software has features the manufacturer
|
||
|
> knows people will want to change, and aims to stop people from changing
|
||
|
> them. The manufacturers of these computers take advantage of the freedom
|
||
|
> that free software provides, but they don't let you do likewise.
|
||
|
|
||
|
This [anti-feature][15] is a type of [Digital Restrictions Management
|
||
|
(DRM)][16] that exposes a [loophole in the GPL that was closed in
|
||
|
Section 3 of the GPLv3][14], which [requires that][11]:
|
||
|
|
||
|
> When you convey a covered work, you waive any legal power to forbid
|
||
|
> circumvention of technological measures to the extent such circumvention
|
||
|
> is effected by exercising rights under this License with respect to the
|
||
|
> covered work, and you disclaim any intention to limit operation or
|
||
|
> modification of the work as a means of enforcing, against the work's
|
||
|
> users, your or third parties' legal rights to forbid circumvention of
|
||
|
> technological measures.
|
||
|
|
||
|
Unfortunately, not everyone has agreed with this move. A number of
|
||
|
[developers of the kernel Linux expressed their opposition of GPLv3][17]. In
|
||
|
response to the aforementioned GPLv3 provision, they stated:
|
||
|
|
||
|
> While we find the use of DRM by media companies in their attempts to reach
|
||
|
> into user owned devices to control content deeply disturbing, our belief
|
||
|
> in the essential freedoms of section 3 forbids us from ever accepting any
|
||
|
> licence which contains end use restrictions. The existence of DRM abuse is
|
||
|
> no excuse for curtailing freedoms.
|
||
|
|
||
|
Linus Torvalds---the original author of the kernel Linux---also [expressed
|
||
|
his distaste toward the GPLv3][18]; the kernel is today still licensed under
|
||
|
the GPLv2.
|
||
|
|
||
|
[The BSD camp has similar objections][19]:
|
||
|
|
||
|
> Appliance vendors in particular have the most to lose if the large body of
|
||
|
> software currently licensed under GPLv2 today migrates to the new license.
|
||
|
> They will no longer have the freedom to use GPLv3 software and restrict
|
||
|
> modification of the software installed on their hardware. High support
|
||
|
> costs ("I modified the web server on my Widget 2000 and it stopped
|
||
|
> running...") and being unable to guarantee adherence to specifications in
|
||
|
> order to gain licensing (e.g. FCC spectrum use, Cable TV and media DRM
|
||
|
> requirements) are only two of a growing list of issues for these
|
||
|
> users. --Justin Gibbs, VP of The FreeBSD Foundation
|
||
|
|
||
|
My thoughts while reading the above where echoed by Gibbs further on in his
|
||
|
statement: "[T]he stark difference between the BSD licensing philosophy and
|
||
|
that of the Free Software Foundation are only too clear." For the FreeBSD
|
||
|
community, this is a very serious issue and their argument is certainly a
|
||
|
legitimate concern on the surface. However, it is an argument that the Free
|
||
|
Software community would do well to reject: Why would we wish to sacrifice
|
||
|
users' freedoms for any reason, let alone these fairly absurd ones. In
|
||
|
particular, a support contract could dictate that only unmodified software
|
||
|
will be provided assistance and even mandate that the hardware indicate
|
||
|
changes in software: like breaking the "void" sticker when opening a
|
||
|
hardware component. Moreover, how frequently would such a situation
|
||
|
actually happen relative to their entire customer base? My guess is: fairly
|
||
|
infrequently. The second issue is a more complicated one, as I am not as
|
||
|
familiar on such topics, but a manufacturer can still assert that the
|
||
|
software that it provides with its devices is compliant. If the compliance
|
||
|
process forbids any possibility of brining the software into
|
||
|
non-compliance---that is, allowing the user to modify the software---then
|
||
|
the hardware manufacturer can choose to not use free software (and free
|
||
|
software advocates will subsequently reject it until standards bodies grow
|
||
|
up).
|
||
|
|
||
|
As I mentioned at the beginning of this article: this is a view that I will
|
||
|
respect for the project. I disagree with it, but FreeBSD is still free
|
||
|
software and we would do well not to discriminate against it simply because
|
||
|
someone else may decide to bastardize it and betray their users by making it
|
||
|
proprietary or providing [shackles][16]. However, provided the licensing;
|
||
|
option for your own software, you should choose the GPL.
|
||
|
|
||
|
**Colophon:** The title of this article is a play on [RMS' "Copyright vs.
|
||
|
Communty"][20], which is a title to a speech he frequently provides
|
||
|
worldwide. His speech covers how copyright works against the interests of
|
||
|
the community; here, BSD advocates aruge that [copyleft][7] works against
|
||
|
the interests of *their* community and their users; I figured that I would
|
||
|
snag this title as a free software advocate before someone else opposing
|
||
|
copyleft did.
|
||
|
|
||
|
[2]: http://www.freebsd.org/doc/faq/introduction.html#FreeBSD-goals
|
||
|
[3]: http://en.wikipedia.org/wiki/Richard_Stallman
|
||
|
[4]: http://www.gnu.org/philosophy/freedom-or-power.html
|
||
|
[5]: http://www.gnu.org/licenses/license-list.html#ModifiedBSD
|
||
|
[6]: http://www.gnu.org/philosophy/free-sw.html
|
||
|
[7]: http://www.gnu.org/copyleft/
|
||
|
[8]: http://en.wikipedia.org/wiki/Copyleft#Viral_licensing
|
||
|
[9]: http://www.gnu.org/philosophy/misinterpreting-copyright.html
|
||
|
[10]: http://en.wikipedia.org/wiki/BSD_licenses
|
||
|
[11]: http://www.gnu.org/licenses/gpl.html
|
||
|
[12]: http://www.gnu.org/philosophy/open-source-misses-the-point.html
|
||
|
|
||
|
[^13]: Technically, the GPL exercises restrictions only on distributors; a
|
||
|
developer can integrate GPL'd code into their proprietary software so
|
||
|
long as they do not distribute it [(as defined in the GPL)][11]. However,
|
||
|
developers often have to cater to distributors, since software will
|
||
|
generally be distributed; if it is not, then it is not relevant to this
|
||
|
discussion.
|
||
|
|
||
|
[14]: http://www.gnu.org/licenses/rms-why-gplv3.html
|
||
|
[15]: http://www.fsf.org/blogs/community/antifeatures
|
||
|
[16]: http://www.defectivebydesign.org/what_is_drm_digital_restrictions_management
|
||
|
[17]: http://lwn.net/Articles/200422/
|
||
|
[18]: http://en.wikipedia.org/wiki/Linux_kernel
|
||
|
[19]: http://www.freebsdfoundation.org/press/2007Aug-newsletter.shtml
|
||
|
[20]: http://www.gnu.org/philosophy/copyright-versus-community.html
|