# Notizen

## 01. Introduction

- Kurze Vorstellung, wer ich bin.
- Erklärung Chaos Computer Club
- Was ist der DuT?
- Überleitung: Worum geht es heute?
  - Inhaltsverzeichnis einmal durchgehen.

## 02. Just for fun

### PDP-10 slide

Die Geschichte von Linux ist eng verwoben mit der Geschichte der Freien Software
Bewegung, die in den 1980er Jahren ihren Anfang in den USA nahm. Die Geschichte
beginnt, bereits Ende der 1960er Jahre, wie sehr viel in der Entwicklung der
modernen Computergeschichte, im legendären Artificial Intelligence Laboratory am
Massachusets Institute of Technology (MIT). Neben grundlegender Forschung zu
künstlicher Intelligenz und neuronalen Netzen, wurde dort auch Forschung an
Betriebssystemen durchgeführt. In den frühen 1970er Jahren hat dort die
Hacker-Kultur ihren Anfang genommen, als Studenten das *Incompatible Time
Sharing System* entwickelt haben. Einer der Entwickler dort war *Richard
Stallman*. Stallman war schon aus seiner Zeit in Havard, in der Hacker-Kultur
verwurzelt, und schuf in dieser Zeit wichtige Werkzeuge, wie den EMACS
Text-Editor und das LISP-Machine Operating System. Stallman war schon früh ein
ausgesprochener Kritiker der restriktiven Zugangspolitik in den - teilweise von
der DARPA, der Forschungsabteilung des US-Militärs bezahlten Laboratorien. Beim
ITS hatte noch jedermann freien Zugang zu den Ressourcen des Computersystems.
Das änderte sich jedoch in den folgenden Jahren. Stallman reagierte darauf,
indem er einen Weg fand, die verschlüsselten Passworte auf dem System zu
entschlüsseln. Er verschickte die entschlüsselten Passworte an die jeweiligen
Benutzer, verbunden mit der Bitte, die Passwörter in eine leere Zeichenkette zu
ändern. Etwa 20% der Nutzer folgten seinem Aufruf. Ein Sieg mit dem Stallman
noch Jahre später gern angab.

### GNU slide

In späten 1970er und frühen 1980er Jahren begann die Hacker-Kultur in den USA zu
fragmentieren, und viele Firmen wollten nicht, dass ihr Code in die Hände
möglicher Konkurrenten geriet. Zu den heftigsten Verfechtern zählte Bill Gates,
der CEO der damals noch jungen Firma *Microsoft*, die sich mit der Entwicklung
eines leistungsfähigen BASIC-Interpreters einen Namen gemacht hatte. Gates war
schon in den 1970er Jahren damit aufgefallen, dass er die damals verbreitete
Praxis, Quellcode frei zu teilen, scharf verurteilte.

Als 1979 Brian Reid sog. "Time Bombs" im Code seines Textverarbeitungsprogramms
*Scribe* einbaute, um eine unlizensierte Weitergabe des Quellcodes zu
unterbinden, bezeichnete Stallman dies als ein *Verbrechen gegen die
Menschheit*. In einem Interview im Jahr 2008 stellte er klar, dass er das
Verbrechen nicht darin sehe, Geld für eine Software zu verlangen, sondern darin,
das Wissen, dass mit dem Code verbunden ist, als eine Art *Herrschaftswissen*
unter Verschluss zu halten. Er entwickelte darauf hin die Software *texinfo*,
die lose auf Scribe basiert.

Im Jahr 1980 wurden Stallman und einigen anderer der Hacker am MIT der Zugriff
auf den Quellcode des neu installierten Laser-Druckers verweigert. Bei früheren
Druckern hatte Stallman die Systemsoftware so erweitert, dass Benutzer eine
Nachricht erhielten, wenn ihr Druckauftrag beendet war, und so wussten, wann sie
zum Drucker gehen mussten, um ihren Ausdruck abzuholen. Die Änderungen
benachrichtigten darüber hinaus, alle Nutzer die einen laufenden Druckauftrag
hatten, wenn im Drucker ein Papierstau auftrat. Diese Erweiterungen wurden von
den Nutzern sehr geschätzt, weil der Drucker sich in einem anderen Gebäudeteil
befand, als die Büros, und diese Funktion viele Laufwege ersparte. Die
Änderungen an dem neuen Drucker nicht mehr durchführen zu können, überzeugte
Stallman, dass es einen Bedarf an Software gab, die jeder frei nutzen und
Verändern kann.

