1   Anregung: Suche nach Videos

Suchen Sie begleitend zur Vorlesung im Internet nach weiterführenden Informationen, die gerne in multimedialen Formaten sein dürfen: Vortragsvideos ("Tech Talks"), Filme (z.B. Youtube), gefilmte Vorlesungen, freie Hochschulskripte, Screencasts, Podcasts, eBooks, Wikipedia Einträge, Wikibooks und ähnliches. Bitte achten Sie darauf, nur freies Material zu nehmen. Diese Aufgabe sollen Sie bis zum Semesterende als "Hintergrundprozess" bearbeiten. Ich möchte die gefundenen Informationen auch auf meiner Homepage anderen zur Verfügung stellen.

Beispiele (beide auf Youtube - bitte mit Google suchen):

  • Linus Torvalds on git.
  • Carsten Dominik, Emacs Org-mode - a system for note-taking and project planning.

2   Was ist freie Software?

Bitte lesen Sie: Volker Grassmuck, "Was ist freie Software, wie entsteht sie, wer macht sie?" (S. 233 - 258), in http://freie-software.bpb.de/vgrass.html. Erarbeiten Sie sich die folgenden Themen:

  1. Quellcode und Objektcode
  2. Wie funktioniert ein Projekt der freien Software?
  3. Core-Team und Maintainer
  4. Die Community
  5. Entscheidungsfindung: »rough concensus and running code«
  6. Code-Forking
  7. Die Werkzeuge
  8. Debugging
  9. Freie Software als Prozess, nicht als Produkt.
  10. Die Motivation (S. 252/253)
  11. Softwarezyklus: Entwickler, Power-User, Endnutzer

3   "Four Freedoms" Video

Sehen Sie sich das Video von Richard Stallman auf Youtube an: What is free software?

http://www.youtube.com/watch?v=uJi2rkHiNqg

Er dauert etwa zwei Minuten. Notieren Sie sich die Kernaussagen.

4   Eigene Softwareverwendung analysieren

Machen Sie eine tabellarische Aufstellung der Softwareprogramme, die Sie häufig im Alltag und im Studium auf dem PC oder Notebook verwenden. (Die Programme auf dem Smartphone interessieren nicht). Halten Sie sich in etwa an folgendes Beispiel:

Name     |    Zweck     |     OS    |    Lizenz   |  FLOSS
---------+--------------+-----------+-------------+--------
Firefox    WWW Browser     Win/Lin        MPL        ja
IExplorer  WWW Browser     Win           MS EULA     nein
...

5   Volker Grassmuck: Geschichte der Softwareentwicklung

Bitte lesen Sie:

Beantworten Sie folgende Fragen zum Text:

  1. Wurde in der Frühzeit der Computer Software auch schon als kommerzielle Ware betrachtet?
  2. Worum dreht sich der "Open Letter to Fellow Hobbyists" Brief von Bill Gates?
  3. Wann kam der PC auf den Markt? Von welcher Firma stammt er?
  4. Welches Betriebssystem war vor MSDOS weit verbreitet?
  5. Wie hat Microsoft sein "Imperium" über die Jahre erweitert?
  6. Was versteht man unter dem "Infoware Paradigma" von Tim O'Reilly.
  7. Ist Ihrer Meinung nach Software ein Produktmarkt oder ein Dienstleistungsmarkt?
  8. Wie entstand UNIX?
  9. Wie entstand das GNU Projekt?
  10. Was versteht man unter der "Hacker Ethik"? Was versteht man heute unter einem "Hacker"?
  11. Was beinhaltet das "GNU Manifest"?
  12. Wie entstand GNU/Linux?
  13. Wie und wann wurde der Begriff "Open-Source Software" geprägt?

6   Aus der Open-Source-Geschichte lernen

Lesen Sie den zweiteiligen Artikel von Gundolf S. Freyermuth: "Aus der Open- Source-Geschichte lernen", erschienen im c't Magazin. Sie finden die Texte hier:

