GNU
GNU er et frit softwareprojekt, der blev grundlagt for at udvikle et komplet operativsystem baseret på fri software. Navnet er et selvrefererende akronym for “GNU’s Not Unix”, fordi projektet var designet til at ligne Unix i opbygning uden at bruge Unix’ egen kildekode. GNU består i sig selv af systemværktøjer, biblioteker og programmer, og danner sammen med en kerne grundlaget for et fuldt funktionsdygtigt operativsystem.
Et konkret eksempel er kommandoen ls, som de fleste Linux-brugere kender fra terminalen til at vise filer i en mappe. Den kommando er en del af GNU Core Utilities, altså et af de programmer GNU-projektet selv har udviklet. Uden GNU-værktøjerne ville en kerne som Linux ikke kunne bruges som et samlet, brugbart system – det er kombinationen af de to, der giver et operativsystem, brugeren kan arbejde i.
Hvad er GNU, og hvordan adskiller fri software sig fra open source
GNU-projektet blev igangsat af Richard Stallman i september 1983 med det formål at skabe et Unix-kompatibelt system, som enhver kunne bruge, studere, dele og ændre. Richard Stallman lavede den oprindelige annoncering af GNU-projektet i september 1983. Baggrunden var, at Stallman i 1971 arbejdede på MIT i et miljø, hvor software typisk blev delt frit mellem programmører, men i løbet af 1980’erne blev størstedelen af software proprietær, hvilket forhindrede brugere i frit at samarbejde om koden. Fri software handler om brugerens rettigheder til softwaren, ikke om prisen. Ordet “fri” i “fri software” handler om frihed, ikke pris, og uanset om man betaler for GNU-software eller ej, har man fire specifikke friheder: retten til at køre programmet som man ønsker, retten til at kopiere det og give det videre, retten til at ændre det ved fuld adgang til kildekoden, og retten til at distribuere en forbedret udgave. Det er denne definition, Free Software Foundation (FSF) arbejder ud fra, og den adskiller sig fra begrebet “open source”, som ofte lægger vægt på praktiske fordele ved åben kildekode uden nødvendigvis at fremhæve brugerens frihedsrettigheder som det centrale. De fire rettigheder er juridisk formaliseret gennem GNU General Public License (GPL), som er den licens de fleste GNU-programmer udgives under. GPL bygger på et princip, der kaldes copyleft: hvis man viderefordeler en ændret udgave af et GPL-licenseret program, skal den ændrede udgave også licenseres under GPL. Det adskiller GPL fra mere tilladende licenser som MIT og BSD, hvor der ikke stilles samme krav til, hvilken licens en videreudvikling skal have.
Historien bag GNU-projektet og Free Software Foundation
Stallman valgte at gøre GNU kompatibelt med Unix, fordi Unix’ design allerede var afprøvet og kunne køre på mange forskellige typer hardware. Beslutningen om at gøre systemet Unix-kompatibelt blev truffet, fordi det samlede design allerede var afprøvet og flytbart, og fordi kompatibiliteten gjorde det nemt for Unix-brugere at skifte til GNU. Et Unix-lignende system er ikke én sammenhængende blok kode, men en samling af en kerne, oversættere (compilere), teksteditorer, tekstformatteringsværktøjer, mailprogrammer, grafiske grænseflader, biblioteker, spil og meget andet, og det er derfor et stort udviklingsarbejde at bygge et helt system op fra bunden. For at give projektet en formel organisation og økonomisk grundlag etablerede Stallman Free Software Foundation i oktober 1985 for at bistå med administrative, juridiske og organisatoriske forhold omkring GNU-projektet og for at udbrede kendskabet til fri software. Arbejdet med selve systemet var i gang før foreningen blev stiftet: softwareudviklingen startede i januar 1984. Ved 1990 havde GNU-projektet skrevet eller fundet de fleste af de nødvendige programmer til et komplet system – bortset fra selve kernen. Ved 1990 havde man fundet eller skrevet alle de store komponenter undtagen én: kernen. Linux, en Unix-lignende kerne, blev derefter udviklet af Linus Torvalds i 1991 og gjort til fri software i 1992. GNU-projektet havde faktisk allerede sit eget kerneprojekt undervejs: GNU’s egen kerne, GNU Hurd, blev startet i 1990, før Linux blev påbegyndt, og frivillige fortsætter med at udvikle Hurd, fordi det stadig er et teknisk interessant projekt. Det var altså en praktisk løsning, ikke en oprindelig plan, at Linux endte med at blive den kerne, GNU-systemet oftest bruges sammen med.
GNU-systemets værktøjer og komponenter
GNU-projektet omfatter en lang række programmer ud over selve systemkernen. GNU Compiler Collection (GCC) er en samling af compilere, altså programmer der oversætter kildekode skrevet af mennesker til maskinkode, en computer kan udføre. GCC understøtter flere sprog, herunder C og C++, og bruges som standardcompiler i mange Linux-miljøer. GNU Emacs er en teksteditor med indbygget programmeringssprog, der gør det muligt at tilpasse editoren til mange forskellige opgaver, mens GNU Debugger (GDB) bruges til at finde fejl i et program, mens det kører. Dertil kommer mere grundlæggende byggesten som GNU Bash, som er det kommandolinjeprogram (shell) mange Linux-brugere møder i en terminal, GNU Core Utilities, som indeholder simple men centrale kommandoer som at kopiere, flytte og slette filer, og GNU Build System (Autoconf og Automake), der hjælper udviklere med at gøre kildekode kompatibel på tværs af forskellige systemer. GNU-projektet er dog ikke begrænset til selve kerneoperativsystemet, men sigter mod at levere et bredt spektrum af software, herunder programmer til almindelige brugere. Derfor blev det grafiske skrivebordsmiljø GNOME udviklet, så også ikke-tekniske brugere lettere kan bruge GNU-systemet. Langt de fleste af disse værktøjer er licenseret under GPL, hvilket betyder, at kildekoden skal følge med, når programmerne distribueres, og at ændringer skal deles under samme licensvilkår.
GNU/Linux: samspillet mellem GNU-systemet og Linux-kernen
Et operativsystem består typisk af en kerne og en række programmer omkring den. Den vigtigste del af et operativsystem er kernen, og i et GNU/Linux-system er Linux kernekomponenten, mens resten af systemet består af andre programmer, hvoraf mange er skrevet af eller for GNU-projektet. Fordi Linux-kernen alene ikke udgør et fungerende operativsystem, foretrækkes betegnelsen “GNU/Linux” for de systemer, mange i daglig tale blot kalder “Linux”. Linux-kernen står for at fordele computerens ressourcer og tale med hardwaren, mens GNU-værktøjerne giver brugeren de programmer, systemet skal bruges med. Denne opbygning giver en vis fleksibilitet: GNU/Linux-brugere kan for eksempel vælge mellem et dusin forskellige kommandolinje-grænseflader (shells) og flere grafiske skriveborde, i modsætning til systemer hvor sådanne valg er låst fast af producenten. En Linux-distribution som Debian eller Ubuntu samler Linux-kernen og GNU-værktøjerne sammen med en pakkehåndtering, så brugeren kan installere og opdatere software uden selv at samle systemet manuelt. Der findes anslået titusinder af millioner brugere af GNU/Linux-systemer i dag, typisk via forskellige GNU/Linux-distributioner. Systemet bruges bredt inden for serverdrift og er også udbredt i indlejrede systemer (embedded), men hvor stor markedsandelen præcis er, afhænger af hvilket segment og hvilken opgørelse man ser på.
GPL-licensen og betydningen for softwareudvikling i dag
GPL adskiller sig fra mere tilladende licenser ved sit copyleft-princip: retten til at ændre og videredistribuere software følger med et krav om, at afledte udgaver skal forblive under samme licens. Det betyder i praksis, at en virksomhed kan bruge og tilpasse GPL-licenseret kode i sine egne produkter, men skal give brugerne adgang til kildekoden for de dele, der bygger på GPL-koden, hvis produktet distribueres videre. GNU-værktøjer som GCC og Bash indgår i dag i mange udviklingsmiljøer på tværs af Linux-distributioner, og bruges både af enkeltpersoner og virksomheder, der bidrager til projekterne som frivillige eller som del af deres arbejde. Sammenlignet med lukkede systemer som Microsoft Windows, hvor kildekoden ikke er offentligt tilgængelig, giver GPL-licenserede programmer brugeren mulighed for selv at undersøge, hvordan softwaren fungerer, og rette fejl eller sikkerhedshuller, hvis man har den nødvendige tekniske viden til det. Det er dog ikke ensbetydende med, at al fri software automatisk er mere sikker eller fejlfri end proprietær software – det afhænger blandt andet af, hvor aktivt et givent projekt bliver vedligeholdt. Mange af de systemer, hvor GNU-værktøjer indgår, håndterer i dag store mængder data via en database, og både serverdrift og generel IT-infrastruktur trækker fortsat på grundlaget, GNU-projektet lagde med sine udviklerværktøjer. Programmer, der distribueres under GPL, kan i mange tilfælde hentes gratis som downloads direkte fra projekternes hjemmesider.