Richard Greenblatt, ein befreundeter Hacker am MIT, gründete derweil die Firma
*Lisp Machines Inc.*, um die LISP-basierten Computer bauen zu können, die er
zusammen mit Tom Knight im MIT-Lab designed hatte. Greenblatt wollte kein Geld
von aussen annehmen, um möglichst unabhängig zu bleiben. Das führte zu
Spannungen mit einigen Kommilitonen, die lieber Investoren-Geld annehmen
wollten, um die Firma schnell wachsen zu lassen. Daher kam es zum Zerwürfnis,
und die Mitglieder des *Invertorenlagers* gründeten die Firma *Symbolics*.
Allerdings machten die Investoren die Geheimhaltung des Quellcodes zu einer
Bedingung.

Stallman verbrachte die Jahre 1982 und 1983 damit eine zu Symbolics kompatible
Software zu erstellen, um zu verhindern das diese ein Monopol über die Software
auf den Computern im MIT bekam. Im Februar 1984 kündigte Stallman schließlich
seine Stelle am MIT und startete das GNU Projekt.

GNU steht ist ein rekursives Akronym und steht für *GNU is not UNIX*. Die Idee
war es, ein eigenes Betriebssystem zu bauen, dass vollständig auf freier
Software basiert, und dass allen zur Verfügung steht. Inklusive des Quellcodes,
sodass jedermann die Software nicht nur nutzen, sondern auch eigenen
Bedürfnissen anpassen kann. Dafür gründete er die gemeinnützige *Free Software
Foundation*, die sich den Zielen der Open-Source-Bewegung verschrieben hat.

Stallman war bei der Entwicklung verantwortlich für die Toolchain, vor allem den
GNU EMACS Texteditor, den Compiler (GCC), den GNU Debugger und ein
automatisiertes Build-System zum kompilieren der Software namens GNU Make. Ende
der 1980 Jahre hatte die FSF alle Werkzeuge zusammen, die man braucht, um ein
UNIX-artiges Betriebssystem zu erschaffen. Mit einer wichtigen Ausnahme: dem
Kernel.

### Torvalds

Ein Kernel ist sozusagen das Herzstück eines Betriebssystems. Es ist der Teil,
der die Kommunikation der Programme die auf einem Computer laufen mit der
physischen Hardware koordiniert, den Speicher verwaltet und Zugriff auf die
Massenspeicher wie Festplatten ermöglicht.

Hier erschien nun ein junger finnischer Informatik-Student auf der Bühne: Linus
Torvalds. Torvalds hatte sich gerade seinen ersten 80386 basierten PC gekauft,
und war enttäuscht, dass die damals noch üblichen PC-Betriebssysteme, vor allem
MS-DOS, die Fähigkeiten dieser Hardware nicht ansatzweise ausnutzten.

Torvalds schrieb also seinen eigenen Kernel, der seinen neuen PC besser nutzen
konnte. Er orientierte sich dabei an *Minix* einem UNIX-ähnlichen
Betriebssystem, das von dem legendären Computer-Forscher Andrew S. Tanenbaum für
Lehrzwecke geschrieben worden war.

### GNU/Linux

Am 25. August 1991 veröffentlichte Torvalds seine Arbeit im der Usenet-Gruppe
*comp.os.minix*.

Ursprünglich wollte er sein Projekt *FreaX* nennen, als Kofferwort aus *Freak*
und *Unix*. Ari Lemmke, der damals Administrator der FTP Server and er
Universität in Helsinki war, fand den Namen nicht gut, und schlug stattdessen
*Linux* vor, als Kurzform von *Linus' Unix*. Torvalds gefiel das zunächst nicht,
weil es ihm zu egoistisch vorkam, beugte sich aber den Stimmen der Community,
die Lemmke's Vorschlag allesamt besser fanden.