Beantworten Sie die Klausuraufgaben, die ich sehr häufig zu diesem Text stelle. Alte Klausuren finden Sie hier:

http://hhoegl.informatik.hs-augsburg.de/hhweb/oss/Klausuren/

7   GNU: Configure, Make, Install

Holen Sie sich vom GNU Softwareverzeichnis ftp://ftp.gnu.org/pub/gnu ein Paket Ihrer Wahl - zum Beispiel das Paket bc, das ich in der Vorlesung gezeigt habe. Entpacken und installieren Sie es auf Ihrem Linux Betriebssystem. Bearbeiten Sie folgende Punkte:

  • Was macht das Programm?

  • Wie startet man das Programm?

  • Wo ist die Dokumentation des Programmes und wie liest man sie?

  • Wie kann man alle Kommandozeilenoptionen anzeigen?

  • Was macht folgende Konfigurations-Option:

    ./configure --prefix=/mein/pfad/

8   GNU: GNU Standards

Schauen Sie sich das GNU Manual zum Thema "Standards" an. Das Kommando info standards sollte zum Ziel führen. Sehen Sie sich darin die folgenden Themen an:

  • Program Behavior
  • Writing C
  • Managing Releases

Finden Sie heraus, zu welchem Zweck die Dateien README, ChangeLog, NEWS, Makefile und configure vorhanden sind.

Auf einem Debian Linux -- oder Verwandten wie Knoppix, Ubuntu, Kubuntu -- ist dieser Text im Paket gnu-standards enthalten.

9   OSS: GNU vs. OSS

Stellen Sie in einer Tabelle mit zwei Spalten die Freie Software (links) und die Open Source Software (rechts) gegenüber. Gehen Sie dabei nacheinander auf die Punkte (a) Gründungszeit, (b) Hauptinitiator, (c) Ziele, (d) zeitliche Entwicklung, (e) Lizenz(en), (f) wesentliche Erfolge und (g) Schwachpunkte ein. Welches Verhältnis haben beide zueinander?

10   OSS: Kathedrale

Lesen Sie "Die Kathedrale und der Bazaar" von Eric Raymond:

http://www.selflinux.org/selflinux/pdf/die_kathedrale_und_der_basar.pdf

Wie lauten die darin enthaltenen 19 Richtlinien für gute Code?

11   OSS: Lizenzen

Sehen Sie sich die Lizenz-Statistik von github an:

http://github.com/blog/1964-open-source-license-usage-on-github-com

Welches sind die beliebtesten Lizenzen?

Github möchte mehr Anwender zur Auswahl einer Lizenz bewegen. Aus diesem Grund gibt es http://choosealicense.com. Welche Lizenzen werden dort vorgestellt?

14   GNU Build System

14.1   Beispiel von Peter Novotnik

Sehen Sie sich die Sourcen des "autoconf" Beispiels von Peter Novotnik im Verzeichnis autotools_novotnik/ an. Vollziehen sie alle beschriebenen Schritte nach.

Sie können alles komplett im Archiv http://hhoegl.informatik.hs-augsburg.de/oss/aufgaben/autotools_novotnik.tar.gz herunterladen.

15   GNU Hello

Das GNU "Hello" Programm demonstriert die vielen Arbeitsschritte, die bei einem echten freien Softwarepaket zu erledigen sind:

http://www.gnu.org/software/hello/

Zitat:

"Yes, this is another implementation of the classic program that prints "Hello, world!" when you run it. Unlike the elementary version often seen, GNU Hello processes its argument list to modify its behavior, supports greetings in many languages, and so on. The primary purpose of this program is to demonstrate how to write other programs that do these things; it serves as a model for all of the GNU coding standards."

Bitte das Programm holen (aktuell verwende ich hello-2.7.tar.gz), entpacken, kompilieren, installieren (lokal in Ihr Home!) und untersuchen. In INSTALL finden Sie ein wenig Hilfe. Das Programm demonstriert unter anderem:

  • Automake/Autoconf
  • Installation
  • Lokalisierung mit gettext (intl/ und po/)
  • Preprozessor (m4)
  • Dokumentationsformate (texinfo, man-pages, help2man, texi2html)
  • GNU Software Standard (ChangeLog, NEWS, TODO, THANKS, COPYING, ...)
  • Tests
  • Contributed material (contrib/)

