Jump to content
Main menu
Main menu
move to sidebar
hide
Navigation
Main page
Recent changes
Random page
Help about MediaWiki
My KB
Search
Search
English
Log in
Personal tools
Log in
Export translations
Translate
English
Language statistics
Message group statistics
Export
Tools
Tools
move to sidebar
hide
Actions
Language statistics
Message group statistics
Export
General
Special pages
Printable version
Settings
Group
Essays:TNT: free tech books
Essays:Why are GPL-licensed components removed from the FreeBSD base system
Essays:Why the FSF does not consider Debian as a free distribution
Main Page
Language
aa - Qafár af
aae - Arbërisht
ab - аԥсшәа
abs - bahasa ambon
ace - Acèh
acm - عراقي
ady - адыгабзэ
ady-cyrl - адыгабзэ
aeb - تونسي / Tûnsî
aeb-arab - تونسي
aeb-latn - Tûnsî
af - Afrikaans
aln - Gegë
alt - алтай тил
am - አማርኛ
ami - Pangcah
an - aragonés
ang - Ænglisc
ann - Obolo
anp - अंगिका
ar - العربية
arc - ܐܪܡܝܐ
arn - mapudungun
arq - جازايرية
ary - الدارجة
arz - مصرى
as - অসমীয়া
ase - American sign language
ast - asturianu
atj - Atikamekw
av - авар
avk - Kotava
awa - अवधी
ay - Aymar aru
az - azərbaycanca
azb - تۆرکجه
ba - башҡортса
ban - Basa Bali
ban-bali - ᬩᬲᬩᬮᬶ
bar - Boarisch
bbc - Batak Toba
bbc-latn - Batak Toba
bcc - جهلسری بلوچی
bci - wawle
bcl - Bikol Central
bdr - Bajau Sama
be - беларуская
be-tarask - беларуская (тарашкевіца)
bew - Betawi
bg - български
bgn - روچ کپتین بلوچی
bh - भोजपुरी
bho - भोजपुरी
bi - Bislama
bjn - Banjar
blk - ပအိုဝ်ႏဘာႏသာႏ
bm - bamanankan
bn - বাংলা
bo - བོད་ཡིག
bpy - বিষ্ণুপ্রিয়া মণিপুরী
bqi - بختیاری
br - brezhoneg
brh - Bráhuí
bs - bosanski
btm - Batak Mandailing
bto - Iriga Bicolano
bug - Basa Ugi
bxr - буряад
ca - català
cbk-zam - Chavacano de Zamboanga
cdo - 閩東語 / Mìng-dĕ̤ng-ngṳ̄
ce - нохчийн
ceb - Cebuano
ch - Chamoru
chn - chinuk wawa
cho - Chahta anumpa
chr - ᏣᎳᎩ
chy - Tsetsêhestâhese
ckb - کوردی
co - corsu
cps - Capiceño
cpx - 莆仙語 / Pó-sing-gṳ̂
cpx-hans - 莆仙语(简体)
cpx-hant - 莆仙語(繁體)
cpx-latn - Pó-sing-gṳ̂ (Báⁿ-uā-ci̍)
cr - Nēhiyawēwin / ᓀᐦᐃᔭᐍᐏᐣ
crh - qırımtatarca
crh-cyrl - къырымтатарджа (Кирилл)
crh-latn - qırımtatarca (Latin)
crh-ro - tatarşa
cs - čeština
csb - kaszëbsczi
cu - словѣньскъ / ⰔⰎⰑⰂⰡⰐⰠⰔⰍⰟ
cv - чӑвашла
cy - Cymraeg
da - dansk
dag - dagbanli
de - Deutsch
de-at - Österreichisches Deutsch
de-ch - Schweizer Hochdeutsch
de-formal - Deutsch (Sie-Form)
dga - Dagaare
din - Thuɔŋjäŋ
diq - Zazaki
dsb - dolnoserbski
dtp - Dusun Bundu-liwan
dty - डोटेली
dv - ދިވެހިބަސް
dz - ཇོང་ཁ
ee - eʋegbe
efi - Efịk
egl - Emiliàn
el - Ελληνικά
eml - emiliàn e rumagnòl
en - English
en-ca - Canadian English
en-gb - British English
eo - Esperanto
es - español
es-419 - español de América Latina
es-formal - español (formal)
et - eesti
eu - euskara
ext - estremeñu
fa - فارسی
fat - mfantse
ff - Fulfulde
fi - suomi
fit - meänkieli
fj - Na Vosa Vakaviti
fo - føroyskt
fon - fɔ̀ngbè
fr - français
frc - français cadien
frp - arpetan
frr - Nordfriisk
fur - furlan
fy - Frysk
ga - Gaeilge
gaa - Ga
gag - Gagauz
gan - 贛語
gan-hans - 赣语(简体)
gan-hant - 贛語(繁體)
gcf - kréyòl Gwadloup
gcr - kriyòl gwiyannen
gd - Gàidhlig
gl - galego
gld - на̄ни
glk - گیلکی
gn - Avañe'ẽ
gom - गोंयची कोंकणी / Gõychi Konknni
gom-deva - गोंयची कोंकणी
gom-latn - Gõychi Konknni
gor - Bahasa Hulontalo
got - 𐌲𐌿𐍄𐌹𐍃𐌺
gpe - Ghanaian Pidgin
grc - Ἀρχαία ἑλληνικὴ
gsw - Alemannisch
gu - ગુજરાતી
guc - wayuunaiki
gur - farefare
guw - gungbe
gv - Gaelg
ha - Hausa
hak - 客家語/Hak-kâ-ngî
haw - Hawaiʻi
he - עברית
hi - हिन्दी
hif - Fiji Hindi
hif-latn - Fiji Hindi
hil - Ilonggo
hno - ہندکو
ho - Hiri Motu
hr - hrvatski
hrx - Hunsrik
hsb - hornjoserbsce
hsn - 湘语
ht - Kreyòl ayisyen
hu - magyar
hu-formal - magyar (formal)
hy - հայերեն
hyw - Արեւմտահայերէն
hz - Otsiherero
ia - interlingua
ibb - ibibio
id - Bahasa Indonesia
ie - Interlingue
ig - Igbo
igl - Igala
ii - ꆇꉙ
ik - Iñupiatun
ike-cans - ᐃᓄᒃᑎᑐᑦ
ike-latn - inuktitut
ilo - Ilokano
inh - гӀалгӀай
io - Ido
is - íslenska
it - italiano
iu - ᐃᓄᒃᑎᑐᑦ / inuktitut
ja - 日本語
jam - Patois
jbo - la .lojban.
jut - jysk
jv - Jawa
ka - ქართული
kaa - Qaraqalpaqsha
kab - Taqbaylit
kai - Karai-karai
kbd - адыгэбзэ
kbd-cyrl - адыгэбзэ
kbp - Kabɩyɛ
kcg - Tyap
kea - kabuverdianu
kg - Kongo
kge - Basa Kumoring
khw - کھوار
ki - Gĩkũyũ
kiu - Kırmancki
kj - Kwanyama
kjh - хакас
kjp - ဖၠုံလိက်
kk - қазақша
kk-arab - قازاقشا (تٴوتە)
kk-cn - قازاقشا (جۇنگو)
kk-cyrl - қазақша (кирил)
kk-kz - қазақша (Қазақстан)
kk-latn - qazaqşa (latın)
kk-tr - qazaqşa (Türkïya)
kl - kalaallisut
km - ភាសាខ្មែរ
kn - ಕನ್ನಡ
ko - 한국어
ko-kp - 조선말
koi - перем коми
kr - kanuri
krc - къарачай-малкъар
kri - Krio
krj - Kinaray-a
krl - karjal
ks - कॉशुर / کٲشُر
ks-arab - کٲشُر
ks-deva - कॉशुर
ksh - Ripoarisch
ksw - စှီၤ
ku - kurdî
ku-arab - كوردي (عەرەبی)
ku-latn - kurdî (latînî)
kum - къумукъ
kus - Kʋsaal
kv - коми
kw - kernowek
ky - кыргызча
la - Latina
lad - Ladino
lb - Lëtzebuergesch
lbe - лакку
lez - лезги
lfn - Lingua Franca Nova
lg - Luganda
li - Limburgs
lij - Ligure
liv - Līvõ kēļ
lki - لەکی
lld - Ladin
lmo - lombard
ln - lingála
lo - ລາວ
loz - Silozi
lrc - لۊری شومالی
lt - lietuvių
ltg - latgaļu
lus - Mizo ţawng
luz - لئری دوٙمینی
lv - latviešu
lzh - 文言
lzz - Lazuri
mad - Madhurâ
mag - मगही
mai - मैथिली
map-bms - Basa Banyumasan
mdf - мокшень
mg - Malagasy
mh - Ebon
mhr - олык марий
mi - Māori
min - Minangkabau
mk - македонски
ml - മലയാളം
mn - монгол
mnc - ᠮᠠᠨᠵᡠ ᡤᡳᠰᡠᠨ
mnc-latn - manju gisun
mnc-mong - ᠮᠠᠨᠵᡠ ᡤᡳᠰᡠᠨ
mni - ꯃꯤꯇꯩ ꯂꯣꯟ
mnw - ဘာသာမန်
mo - молдовеняскэ
mos - moore
mr - मराठी
mrh - Mara
mrj - кырык мары
ms - Bahasa Melayu
ms-arab - بهاس ملايو
mt - Malti
mus - Mvskoke
mwl - Mirandés
my - မြန်မာဘာသာ
myv - эрзянь
mzn - مازِرونی
na - Dorerin Naoero
nah - Nāhuatl
nan - Bân-lâm-gú
nap - Napulitano
nb - norsk bokmål
nds - Plattdüütsch
nds-nl - Nedersaksies
ne - नेपाली
new - नेपाल भाषा
ng - Oshiwambo
nia - Li Niha
nit - కొలామి
niu - Niuē
nl - Nederlands
nl-informal - Nederlands (informeel)
nmz - nawdm
nn - norsk nynorsk
no - norsk
nod - ᨣᩤᩴᨾᩮᩬᩥᨦ
nog - ногайша
nov - Novial
nqo - ߒߞߏ
nrm - Nouormand
nso - Sesotho sa Leboa
nv - Diné bizaad
ny - Chi-Chewa
nyn - runyankore
nyo - Orunyoro
nys - Nyunga
oc - occitan
ojb - Ojibwemowin
olo - livvinkarjala
om - Oromoo
or - ଓଡ଼ିଆ
os - ирон
pa - ਪੰਜਾਬੀ
pag - Pangasinan
pam - Kapampangan
pap - Papiamentu
pcd - Picard
pcm - Naijá
pdc - Deitsch
pdt - Plautdietsch
pfl - Pälzisch
pi - पालि
pih - Norfuk / Pitkern
pl - polski
pms - Piemontèis
pnb - پنجابی
pnt - Ποντιακά
prg - prūsiskan
ps - پښتو
pt - português
pt-br - português do Brasil
pwn - pinayuanan
qu - Runa Simi
qug - Runa shimi
rgn - Rumagnôl
rif - Tarifit
rki - ရခိုင်
rm - rumantsch
rmc - romaňi čhib
rmy - romani čhib
rn - ikirundi
ro - română
roa-tara - tarandíne
rsk - руски
ru - русский
rue - русиньскый
rup - armãneashti
ruq - Vlăheşte
ruq-cyrl - Влахесте
ruq-latn - Vlăheşte
rut - мыхаӀбишды
rw - Ikinyarwanda
ryu - うちなーぐち
sa - संस्कृतम्
sah - саха тыла
sat - ᱥᱟᱱᱛᱟᱲᱤ
sc - sardu
scn - sicilianu
sco - Scots
sd - سنڌي
sdc - Sassaresu
sdh - کوردی خوارگ
se - davvisámegiella
se-fi - davvisámegiella (Suoma bealde)
se-no - davvisámegiella (Norgga bealde)
se-se - davvisámegiella (Ruoŧa bealde)
sei - Cmique Itom
ses - Koyraboro Senni
sg - Sängö
sgs - žemaitėška
sh - srpskohrvatski / српскохрватски
sh-cyrl - српскохрватски (ћирилица)
sh-latn - srpskohrvatski (latinica)
shi - Taclḥit
shi-latn - Taclḥit
shi-tfng - ⵜⴰⵛⵍⵃⵉⵜ
shn - ၽႃႇသႃႇတႆး
shy - tacawit
shy-latn - tacawit
si - සිංහල
simple - Simple English
sjd - кӣллт са̄мь кӣлл
sje - bidumsámegiella
sk - slovenčina
skr - سرائیکی
skr-arab - سرائیکی
sl - slovenščina
sli - Schläsch
sm - Gagana Samoa
sma - åarjelsaemien
smn - anarâškielâ
sms - nuõrttsääʹmǩiõll
sn - chiShona
so - Soomaaliga
sq - shqip
sr - српски / srpski
sr-ec - српски (ћирилица)
sr-el - srpski (latinica)
srn - Sranantongo
sro - sardu campidanesu
ss - SiSwati
st - Sesotho
stq - Seeltersk
sty - себертатар
su - Sunda
sv - svenska
sw - Kiswahili
syl - ꠍꠤꠟꠐꠤ
szl - ślůnski
szy - Sakizaya
ta - தமிழ்
tay - Tayal
tcy - ತುಳು
tdd - ᥖᥭᥰᥖᥬᥳᥑᥨᥒᥰ
te - తెలుగు
tet - tetun
tg - тоҷикӣ
tg-cyrl - тоҷикӣ
tg-latn - tojikī
th - ไทย
ti - ትግርኛ
tk - Türkmençe
tl - Tagalog
tly - tolışi
tly-cyrl - толыши
tn - Setswana
to - lea faka-Tonga
tok - toki pona
tpi - Tok Pisin
tr - Türkçe
tru - Ṫuroyo
trv - Seediq
ts - Xitsonga
tt - татарча / tatarça
tt-cyrl - татарча
tt-latn - tatarça
ttj - Orutooro
tum - chiTumbuka
tw - Twi
ty - reo tahiti
tyv - тыва дыл
tzm - ⵜⴰⵎⴰⵣⵉⵖⵜ
udm - удмурт
ug - ئۇيغۇرچە / Uyghurche
ug-arab - ئۇيغۇرچە
ug-latn - Uyghurche
uk - українська
ur - اردو
uz - oʻzbekcha / ўзбекча
uz-cyrl - ўзбекча
uz-latn - oʻzbekcha
ve - Tshivenda
vec - vèneto
vep - vepsän kel’
vi - Tiếng Việt
vls - West-Vlams
vmf - Mainfränkisch
vmw - emakhuwa
vo - Volapük
vot - Vaďďa
vro - võro
wa - walon
wal - wolaytta
war - Winaray
wls - Fakaʻuvea
wo - Wolof
wuu - 吴语
wuu-hans - 吴语(简体)
wuu-hant - 吳語(正體)
xal - хальмг
xh - isiXhosa
xmf - მარგალური
xsy - saisiyat
yi - ייִדיש
yo - Yorùbá
yrl - Nhẽẽgatú
yue - 粵語
yue-hans - 粵语(简体)
yue-hant - 粵語(繁體)
za - Vahcuengh
zea - Zeêuws
zgh - ⵜⴰⵎⴰⵣⵉⵖⵜ ⵜⴰⵏⴰⵡⴰⵢⵜ
zh - 中文
zh-cn - 中文(中国大陆)
zh-hans - 中文(简体)
zh-hant - 中文(繁體)
zh-hk - 中文(香港)
zh-mo - 中文(澳門)
zh-my - 中文(马来西亚)
zh-sg - 中文(新加坡)
zh-tw - 中文(臺灣)
zu - isiZulu
Format
Export for off-line translation
Export in native format
Export in CSV format
Fetch
<languages /> '''Author''': Evgeny Golyshev I recently studied the FreeBSD operating system development [https://freebsd.org/news/status/report-2020-10-2020-12/ report] for the fourth quarter of 2020, which reminded me GPL-licensed components continue being removed from the FreeBSD base system. During the reporting period, the GDB debugger was removed and, a little earlier, so was the GCC compiler suite. These are a couple of the most striking examples of the whole bunch. In this article, I would like to tell you why this removal is happening. Whether you are a FreeBSD user or not, I believe that a clear understanding of the challenges faced by the developers of one of the largest software development projects is very important for you, especially if you are also a developer. It’s just interesting, after all. So, to answer the question of why FreeBSD developers clean the base systems of components distributed under the GPL, you need to understand: * what free software and the GPL license are; * what copyleft licenses are and how they differ from permissive licenses; * what tivoization is. But first things first. == Free software == Software is considered free if it gives you [https://gnu.org/philosophy/free-sw.html#four-freedoms four basic freedoms]: # run the program as you wish, for any purpose; # study how the program works, and change it so it does your computing as you wish; # redistribute copies so you can help others; # distribute copies of your modified versions to others. [[File:Richard-stallman.jpg|thumb|Richard Stallman]] These four basic freedoms were formulated by the hacker Richard Stallman back in 1986. Stallman began his career as a programmer at the Artificial Intelligence Laboratory of the Massachusetts Institute of Technology (MIT). In his line of work, he repeatedly encountered the fact that the lack of the ability to fix errors in someone else's software, which you have to use for one reason or another, greatly slows you down in solving your issues. One such episode was well described in the book "[https://static.fsf.org/nosvn/faif-2.0.pdf Free as in Freedom (2.0): Richard Stallman's Crusade for Free Software]". The very first chapter of this book tells about the Xerox printer – an unearthly piece of tech that was donated to the laboratory. This printer surpassed its predecessor in both speed and print quality, but after a while, it became known to jam paper. Stallman wanted to fix a printer flaw at the level of the firmware that controlled the device but failed to find its source code. When he asked for the source code, he was simply turned down. It may seem okay now, but at that time software was just beginning to be elevated by corporations to the status of intellectual property which wasn’t handed out to everyone. [[File:Eben-moglen.jpg|thumb|Eben Moglen]] Stallman later recalled a conversation with a person who refused him the source code: "''If he had refused me his cooperation for personal reasons, it would not have raised any larger issue. I might have considered him a jerk, but no more. The fact that his refusal was impersonal, that he had promised in advance to be uncooperative, not just to me but to anyone whatsoever, made this a larger issue.''" So, at one point, Stallman became obsessed with software freedom, gave up everything, and even began work on creating a free operating system. The project was named GNU. He started his operating system with a technology basis – development tools such as a code editor, compiler, and debugger – without which building a free operating system would have been unthinkable. But when Stallman met Eben Moglen, a law professor at Columbia University, he managed to create a legal basis for his brainchild. Moglen helped Stallman reflect his software ideals in the treaty that still exists between software developers and users. This agreement is called the GNU General Public License, or GPL for short. == Copyleft licenses == It was important for Stallman not only to reflect in the license the four basic freedoms mentioned earlier in the article but also to ensure that once it became publicly available, the code could not be taken away and appropriated. Thus, if someone takes software that is covered under the GPL as a basis and builds something new from it, or just fixes bugs, the derivative work must also be distributed under the GPL. So, once released under the GPL, a piece of code can no longer be closed. Stallman called this legal mechanism copyleft, i.e. copyright turned inside out. The first versions of the GPL came out in the late 80s and early 90s and became very popular. == Permissive licenses == Although the industry embraced legal innovation, disagreements began to emerge among the proponents of free software – not everyone shared Stallman's idea of communal ownership that the GPL helped create. The obligation to return the code to the community on the same terms seemed onerous to them. No wonder, that one of the most vivid examples of such a disagreement occurred with the BSD operating system. (Let me remind you that it was a derivative of the original UNIX and developed at the University of California, Berkeley. BSD did not yet have the prefix "Free", "Open", or "Net"). Stallman wanted the code of this operating system to be distributed under the terms of the GPL, but one of the key BSD developers Keith Bostic did not share those very ideas of communal ownership. As a result, when Bostic made the BSD networking code free in 1989, he chose a license for it, which did not restrict anyone in anything and even allowed anyone to close the source. His only condition at that time was to indicate the name of the university in the description of derivative works. Thus, what one person saw as evil, another person saw as an interesting opportunity. By the way, Berkeley also called their license BSD. (Today it is extremely popular in the free software community.) The GPL and BSD have been the inspiration for a plethora of free software licenses that solve various business tasks and whatnot. Licenses from the GPL camp came to be called copyleft licenses. For example, on the Wikipedia page for a particular license, you can even see if it is copyleft or not. If it is, then it, like the GPL, prevents the source code of derivative works from being closed. Licenses from the BSD camp, in turn, began to be called permissive and, unlike licenses from the GPL camp, they were not against the closure of the code of derivative works. == *** == From the early 1990s to the mid-2000s, the industry's attention was focused on free software. In 1991, the 2nd version of the GPL (also known as GPLv2) came out, which became the symbol of this movement. There were heated debates. Some corporations saw the GPL as a threat, while others began to accept the rules of the game. Obviously, corporations have accepted (and continue to accept) these rules because it is beneficial, but it's not widely understood how much. Free software is the foundation for many software products, but it doesn't come out of nowhere – a meritocratic community of developers is behind it. They generate ideas, produce software, write documentation for it, and train staff. The latter is most often neglected. Corporations were given the opportunity not only to freely take a solid foundation embodied in a piece of code for their products but also to hire engineers who did not need to immerse in this code, which, in turn, made it possible to benefit from their work right at the start. Thus, successful examples of companies whose business was 100% based on the development of free software began to appear. Among them is Red Hat, still afloat and making billions, and long-deceased MySQL AB. The use of free software by corporations, and even distributed under the terms of the GPL, perfectly demonstrated the viability of Stallman's ideas, formulated back in the 80s. Now it became obvious that the development of free software (whatever camp it belongs to) is not up to ascetics who have doomed themselves to unpaid labor for the good of society. Here it is necessary to emphasize that until the mid-2000s, the BSD camp had neighborly relations with the GPL. Indeed, the basic system of FreeBSD got along with software distributed under both BSD (and other permissive) licenses and under the GPL. But everything changed a lot by the end of the 2000s when Stallman decided to fight a new enemy. == Tivoization == The essence of tivoization is that a device whose firmware is based on components covered by GPLv2 or another copyleft license does not allow its owner to run modified or alternative firmware (i.e. re-flashing the device). The term was coined by Stallman himself and came from the name of the TiVo company, which was one of the first to impose this restriction on its products. It is worth noting that GPLv2 never forbade tivoization since Stallman and Moglen could not have predicted such a move by the companies when they were developing the license text. Even though companies that forbade to re-flash their devices could not violate the terms of the license, Stallman still considered their actions to be blameworthy, since they threatened the freedom of device owners to do whatever they wanted with them. After much discussion on this topic, he released the 3rd version of the GPL (also known as GPLv3), which aimed to combat tivoization. The license turned out to be more than effective in this fight – it is enough to have only one component in the system, which is distributed under the terms of GPLv3 so that the manufacturer does not have the right to prohibit to re-flash the device. But Stallman didn't stop there and re-licensed all the software developed under his GNU project. Thus, new versions of the GCC compiler suite, the GDB debugger, and others were released under GPLv3. In the mid-2000s, GCC and GDB had no free counterparts that could match them in stability and functionality. I have already mentioned that creating a free operating system is unthinkable without a free compiler and debugger, which is why Stallman developed them among the earliest towards the creation of his own operating system. For example, GCC was used in FreeBSD to build most of the operating system code and was fairly part of its base system. But when the compiler suite became an anti-tivoization tool, the BSD community was in danger of being dragged into someone else's war. New versions of the software that had always been part of the base system were distributed overnight on terms that contradicted the goals of the system. In the end, it was decided to stay on the sidelines, but the price of this solution was too high – FreeBSD had to abandon the GCC and GDB updates and use those versions that were distributed under the GPLv2. The terms of GPLv3 contradicted not only the goals of FreeBSD but also the goals of most companies, which were mainly engaged in the development of proprietary software. This led to the creation of alternatives for GCC and GDB by the free software development community, funded by corporations. So, within the framework of the LLVM project, the development of alternatives under a permissive license began. At the end of 2012, FreeBSD was completely switched to build with the Clang compiler from LLVM<ref>https://lists.freebsd.org/pipermail/freebsd-current/2012-November/037458.html</ref>. Now the operating system no longer depends on GCC and GDB, and they have been permanently removed from the base system as unnecessary. Other software distributed under the GPL is removed apparently on mere inertia, as well as because of unwillingness to repeat the bitter experience. == Conclusion == I tried to explain why GPL-licensed components are removed from the FreeBSD base system. Interestingly, the inspiration came from the FreeBSD Quarterly Development Report and a simple question I asked myself as I studied it. The story turned out to be long enough because I was approaching the answer to my question gradually. Within my modest means, I did my best to disclose the very topics that, in my opinion, help to better understand the answer to it. I urge you to study the quarterly reports of free software nonprofits, use free software and participate in its development and ask yourself simple questions. == References == <references />
Toggle limited content width