Obwohl er, anders als Stallman, nicht politisch motiviert war, wollte Torvalds
seine Arbeit gerne mit so vielen Menschen wie möglich teilen. Darum wählte er
die GNU General Public Licence als Lizenzmodell aus. Dies gab dem GNU Projekt
das letzte fehlende Puzzle-Teil in die Hand: GNU/Linux war geboren.

Über den Namen dieses Betriebssystems gibt es bis heute übrigens Kontroversen.
Die Free Software Foundation besteht darauf, dass vollständige System GNU/Linux
zu nennen, was technisch richtiger ist (zumal es inzwischen auch Systeme wie
GNU/Mach und GNU/Hurd gibt). In der Öffentlichkeit hat sich die Kurzform *Linux*
weitestgehend durchgesetzt.

## Vom Konsumenten zum Agenten

### Was bedeutet "Frei und Quelloffen"?

Der Kern von FOSS ist die Freiheit, mit einem Stück Code (einem Programm) zu
machen was man möchte. "Frei" ist zu verstehen wie in "Freiheit" nicht wie in
"Freibier". FOSS ist zwar meistens kostenfrei, aber das ist nicht das Ziel. Es
gibt durchaus Firmen, die mit FOSS Geld verdienen.

Viele Unternehmen schreiben *Open-Source* auf ihre Software, weil man sich den
Quellcode ansehen kann. Das ist aber nicht das Gleiche. Diverse Projekte heißen
*Open-Irgendwas* obwohl die Software komplett closed source ist.

### Die 4 essentiellen Freiheiten

Die Free-Software-Foundation definiert die essentiellen Freiheiten so:

- Die Freiheit, eine Software so zu verwenden, wie ich es möchte, zu jedem
  Zweck.

- Die Freiheit zu lernen wie das Programm funktioniert, und es so ändern zu
  können, dass es das tut, was ich möchte.

- Die Freiheit kopien dieser Software mit anderen zu teilen, so dass sie davon
  profitieren.

- Die Freiheit die von mir vorgenommenen Änderungen mit anderen zu teilen. Somit
  haben alle, die die Software nutzen, die Chance von meinen Verbesserungen zu
  profitieren.

  Und ja, die Aufzählung startet offiziell bei null. Wir sind hier schließlich
  bei Informatikern, die machen das immer so.

  Die Freiheiten 1 und 3 erfordern unbedingt den Zugang zu dem Quellcode des
  Programms.

  Diese grundlegenden Ideen sind im Laufe der Zeit verfeinert und in rechtliche
  Verträge (Lizenzen) gegossen worden, die inzwischen auch von Gerichten in
  aller Welt anerkannt werden.

  Die bekannteste dieser Lizenzen ist die *GNU General Public License* unter der
  auch Linux selbst steht. Diese Lizenzen haben die Eigenschaft *infektiös* zu
  sein. Das heißt die Software, und alle davon abgeleiteten Werke müssen unter
  eine Lizez stehen, die mindestens die Freiheiten geben, die die GPL auch
  erlaubt. Dies soll verhindern, dass z.B. große Firmen, sich den Code von Linux
  einverleiben, und ihn zu Closed Source machen, und damit auf dem Rücken
  anderer Entwickler Geld zu verdienen.

  Es hat verschiedene Versuche von Konzernen gegeben, dieses Konzept anzugreifen
  (siehe SCO vs. Linux), die sind aber vor Gericht gescheitert.

  ### Und was hat das mit mir zu tun?

  Die Freiheiten gelten für alle, nicht nur für Entwickler.

  Software kann nicht einfach so verschwinden. Bei Closed Source kann der
  Hersteller den Support einstellen, oder die Software ganz vom Markt nehmen.
  Damit ist sie komplett vom Markt verschwunden, und kann nicht mehr genutzt
  werden. Manchmal ist auch die Hardware nicht mehr verfügbar.

  FOSS Projekte können, da der Code ja der Allgemeinheit gehört, von anderen
  weiter entwickelt werden. Das kann auch durchaus kommerziell sein, in dem
  Sinne, dass eine Firma sich für die Dienstleistung den Code zu pflegen
  bezahlen lässt.