Sehen Sie sich zum besseren Verständnis auch die GNU Coding Standards an.

Fragen zu GNU Hello

  • Wie kompiliert und installiert man das Programm? Sehen Sie sich auch die Datei INSTALL an.
  • Wie findet man heraus, welche Optionen configure versteht?
  • Wie kann man es in das eigene Homeverzeichnis installieren?
  • Wo findet man die Dokumentation und in welchem Format liegt sie vor?
  • In welchen Formaten kann man daraus die Dokumentation erstellen?
  • Wie kann man die Dokumentation online lesen?
  • Wo ist die Man-Page und in welchem Format liegt sie vor?
  • Was ist in gnulib/?
  • Was ist in po/?
  • Wie kann man das Programm in eine andere Sprache schalten?

16   Diff und Patch

Legen Sie ein Verzeichnis a an mit beliebigen Quelltexten und anderen Dokumenten. Machen Sie eine Kopie b dieses Verzeichnisses mit cp -rv a b.

Machen Sie nun Änderungen in b. Mit Hilfe von diff und patch können Sie diese Änderungen auf a übertragen.

  • Erstellen Sie einen Patch, der die Informationen enthält, um von b nach a zu kommen.

Fragen:

  • Kann man einen Patch mit dem ASCII-Editor ansehen? Was steht drin?
  • Kann man in einen Patch Kommentare schreiben?
  • Was bedeuten die Optionen -Naur bei diff?
  • Was bedeutet die Option -p1 bei patch?
  • Installieren Sie das Paket diffstat und finden Sie heraus, was es macht.
  • Finden Sie einige grafische diff Werkzeuge.

Literatur:

17   Umfassendes Projekt

Hier ist eine Zusammenfassung von Tätigkeiten, die bei einem Projekt anfallen. Fallen Ihnen noch weitere ein?

  • Coding Styles (indent, astyle)
  • Editor (Vim, Emacs, XEmacs) oder IDE (KDevelop, Eclipse, Anjuta, Kate)?
  • Vim, Emacs, Editor Variablen
  • Ctags, Etags
  • C-File(s) erstellen
  • getopt, readline
  • Lokalisierung mit gettext
  • Quelltext durchwandern mit tags (vim, vim/tlist, emacs), cscope oder GNU Global
  • Libraries (static, dynamic): libtool
  • Debuggen mit gdb/ddd oder einer IDE (Eclipse, KDevelop, Anjuta, Emacs)
  • Sourcecode Analyse mit splint, lcov, gcov
  • Profiling mit gprof
  • Runtime debugger valgrind, electric fence, ccmalloc, dmalloc, mpatrol und andere
  • ChangeLog, README, INSTALL, Lizenz
  • Header in Quelltextfiles schreiben (Hinweis auf Lizenz, Copyright)
  • Kommentare aus Quelltext herausziehen mit doxygen
  • Man-Page (help2man, pod2man)
  • Texinfo docs, makeinfo
  • Makefile (clean, depend, build, tags, install)
  • OS Abhängigkeiten
  • autoconf/automake, autoproject (Demo Projekt "hammer" in autoproject/).
  • Verpacken in Source tar Archiv
  • Packen in Debian .deb oder Redhat .prm Paket (src, bin)
  • Versionierung
  • diff/patch, sdiff, diff3, vimdiff, Emacs ediff
  • Unit testing (http://check.sf.net, GNU autounit, CUnit)
  • Regression testing (dejagnu)
  • Versionskontrolle mit Subversion oder Git
  • Releaseplanung
  • Trac (issue/bug tracker, Wiki, SVN Viewer)

OssFragen (zuletzt geƤndert am 2017-03-29 07:04:48 durch HubertHoegl)