Open-Source Software¶
Mi, 14:00 bis 15:30, 15:40 bis 17:10, W3.02
- Vergangene Semester: OSS24 | OSS23 | OSS22 | OSS21 |
OSS20 | OSS19 | OSS18 | OSS17 | OSS16 | OSS15 | OSS14 | OSS07
Links¶
Hausaufgaben: https://hhoegl.informatik.hs-augsburg.de/oss/aufg-25.html
Yopad: https://yopad.eu/p/oss25
Erste Veranstaltung im Sommer 2003: oss/etc/werbung.pdf
Moodle Kurs: https://moodle.hs-augsburg.de/course/view.php?id=9326
Anregung zum Schreiben der Hausaufgaben: Pandoc (Markdown), Sphinx (reST, Markdown, MyST, Quarto u.s.w. Wichtig ist, dass irgend eine Markup Sprache verwendet wird, so dass im Git Repo die Doku wie Quelltext verwaltet werden kann.
Material: Zeitungsartikel, Aufsätze, Buchkapitel, etc.
Das müssen Sie lesen: Vicky Brasseur, Forge Your Future with Open Source, Pragmatic Programmers 2018 (222 Seiten). Im Folgenden kürze ich das Buch mit [BRASSEUR] ab. Sie finden es in der Cloud.
Eine Sammlung freier Programme ist im „OSS-Wiki“ (von StudentInnen erstellt im Sommer 2022):
https://moodle.hs-augsburg.de/mod/wiki/view.php?id=255554.
Eine weitere (ältere) Zusammenstellung ist unter OssProgramme.
Prüfungsvorbereitung
Grobe Gliederung¶
Es geht mir bei der Veranstaltung darum, dass Sie ein paar Grundlagen in folgenden Themengebieten im Laufe der Zeit gewinnen. Stellen Sie sich vor, sie müssen in einem zukünftigen Job zum ersten Mal ein freies Softwareprojekt managen, dann sollte der Kurs ihnen die passenden Grundlagen vermittelt haben. Gerne bin ich offen für Anregungen, was Sie für wichtig halten!
Definition der Begriffe „freie Software“ und „offene Software“
Warum gibt man den Quelltext überhaupt freiwillig her, wo doch die klassische kommerzielle Verhaltensweise immer genau das Gegenteil ist (weggesperrte Software im Safe sind fuer manche wie „Goldbarren“).
Vor- und Nachteile von offener und geschlossener Software
Ein paar Einblicke in die geschichtliche Entwicklung (auch die Voraussetzungen zur Entstehung von OSS)
GNU Software und die Free Software Foundation (FSF)
Die Open-Source Bewegung
Wo wird freie und offene Software verwendet? (typische Anwendungsbereiche)
Wie macht man freie und offene Software? Regeln, Werkzeuge, kollaboratives Arbeiten mit git
Aufbauen von Gemeinschaften („community building“)
Beispiele von erfolgreichen OSS-Projekten
Ein wenig Urheberrecht und die wichtigsten Lizenzen
Zusammenstellungen von freien Programmen
Anwendungsbereiche der offenen Denkweise, die ausserhalb der Softwareentwicklung liegen, z.B. Open-Innovation
Geschäftsmodelle mit freier Software (wie kann ich damit Geld verdienen?)
Eine genauere Gliederung ist in OssGliederung.
Geschichtliches¶
Im Buch von Grassmuck finden Sie einen gut lesbaren Abschnitt zur Geschichte der Softwareentwicklung, siehe die Lesetipps unter
https://hhoegl.informatik.hs-augsburg.de/oss/grassmuck.html.
In der erweiterten Gliederung ist auch ein Abschnitt über die historische Entwicklung:
Sehr lesenswert: Brian W. Kernighan, UNIX - A History and a Memoir, 2020. Gibt es auch in Deutsch als „Die UNIX-Story“ im dpunkt Verlag. (siehe Cloud)
Code Reading¶
FOSS Programme analysieren („Code Reading“)
Was steht in der README.md?
Projekt aktiv oder verwaist?
Wer hat es sich ursprünglich ausgedacht?
Gibt es einen BDFL?
Wer ist der aktuelle Maintainer?
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?
Unter welcher Lizenz steht das Programm?
Ist es ein Kommandozeilen- oder Grafikprogramm?
Wie lange existiert es?
Wie viele haben in etwa daran gearbeitet?
Welche Programmiersprache(n) wird/werden verwendet? (Tipp: https://github.com/XAMPPRocky/tokei)
Welches Konfigurations- bzw. Build-System wird verwendet?
Wird eine IDE zum Entwickeln verwendet?
Gibt es eine Dokumentation, wenn ja, in welchem Textverarbeitungssystem wurde sie geschrieben?
Wie viele Anwender verwenden das Programm ungefähr? (schwer herauszubekommen)
Gibt es Abspaltungen („forks“)?
Wie kann man mitmachen bzw. Änderungen einreichen?
Wie aktiv war es in letzter Zeit?
Wie werden Branches in Git verwendet? (git Workflow bei der Entwicklung)
Wie kann man das Programm installieren? (selber kompilieren, binary, snap, appimage, container, …)
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)?
und so weiter…
Vorschläge für Programme sind unter https://hhoegl.informatik.hs-augsburg.de/oss/codereading.txt