Es gibt keinen *Vendor Lock-in*. Ein Hersteller kann nicht, z,B. durch
entsprechende Funktionen im Code, verhindern, dass ein Gerät auf dem die
Software läuft, verändert, repariert oder mit Komponenten und Ersatzteilen
anderer Hersteller ausgestattet werden kann. *If you can't open it, you don't
own it*, ist besonders in Zeiten immer spezialisierter werdender Geräte sehr
bedeutsam geworden. Wer schon mal eine *Smarte* Glühbirne gekauft hat, die
plötzlich gar nicht mehr Smart war, nachdem der Hersteller das Produkt
eingestellt hat, kennt das Problem.

Als Nutzer ist man plötzlich nicht mehr schweigender Konsument, sondern ein Teil
einer Gemeinschaft, die sich um die Nutzung und Pflege von Software kümmert.
Dazu gehören genauso die Nutzer, wie die Entwickler, denn um beinahe jedes freie
Softwareprojekt, zumindest wenn es ein wenig größer wird, bilden sich eigene
kleine Kulturen, mit ihrer eigenen Sprache, In-Jokes und häufig einer großen
Leidenschaft für die genutzte Software. Als Beispiel dafúr dienen die
Editor-Wars.

Am Ehesten ist diese Kultur mit einer Allmende zu vergleichen: Die Software
gehört der Gemeinschaft und wird auch von allen gemeinsam gepflegt.

### Wie kann ich mich einbringen?

Viele werden jetzt denken: "Ich bin gar kein Entwickler, wie kann ich mich da
einbringen?" Freie Software lebt von den Menschen, die sie benutzen.

Nutzt FOSS!

Wenn ihr mit einer Software ein Problem lösen konntet, erzählt anderen davon.
Diskutiert und bringt euch ein.

Und zuletzt, wenn euch etwas einfällt, was ein Programm gebrauchen könnte,
schlagt es vor! Nicht jede Änderung landet nachher im Projekt, aber Feedback ist
den meisten Entwicklern sehr willkommen.

## Was ist ein Betriebssystem?

### Definition

Ein Betriebssystem ist eine besondere Art von Computerprogramm, oder besser eine
Sammlung von Computerprogrammen. Es besteht zum einen aus dem bereits erwähnten
Kernel (z.B, Linux). Dieser Kernel ist dafür zuständig die Kommunikation
zwischen den Komponenten der Hardware und den Programmen zu übernehmen. So
stellt er zum Beispiel eine einheitliche Schnittstelle bereit, die es z.B,
ermöglicht über den Soundchip Musik auszugeben, ohne dass das Programm, dass die
Musik abspielen will, wissen muss wie der Chip funktioniert, und wie man ihn
programmiert. Der Kernel kümmert sich auch darum, dass mehrere Programme
gleichzeitig laufen können, ohne sich gegenseitig zu behindern.

Zu den anderen Programmen gehören:

- Eine Sammlung von Programmen, die den Systemstart organisieren (INIT system)
- Eine Schnittstelle über die Programme mit dem System kommunizieren können
  (glibc)
- Hintergrunddienste, die organisatorische Aufgaben übernehmen
- Eine Benutzeroberfläche, damit Anwender:innen mit dem System interagieren
  können.

Damit unterscheiden sie sich von Anwendungsprogrammen, die diese Funktionen
nutzen, um Funktionen für die Anwender:innen bereitzustellen.

### Distributionen

Aufgrund seiner Geschichte, und der unterschiedlichen Herkunft seiner
Komponenten, gibt es nicht das eine Linux-Betriebssystem. In der Anfangszeit
haben Computer-Enthusiasten noch alle Komponenten aus dem Quellcode selbst
erstellt, und Statt dessen haben sich schon früh verschiedene Firmen und private
Gruppen darum bemüht komplette Pakete zu erstellen, die sich einfach
installieren lassen. So eine Zusammenstellung heißt im Fachjargon
*Distribution*. Anders als Windows oder MacOS enthalten Linux-Distributionen
aber nicht nur das Betriebssystem selbst, sondern auch eine Sammlung
ausgewählter Programme. Neben den Werkzeugen mit denen diese Installiert werden,
ist das der größte Unterschied zwischen den Distributionen. Das Diagramm zeigt
einige der wichtigsten Distributionen, und wie die von einander Abhängen.

