diff --git a/.prettierignore b/.prettierignore
new file mode 100644
index 0000000..5a0bf03
--- /dev/null
+++ b/.prettierignore
@@ -0,0 +1 @@
+/book
diff --git a/.prettierrc b/.prettierrc
new file mode 100644
index 0000000..0079043
--- /dev/null
+++ b/.prettierrc
@@ -0,0 +1,4 @@
+{
+ "printWidth": 88,
+ "proseWrap": "always"
+}
diff --git a/.woodpecker.yml b/.woodpecker.yml
index b819693..d263bff 100644
--- a/.woodpecker.yml
+++ b/.woodpecker.yml
@@ -16,5 +16,6 @@ pipeline:
- talon_key
commands:
- apk add curl jq
- - curl -SsL -o upload.sh "https://code.thetadev.de/ThetaDev/Talon/raw/branch/main/scripts/upload.sh"
+ - curl -SsL -o upload.sh
+ "https://code.thetadev.de/ThetaDev/Talon/raw/branch/main/scripts/upload.sh"
- sh upload.sh book
diff --git a/README.md b/README.md
index 86fbe3c..89dba47 100644
--- a/README.md
+++ b/README.md
@@ -1,5 +1,7 @@
# WPF: Open Source Software
+Dies ist die
+
**Kursseite:** http://hhoegl.informatik.hs-augsburg.de/hhwiki/OSS23
## Build
@@ -10,3 +12,17 @@ Die Dokumentation wird mit mdBook (https://rust-lang.github.io/mdBook/) gebaut.
mdbook serve # Starte Server mit Live-Update
mdbook build # Webseite bauen
```
+
+## Markdown formatieren
+
+Das Projekt enthält eine Prettier-Konfiguration, um den Markdown-Text zu formatieren
+(automatische Zeilenumbrüche).
+
+```bash
+npx prettier -w .
+```
+
+## Lizenz
+
+Die Dokumentation ist unter der Creative Commons Attribution-ShareAlike 4.0-Lizenz
+veröffentlicht.
diff --git a/src/SUMMARY.md b/src/SUMMARY.md
index b003c15..aac5072 100644
--- a/src/SUMMARY.md
+++ b/src/SUMMARY.md
@@ -4,3 +4,4 @@
- [Aufgabe 1](./aufgaben/aufgabe_1.md)
- [Aufgabe 2](./aufgaben/aufgabe_2.md)
+- [Aufgabe 3](./aufgaben/aufgabe_3.md)
diff --git a/src/aufgaben/aufgabe_1.md b/src/aufgaben/aufgabe_1.md
index 2872822..e9ae84d 100644
--- a/src/aufgaben/aufgabe_1.md
+++ b/src/aufgaben/aufgabe_1.md
@@ -4,101 +4,106 @@ Hausaufgaben A1 bis 28.3.:
## Software
-Welche Programme verwenden Sie typischerweise für Ihre tägliche Arbeit auf Ihrem Rechner?
+Welche Programme verwenden Sie typischerweise für Ihre tägliche Arbeit auf Ihrem
+Rechner?
Stellen Sie die Programme mit ihrer Lizenz in einer Tabelle zusammen.
-| Kategorie | Name | Lizenz |
-| ------------------- | ------------------- | ------------------------------------------------------------ |
+| Kategorie | Name | Lizenz |
+| ------------------- | ------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Betriebssystem | Debian | Kernel: GPLv2
Pakete: hauptsächlich freie Lizenzen
einige proprietäre Pakete im nonfree-Repository, bspw. `firmware-amd-graphics` (Lizenz: `binary-redist-AMD-restrictive`) |
-| Desktop Environment | KDE Plasma | GPL, LGPL |
-| Browser | Firefox | MPL (Mozilla Public License) |
-| IDE | VSCodium | MIT |
-| IDE | IntelliJ/PyCharm | Community-Version: Apache 2.0, Ultimate-Version: JetBrains User Agreement |
-| Markdown-Editor | Typora | Typora End User License Agreement |
-| Notizen | Joplin | AGPL 3.0 |
-| Git-Hosting | Gitea | MIT |
-| Git-Hosting | Gitlab | Community Edition: MIT, Enterprise Edition: GitLab Enterprise Edition (EE) license, source-available |
-| Bildbearbeitung | GIMP | GPLv3 |
-| 3D-Druck | PrusaSlicer | AGPL 3.0 |
-| Platinendesign | KiCad | GPLv3 |
-| 3D-Modellierung | Autodesk Fusion 360 | Autodesk License and Services Agreement |
-| Mediaplayer | VLC | GPLv2 |
-| Mediaserver | Jellyfin | GPLv2 |
-| Mediacenter | Kodi | GPLv2 |
-| Audiobook-Server | Audiobookshelf | GPLv3 |
-| YouTube-Client | NewPipe | GPLv3 |
-| Instant-Messaging | Signal | GPLv3 (Desktop-Version: AGPL 3.0) |
-| Online-Ausweis | AusweisApp | EUPL (Open Source Lizenz für die Europäische Union) |
-
-
+| Desktop Environment | KDE Plasma | GPL, LGPL |
+| Browser | Firefox | MPL (Mozilla Public License) |
+| IDE | VSCodium | MIT |
+| IDE | IntelliJ/PyCharm | Community-Version: Apache 2.0, Ultimate-Version: JetBrains User Agreement |
+| Markdown-Editor | Typora | Typora End User License Agreement |
+| Notizen | Joplin | AGPL 3.0 |
+| Git-Hosting | Gitea | MIT |
+| Git-Hosting | Gitlab | Community Edition: MIT, Enterprise Edition: GitLab Enterprise Edition (EE) license, source-available |
+| Bildbearbeitung | GIMP | GPLv3 |
+| 3D-Druck | PrusaSlicer | AGPL 3.0 |
+| Platinendesign | KiCad | GPLv3 |
+| 3D-Modellierung | Autodesk Fusion 360 | Autodesk License and Services Agreement |
+| Mediaplayer | VLC | GPLv2 |
+| Mediaserver | Jellyfin | GPLv2 |
+| Mediacenter | Kodi | GPLv2 |
+| Audiobook-Server | Audiobookshelf | GPLv3 |
+| YouTube-Client | NewPipe | GPLv3 |
+| Instant-Messaging | Signal | GPLv3 (Desktop-Version: AGPL 3.0) |
+| Online-Ausweis | AusweisApp | EUPL (Open Source Lizenz für die Europäische Union) |
## Geschichte freier Software
-Ergänzen Sie die Geschichte freier Software ( siehe oben) ab 2000. Recherchieren Sie selber, welche wichtigen Ereignisse in den letzten 20 Jahren Open-Source Geschichte stattgefunden haben.
+Ergänzen Sie die Geschichte freier Software
+( siehe oben) ab 2000.
+Recherchieren Sie selber, welche wichtigen Ereignisse in den letzten 20 Jahren
+Open-Source Geschichte stattgefunden haben.
-| Jahr | Ereignisse |
-| ---- | ------------------------------------------------------------ |
-| 2001 | Linux 2.4, VLC, BitTorrent |
-| 2002 | Kodi (damals Xbox Media Player, später XBMC), Arch Linux |
-| 2003 | Linux 2.6 |
-| 2004 | NGINX 0.1.0, Ubuntu 4.10 |
-| 2005 | Git |
-| 2006 | Linux Mint, qBittorrent |
-| 2007 | GPLv3 |
-| 2008 | GitHub |
-| 2009 | Golang |
-| 2010 | F-Droid |
-| 2011 | Linux 3.0, GitLab |
-| 2012 | OctoPrint |
-| 2013 | Docker |
-| 2014 | Signal, Kubernetes, Heartbleed |
-| 2015 | Linux 4.0, Rust 1.0, NewPipe, VS Code |
-| 2016 | Gitea (Gogs-Fork), Mastodon |
-| 2017 | WebAssembly |
+| Jahr | Ereignisse |
+| ---- | ---------------------------------------------------------------------- |
+| 2001 | Linux 2.4, VLC, BitTorrent |
+| 2002 | Kodi (damals Xbox Media Player, später XBMC), Arch Linux |
+| 2003 | Linux 2.6 |
+| 2004 | NGINX 0.1.0, Ubuntu 4.10 |
+| 2005 | Git |
+| 2006 | Linux Mint, qBittorrent |
+| 2007 | GPLv3 |
+| 2008 | GitHub |
+| 2009 | Golang |
+| 2010 | F-Droid |
+| 2011 | Linux 3.0, GitLab |
+| 2012 | OctoPrint |
+| 2013 | Docker |
+| 2014 | Signal, Kubernetes, Heartbleed |
+| 2015 | Linux 4.0, Rust 1.0, NewPipe, VS Code |
+| 2016 | Gitea (Gogs-Fork), Mastodon |
+| 2017 | WebAssembly |
| 2018 | GitHub von Microsoft übernommen, Jellyfin (Fork von Emby), ActivityPub |
-| 2019 | Linux 5.0 |
-| 2020 | Linux-Marktanteil > 3% |
-| 2021 | Log4j vulnerability, Audiobookshelf 1.0 |
-| 2022 | Linux 6.0, Forgejo (Gitea-Fork), Internet Explorer EOL |
+| 2019 | Linux 5.0 |
+| 2020 | Linux-Marktanteil > 3% |
+| 2021 | Log4j vulnerability, Audiobookshelf 1.0 |
+| 2022 | Linux 6.0, Forgejo (Gitea-Fork), Internet Explorer EOL |
## Videos
### 4 Freedoms
- http://www.youtube.com/watch?v=uJi2rkHiNqg
+http://www.youtube.com/watch?v=uJi2rkHiNqg
Richard Stallman erklärt die 4 Freiheiten von Freier Software
0. Freiheit, das Programm beliebig auszuführen
1. Freiheit, den Code des Programms ansehen und zu verändern
-2. Freiheit, Kopien des Programms weiterzuverbreiten
+2. Freiheit, Kopien des Programms weiterzuverbreiten
3. Freiheit, Kopien des veränderten Programms weiterzuverbreiten
### What is Free Software
https://www.youtube.com/c/FreeSoftwareFoundationEurope
-Werbevideo der Free Software Foundation Europe, erklärt die oben genannten 4 Freiheiten und geht darauf ein, dass freie Software immer wichtiger wird, je mehr Lebensbereiche von Computern bestimmt werden.
+Werbevideo der Free Software Foundation Europe, erklärt die oben genannten 4 Freiheiten
+und geht darauf ein, dass freie Software immer wichtiger wird, je mehr Lebensbereiche
+von Computern bestimmt werden.
### Das Microsoft-Dilemma
https://hhoegl.informatik.hs-augsburg.de/oss/ss20/Das-Microsoft-Dilemma-2018.mp4
-Die Dokumentation beschreibt die Problematik der Verwendung proprietärer Software im öffentlichen
-Dienst.
+Die Dokumentation beschreibt die Problematik der Verwendung proprietärer Software im
+öffentlichen Dienst.
-Die großflächige Verwendung nicht auditierbarer Software schafft Sicherheitslücken und ermöglicht
-die Verbeitung von Viren wie der WannaCry-Ransomware. Zudem macht sich unser Staat so von
-ausländischen Konzernen abhängig.
+Die großflächige Verwendung nicht auditierbarer Software schafft Sicherheitslücken und
+ermöglicht die Verbeitung von Viren wie der WannaCry-Ransomware. Zudem macht sich unser
+Staat so von ausländischen Konzernen abhängig.
-Es wird kritisiert, dass es keine fairen Ausschreibungen zur Wahl des Softwarepakets für Behörden
-gibt, sondern die Verwendung von Microsoft-Produkten von Anfang an fest steht.
+Es wird kritisiert, dass es keine fairen Ausschreibungen zur Wahl des Softwarepakets für
+Behörden gibt, sondern die Verwendung von Microsoft-Produkten von Anfang an fest steht.
Es wird festgestellt, das die Verbeitung von Microsoft-Software viel mit Lobbyismus und
Parteipolitik und wenig mit technischen Vorteilen dieser Software zu tun hat.
-Als Beispiel wird die Münchener Stadtverwaltung genannt, die ihre IT auf Linux umgestellt hat. 2017
-wurde diese Umstellung nach einem Wechsel des Oberbürgermeisters wieder rückgängig gemacht. Es gibt
-Spekulationen, dass dies mit dem Umzug der Zentrale von Microsoft Deutschland nach München und dem
-stärkeren Einfluss des Konzerns zu tun hat.
+Als Beispiel wird die Münchener Stadtverwaltung genannt, die ihre IT auf Linux
+umgestellt hat. 2017 wurde diese Umstellung nach einem Wechsel des Oberbürgermeisters
+wieder rückgängig gemacht. Es gibt Spekulationen, dass dies mit dem Umzug der Zentrale
+von Microsoft Deutschland nach München und dem stärkeren Einfluss des Konzerns zu tun
+hat.
diff --git a/src/aufgaben/aufgabe_2.md b/src/aufgaben/aufgabe_2.md
index 55718d5..fb08113 100644
--- a/src/aufgaben/aufgabe_2.md
+++ b/src/aufgaben/aufgabe_2.md
@@ -2,4 +2,40 @@
Hausaufgaben A2 bis 03.4.:
+## Unix-Geschichte
+Bell Labs entwickelt zusammen mit dem MIT und General Electric ein
+Mainframe-Betriebssystem namens Multics.
+
+**1969** Ken Thompson, der an Multics gearbeitet hatte, entschließt sich dazu, sein
+eigenes Betriebsssytem zu entwickeln. Das neue Betriebssystem wurde Unix genannt, da es
+deutlich kleiner und einfacher als Multics war. Entwickelt wurde es auf dem Minicomputer
+[PDP-7]([PDP-7 - Wikipedia](https://en.wikipedia.org/wiki/PDP-7)).
+
+**1974** Thompson und Ritchie veröfffentlichten einen Artikel über Unix und stellten den
+Quellcode der nun fünften Version frei zur Verfügung. Unix stieß bei Universitäten auf
+großes Interesse, sodass einige von ihnen an eigenen Versionen des Projekts arbeiteten.
+Beispielsweise veröffentlichte die University of California in Berkley 1979 die
+BSD-Version von Unix.
+
+**1978** Unix wird das erste Betriebssystem, das für 32bit-Rechnerarchitekturen
+verfügbar ist.
+
+**1983** AT&T veröffentlicht die kommerzielle Unix-Version SystemV, nach dem sie als
+Nachfolger der Bell Labs das Projekt übernommen hatten.
+
+**1984** Siemens veröffentlicht die Unix-Variante SINIX.
+
+**1986** Der POSIX (Portable Operating System based on UNIX) Standard wird etabliert.
+POSIX spezifiziert die Programmierschnittstelle zwichen Betriebssystem und Anwendungen
+und sorgt dafür, dass die verschiedenen Unix-Derivate miteinander kompatibel sind.
+
+**1992** GNU/Linux wird veröffentlicht.
+
+**2000** Apple veröffentlicht das Open Source-Betriebssystem Darwin, basierend auf
+NeXTSTEP, BSD und dem Mach Kernel. Das Betriebssystem wird zur Grundlage von Apple's
+proprietären Betriebssystemen macOS und iOS.
+
+### Quellen
+
+- Geschichte des Unix-Systems
diff --git a/src/aufgaben/aufgabe_3.md b/src/aufgaben/aufgabe_3.md
new file mode 100644
index 0000000..3bb8dee
--- /dev/null
+++ b/src/aufgaben/aufgabe_3.md
@@ -0,0 +1,168 @@
+# Aufgabe 3
+
+## Code-Reading: Jellyfin
+
+Was steht in der README.md?
+
+> - Kurze Bescheibung des Projekts
+> - Links zur Dokumentationsseite
+> - Übersetzungsstatus
+> - Anleitung zum Aufsetzen der Entwicklungsumgebung
+
+Projekt aktiv oder verwaist? Wie aktiv war es in letzter Zeit?
+
+> Jellyfin wird aktiv entwickelt, der letzte Commit ist unter 24 Stunden alt.
+
+Wer hat es sich ursprünglich ausgedacht?
+
+> Jellyfin ist ein Fork des Emby Media Servers unter der Leitung von Joshua Boniface.
+
+Wer ist der aktuelle Maintainer?
+
+> Joshua Boniface
+
+Wo wird das Projekt gehostet? (z.B. Github, Gitlab, Savannah https://savannah.gnu.org)
+
+
+Gibt es eine Homepage?
+
+Für welche Betriebssysteme ist es geeignet?
+
+> Server: Linux, Windows, MacOS Client: Web, Linux, Windows, MacOS, Android, iOS, Roku
+
+Unter welcher Lizenz steht das Programm?
+
+> GPL 2.0
+
+Ist es ein Kommandozeilen- oder Grafikprogramm?
+
+> Jellyfin Server ist eine Webanwendung.
+
+Wie lange existiert es?
+
+> Emby existiert seit 2015, der Fork Jellyfin wurde 2018 als Reaktion auf die
+> Veröffentlichung von Emby 4 unter einer proprietären Lizenz erstellt.
+
+Wie viele haben in etwa daran gearbeitet?
+
+> 880 Beitragende für das Backend, 1300 Beitragende für die Web-UI
+
+Welche Programmiersprache(n) wird/werden verwendet? (Tipp:
+https://github.com/XAMPPRocky/tokei)
+
+> Backend: C#, Frontend: Javascript/Typescript
+
+Welches Konfigurations- bzw. Build-System wird verwendet?
+
+> Backend: dotnet SDK, Frontend: webpack
+
+Wird eine IDE zum Entwickeln verwendet?
+
+> Visual Studio Code, JetBrains ReSharper
+
+Gibt es eine Dokumentation, wenn ja, in welchem Textverarbeitungssystem wurde sie
+geschrieben?
+
+> Ja, die Dokumentationsseite () ist in Markdown geschrieben und
+> wird mit Docusaurus gebaut.
+
+Wie viele Anwender verwenden das Programm ungefähr? (schwer herauszubekommen)
+
+> Jellyfin beinhaltet keine Telemetrie, deswegen gibt es keine Nutzerzahlen. Stattdessen
+> habe ich andere andere Metriken zur Beliebtheit des Projekts aufgelistet:
+>
+> - 22k Stars auf Github
+> - 200M Pulls auf Docker
+> - das Jellyfin-Subreddit hat 45k Mitglieder
+
+Gibt es Abspaltungen ("forks")?
+
+> Jellyfin stellt einen Fork des Emby Media Servers dar. Von Jellyfin selbst gibt es
+> keine nennenswerten Forks. Es gibt jedoch ein Pluginsystem, um fehlende Features
+> hinzuzufügen (bspw. weitere Datenquellen, LDAP-Authentifizierung, Vorspann von Serien
+> automatisch überspringen etc.)
+
+Wie kann man mitmachen bzw. Änderungen einreichen?
+
+> - Übersetzungen können auf einer projekteigenen Weblate-Instanz eingegeben werden
+> - Codeänderungen werden über Pull Requests auf GitHub entgegengenommen
+
+Wie werden Branches in Git verwendet? (git Workflow bei der Entwicklung)
+
+> - Änderungen von Teammitgliedern werden in eigenen Feature-Branches geführt und
+> anschließend in den Master-Branch gemerged.
+> - Für jedes Feature-Release wird ein eigener Branch angelegt (z.B. `release-10.8.z`).
+
+Wie kann man das Programm installieren? (selber kompilieren, binary, snap, appimage,
+container, ...)
+
+> - Selbst mit dotnet SDK und webpack kompilieren
+> - Binary (Download von der Webseite)
+> - deb/rpm-Package von Jellyfin's eigenem Repository
+> - Container: offizielle Version von Jellyfin (`jellyfin/jellyfin`),
+> linuxserver.io-Version (`linuxserver/jellyfin`)
+
+In welcher Sprache sind die Meldungen des Programms verfasst, z.B. Englisch, Deutsch,
+Chinesisch? Gibt es eine Internationalisierung in verschiedenen Sprachen (z.B. GNU
+gettext)?
+
+> Jellyfin ist in 84 Sprachen übersetzt. Die Internationalisierung wurde mit
+> JSON-Dateien realisiert, auf eine spezielle Library wie gettext wurde verzichtet.
+> Übersetzungen können auf einer eigenen Weblate-Instanz vorgenommen werden und werden
+> automatisch in die Repositories eingepflegt.
+
+## Projekte und Organisationen mit Open- im Namen
+
+- OpenStreetMap (Durch Crowdsourcing erstellte Weltkarte unter der Open Database
+ License)
+- Open Office (freie Office-Suite, aktuell als Fork _LibreOffice_ weitergeführt)
+- OpenGL (Plattformunabhängige Grafikbibliothek)
+- OpenSearch (von AWS entwickelter Fork von ElaticSearch nach deren Wechsel zur SSPL
+ Lizenz)
+- OpenAI (bis auf wenige Ausnahmen wie Whisper ist deren Software proprietär, der Name
+ deswegen irreführend)
+
+## Freemium
+
+Freemium ist ein Kofferwort aus den Begriffen "Free" und "Premium" und bezeichnet ein
+kostenfreies nutzbares Produkt, das mit kostenpflichtigen Angeboten aufgewertet werden
+kann.
+
+Dieses Geschäftsmodell ist bei Software sehr beliebt, da viele Nutzer nicht dazu bereit
+sind, initial für Software zu bezahlen. Hat der Nutzer die Software jedoch in seinen
+Workflow oder sein Leben integriert, ist er viel eher dazu bereit, für mehr Features zu
+bezahlen.
+
+Das Freemium-Konzept existiert auch bei einigen kommerziellen Open-Source-Projekten.
+Hierbei wird die kostenfreie Basisanwendung unter einer Open Source Lizenz
+veröffentlicht, während der Quellcode für die kostenpflichtige Premiumversion entweder
+geschlossen bleibt oder unter einer proprietären Lizent veröffentlicht wird
+(source-available).
+
+Zu den kostenpflichtigen Features gehörten oft solche Features, die vorwiegend von
+Unternehmen eingesetzt werden (bspw. Single Sign On oder eine erweiterte
+Benutzerrechteverwaltung).
+
+Beispiele für Freemium-Open-Source-Projekte sind JetBrains IntelliJ/PyCharm sowie
+Gitlab.
+
+## Artikel: Steuermillionen für Hobbyprojekte
+
+- Das Projekt "Sovereign Tech Fund" fördert ausgewählte Open-Source-Projekte
+- STF erhielt bis Ende 2023 13 Millionen Euro vom Wirtschaftsministerium
+- Webseite des Projekts:
+- Geförderte Projekte:
+ - RubyGems (Paketmanager für Ruby)
+ - OpenBGPd (offene Implementation des Border Gateway Protocol für Internetrouter)
+ - OpenSSH (Tool zur Fernsteuerung und zum Datenaustausch mit anderen Rechnern im
+ Netzwerk)
+ - curl (HTTP-Client)
+ - OpenMLS (Library für End2End-verschlüsselte Nachrichtenübertragung)
+ - Sequoia PGP (Rust-Implementierung der PGP-Verschlüsselungssoftware)
+ - OpenPGP.js (Javascript-Implementierung der PGP-Verschlüsselungssoftware)
+ - Fortran Package Manager
+ - WireGuard (VPN-Software)
+- Es wurden keine innovativen Prestigeprojekte gefördert, sondern Projekte, die wichtige
+ Bestandteile von IT-Infrastruktur darstellen.
+- Mangelnde Pflege dieser Komponenten kann zu flächendeckender Verwundbarkeit von
+ IT-Systemen führen, was durch die Log4Shell-Vulnerability deutlich wurde.