Compare commits

...

5 commits

Author SHA1 Message Date
fdfde540c8 Aufgabe 3
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
2023-04-24 19:53:17 +02:00
79132b8bf5 Merge remote-tracking branch 'origin/aufgabe3' 2023-04-24 19:01:36 +02:00
34e5ffc7bc Markdown formatiert, Aufgabe 2 2023-04-24 19:01:27 +02:00
3c5c0d3ed0 aufgabe3: open, freemium 2023-04-18 16:21:44 +02:00
efce3cfd4d aufgabe3: code reading 2023-04-18 15:34:55 +02:00
8 changed files with 295 additions and 63 deletions

1
.prettierignore Normal file
View file

@ -0,0 +1 @@
/book

4
.prettierrc Normal file
View file

@ -0,0 +1,4 @@
{
"printWidth": 88,
"proseWrap": "always"
}

View file

@ -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

View file

@ -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.

View file

@ -4,3 +4,4 @@
- [Aufgabe 1](./aufgaben/aufgabe_1.md)
- [Aufgabe 2](./aufgaben/aufgabe_2.md)
- [Aufgabe 3](./aufgaben/aufgabe_3.md)

View file

@ -4,69 +4,71 @@ 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<br />Pakete: hauptsächlich freie Lizenzen<br />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 (<https://www.kritische-informatik.de/index.htm?fshistl.htm> 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
(<https://www.kritische-informatik.de/index.htm?fshistl.htm> 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
@ -79,26 +81,29 @@ Richard Stallman erklärt die 4 Freiheiten von Freier 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.

View file

@ -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 <https://www.linux-praxis.de/geschichte-des-unix-systems>

168
src/aufgaben/aufgabe_3.md Normal file
View file

@ -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)
<https://github.com/jellyfin/jellyfin>
Gibt es eine Homepage? <https://jellyfin.org/>
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 (<https://jellyfin.org>) 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: <https://sovereigntechfund.de>
- 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.