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.