7.1 KiB
Aufgabe 3
Hausaufgaben A2 bis 11.4.:
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 ElasticSearch 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.
Lizenz-Quiz
- Welche Open-Source-Lizenz verlangt, dass Code auf private oder akademische Projekte
beschränkt bleibt?
Keine
- Bei welcher Lizenz muss das ganze Programm unter dieser Lizenz veröffentlicht werden,
wenn so lizenzierter Code eingebettet wird?
GPL und MPL
- Falls Open Source ein Patent verletzt, gegen wen kann der Patenteigentümer Ansprüche
geltend machen?
Entwickler und Integratoren
- Welche der Open-Source-Lizenzen verlangt, dass solchen Code enthaltenden Produkte den
Lizenztext mit ausliefern?
GPL, BSD und MPL
- Jemand veröffentlicht ein Code-Snippet. Unter welchen Umständen kann ein Dritter das
Snippet gefahrlos integrieren?
Wenn der Veröffentlicher explizit auf die Lizenz hinweist
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.