Für den Linux-Einsteiger ist die überwältigende Auswahl an verschiedenen
Linux-Distributionen die wohl größte Hürde. Welche soll man nehmen? Darauf wird
vermutlich jeder Linux-Nutzer eine eigene Antwort geben, denn jede/r hat seine
Lieblingsdistribution.

Die Auswahl hängt aber auch davon ab, welchen Zweck der Computer später erfüllen
soll: Ein Server braucht andere Voraussetzungen und Software als ein Desktop-PC
und der wiederum braucht andere als ein Gaming-Computer.

Für Linux-Einsteiger haben sich die beiden Distributionen Ubuntu Desktop und
Linux Mint als eine Art Defacto-Standard etabliert. Sie sind leicht zu
installieren, und erfordern keine besonderen Linux-Kenntnisse um sie zu
bedienen.

### Ubuntu

Ich stelle hier Ubuntu-Linux vor, dass auch auf vielen Linux-Installparties
verwendet wird, und eine sehr große und offene Community hat.

Ubuntu wurde 2004 als Ableitung der Debian Distribution von dem Südafrikaner
Mark Shuttleworth und seiner Firma Canonical ins Leben gerufen. Canonical
verdient Geld mit Dienstleistungen und Hosting für Geschäftskunden rund um
Linux, während die Distribution selbst komplett frei ist. Daher wurden auch
viele andere Distributionen (darunter auch Linux Mint), von Ubuntu abgeleitet.

Das Wort *Ubuntu* stammt aus einem philosophischen Konzept Nguni-Sprachen, die
in Shuttleworth's Heimat Südafrika gesprochen werden. Das Wort selbst bedeutet
*Menschheit*, die dahinterstehende Philosophie ist ziemlich komplex, basiert
aber vor allem auf der Annahme, dass das mensch-sein des Menschen aus dem
Kontakt und der Zusammenarbeit mit anderen Menschen entsteht. Das Konzept ist in
ganz Afrika verbreitet, und der Name wurde für das Betriebssystem gewählt, weil
das Konzept freier Software Parallelen zur Ubuntu-Philosophie aufweist. Er soll
den Aspekt des Gemeinsamen und des Teilens betonen.

#### An dieser Stelle die Demo beginnen

## Unterschiede

### Windows und Linux

Die folgenden Unterschiede sollen lediglich aus Anwendersicht aufgeführt werden.
Für Fragen zu den technischen Unterschieden stehe ich gerne im Anschluss zur
Verfügung.

#### Das Dateisystem

Die Unterschiede bei der Speicherung von Dateien sind nicht mehr so groß wie
früher, wo Windows die Dateinamen noch auf acht Zeichen und 3 Zeichen für die
Dateinamenerweiterung begrenzt hat. Der wichtigste Unterschied ist hier: Linux
hat keine Laufwerksbuchstaben! Wenn ein Computer über mehrere Laufwerke verfügt,
werden diese einfach als Ordner an einer beliebigen Stelle im Dateisystem
eingehängt. Für Benutzer:innen bedeutet das, dass niemand sich Gedanken machen
muss, auf welchem Laufwerk etwas liegt.

Ein weiterer Unterschied ist, dass es in Linux feste Orte gibt, an denen
Programme und Dateien abgelegt werden. So liegen ausführbare Programme in
`/usr/bin`, Konfigurationsdateien und `/etc` und so weiter. Anwender:innen haben
ein eigenes Verzeichnis für ihre Daten (Home-Verzeichnis), und können im
Normalfall auch nicht bzw. nur beschränkt auf andere Dateien zugreifen.

#### Rechte

Anders als Windows, hatte Linux schon von Beginn an ein ausgeklügeltes System
für Benutzerrechte. Dazu gehört, dass es auf jedem System mindestens zwei
Benutzerkonten gibt. Einen Systembenutzer, der zur Administration verwendet
wird, und der immer `root` heißt, und einen normalen Anwender:innen Nutzer. Jede
weitere Benuzter:in hat dann wiederum ein eigenes Konto. Zum Benutzen des
Computers meldet man sich niemals als `root` an! Diese strikte Trennung hat
Linux, schon lange vor Windows, einen deutlichen Sicherheitsgewinn eingebracht,
weil systemrelevante Änderungen immer einer expliziten Anmeldung des
`root`-Benutzers bedürfen (z.B. mit dem `sudo`-Programm).

Die Anmeldung an einem Linux-System geschieht rein lokal; etwas vergleichbares
zu dem *Microsoft-Konto* gibt es hier nicht!

#### Desktop

Jede Distribution kommt mit einer Desktop-Oberfläche. Anders als bei Windows
oder MacOS gibt es jedoch viele verschiedene Oberflächen (Gnome, KDE, XFCE usw.)
Das gibt Nutzer:innen zwar viel Freiheit, kann aber auch verwirrend sein. Am
besten ist es, sich zunächst mit der Oberfläche vertraut zu machen, die
vorinstalliert ist, und später, wenn man mehr Erfahrung hat, mit anderen zu
probieren.

Die Oberfläche von Ubuntu ist ein angepasstes GNOME. Diese Oberfläche ist
bewusst einfach gehalten, um Einsteiger:innen nicht zu überfordern. Es gibt ein
Startmenü, wie Windows Anwender:innen es kennen, und eine Suchfunktion für
Software.

#### Sicherheit

Ubuntu ist sehr stark auf Sicherheit ausgelegt. Benutzer haben nur die nötigsten
Rechte, und Programme, die von Benutzer:innen gestartet werden können das System
oder die Daten anderer Benutzer:innen nicht verändern. Netzwerkzugänge von außen
müssen explizit erlaubt werden.

#### Updates

Updates werden in der Regel über das Update-Center, eine Art *App-Store*
erledigt. Anders als bei Windows wird hier nicht nur das Betriebssystem sondern
alle installierte Software aktuell gehalten. Ubuntu ist dabei weniger
aufdringlich als WIndows, und benötigt deutlich seltener einen Neustart.
Benutzer:innen können selbst entscheiden, wie stark der Update-Vorgang
automatisiert wird, und wann Updates eingespielt werden.

### Software

Die Software für Windows und Linux unterscheidet sich. Viele Programme (z.B.
Microsoft Office), gibt es nicht für Linux. Dafür gibt es aber eine Vielzahl von
Programmen, die diese zu 100% ersetzen können. Viele Programme, wie Firefox,
Chrome etc. gibt es auch für beide Plattformen.

Viele Windowsprogramme lassen sich inzwischen auch auf Linux ausführen. Wenn
auch das nicht geht, bleibt für unverzichtbare Anwendungen noch, Windows in
einer Virtuellen Maschine zu installieren, und als "Gast" unter Linux laufen zu
lassen.

Bei Computerspielen sieht es inzwischen sehr gut aus: Spiele waren über Jahre
die Achillesferse von Linux, da die meisten Spiele nur für Windows entwickelt
wurden. Der Spiele Publisher Valve (Steam-Plattform) hat auf Basis des *Wine*
Programs, einem Kompatibilitätslayer für Windows, mit Proton eine Lösung
geschaffen mit der ein sehr großer Teil der Windows-Spiele auch auf Linux läuft.
Moderne Spiele laufen meist auch nativ auf Linux, da die großen Grafikengines
wie Unreal-Engine inzwischen alle auch unter Linux laufen. Ein solches Spiel auf
Linux lauffähig zu bekommen, bedeutet für den Hersteller nur noch einen
Knopfdruck und einen zusätzlichen Compilerdurchlauf. Tatsächlich laufen viele
Spiele auf Linux inzwischen flüssiger als mit Windows, weswegen Microsofts
Gaming-Sparte vor kurzem eine Task-Force ins Leben gerufen hat, die Windows
wieder effizienter machen soll.

Das heißt nicht, dass es nie Probleme gibt, Software zum laufen zu bekommen.
Manche Windows-Programme lassen sich wirklich nur auf Windows zum laufen
überreden. Hier hilft dann eine virtuelle Maschine zu benutzen, wenn gar nichts
mehr hilft.

### Viel Spaß mit Linux

Wer nicht unbedingt kommerzielle Spiele spielen will, findet aber auch viele
schöne und spannende Spiele, die selbst Open Source sind und viel Spaß machen.
