
\chapter{Charta f"ur Paketentwickler}

\section{Vorwort}

    Als Entwickler eines \eisfair\-Paketes sollte man einige Grundregeln
    beachten, um den Ideen und der Philosophie des eisfair-Projektes gerecht
    zu werden. Dazu bietet sich als erstes die Vorstellung von \eisfair\ aus
    dem Oktober 2002 an:

\begin{quote}\begin{small}

    \eisfair\ ist ein einfach zu installierender Internet-Server, der als
    zugrundeliegendes Betriebssystem Linux verwendet. Es wird ausschliesslich
    freie Software verwendet. Die Installation und der Betrieb von \eisfair\
    setzen jedoch keine Linux-Kenntnisse voraus und ist mit einfachen und
    -- besonders wichtig -- einheitlichen Mitteln m"oglich.

    \eisfair\ soll keine weitere Linux-Distribution sein, davon gibt es schon
    viel zu viele. Intention ist die Installation eines Internet-Servers,
    bei dem die angebotenen Applikationen und Dienste im Vordergrund stehen
    sollen -- nicht das Betriebssystem.

    Ein durchschnittlicher Anwender wird durch die enorme Funktionsvielfalt
    einer modernen Linux-Installation (wie z.B. SuSE) regelrecht erschlagen
    und ist schon bei der Auswahl der n"otigen Pakete schlichtweg "uberfordert.
    Genau hier soll \eisfair\ den Anwender unterst"utzen. Die f"ur Linux/Unix
    verf"ugbaren Applikationen zeichnen sich dadurch aus, dass sie einerseits
    sehr ausgereift sind und stabil laufen, andererseits jedoch alle
    verschieden zu installieren und zu konfigurieren sind. Hier wurde f"ur
    jedes Software-Paket ein eigenes S"uppchen gekocht. Die f"ur \eisfair\
    angebotenen Anwendungen verf"ugen "uber eine einheitliche
    Konfigurationsschnittstelle, so dass sich der Aufwand f"ur die
    Einarbeitung/Konfiguration auf ein Minimum reduzieren l"asst.

    Um dies mit den verf"ugbaren Applikationen f"ur Linux zu realisieren,
    wurde in die Konfigurationsschnittstelle zwischen \eisfair\-Systemverwalter
    und den jeweiligen Applikationen eine Schicht eingef"ugt, welche eine
    typische \eisfair\-Konfiguration in die applikationsspezifischen
    Konfigurationen der jeweiligen Dienste (z.B. eines Mailservers) umsetzt.
    Damit wird der Einsatz von g"angigen Internet-Diensten m"oglich, ohne
    dass sich der Verwalter eines \eisfair\-Systems mit der ("ubrigens auch
    sehr heterogenen) Dokumentation eines konkreten Programms
    auseinandersetzen muss. Dass eventuell dabei Abstriche bei speziellen
    Anforderungen gemacht werden m"ussen, weil nicht jedes Feature eines
    Programms allgemein umgesetzt werden kann oder wird, ist ein Nachteil,
    der jedoch hinnehmbar ist, wenn die Funktionalit"at einer typischen
    Serverumgebung ausreichend ist.

    Die \eisfair\-Konfiguration wird auf ASCII-Dateien abgebildet, die
    einem einheitlichen Format unterliegen. Sie entsprechen im
    wesentlichen einer Konfigurationsdatei, wie sie im  \link{http://www.fli4l.de}{\fli\-Projekt}
    verwendet wird. Eine graphische
    Benutzeroberfl"ache ist in Entwicklung. Mit dieser wird man zuk"unftig
    die \eisfair\-Applikationen "uber ein Web-Interface konfigurieren k"onnen.
    Nichtsdestotrotz ist jederzeit die Bearbeitung der ASCII-Dateien mit
    einem normalen Editor m"oglich.

\end{small}\end{quote}

    {\small \textit (Text gek"urzt, der vollst"andige Text kann der
    \eisfair\-Benutzerdokumantation entnommen werden)}


\section{Welche Software ist f"ur \eisfair\ geeignet?}

    Zun"achst sollte man sich "uberlegen, ob das geplante \eisfair\-Paket
    "uberhaupt zum \eisfair\-Konzept passt, d.h. mit diesem harmoniert. Ist
    das der Fall, m"ussen einige "Uberlegungen angestellt werden, wie das
    Paket f"ur \eisfair\ portiert werden kann.

    Da \eisfair\ selbst keine weitere Linux-Distribution sein soll, sondern
    explizit als Server\-system ausgelegt ist, eignen sich grunds"atzlich die
    f"ur Linux verf"ugbaren Server-Applikationen. Klassische Client-Software
    wie ein Office-Paket (z.B. OpenOffice) oder ein Webbrowser (z.B.
    Fire\-Fox) scheiden daher aus. Auch X11 sowie Pakete wie KDE oder Gnome
    sind prim"ar als Client-Userinterface ausgelegt und eignen sich somit
    nicht als \eisfair\-Pakete.

    Ebenso sind Pakete wie ein komplettes LAMP ("`Linux, Apache, MySQL,
    PHP"') nicht als Ganzes f"ur eisfair geeignet. \eisfair\ ist modular
    aufgebaut, daher sollten solche Applikationen auch als eigene
    Programmpakete angeboten werden. Tats"achlich existieren f"ur \eisfair\
    die oben aufgef"uhrten Pakete bereits seit langer Zeit. Eine Kombination
    der Einzelpakete Apache, MySQL und PHP ist hier viel flexibler und
    leichter zu beherrschen.

    Da \eisfair\ selbst komplett auf freier Software basiert, passen sicher
    auch freie Applikationen am besten zu \eisfair. Bei der Verwendung von
    nicht-freien Applikationen in einem Paket muss unbedingt darauf
    geachtet werden, dass der Inhaber der Rechte an dieser Software eine
    Weiterverbreitung als \eisfair\-Paket auch gestattet. Zus"atzlich muss
    die Frage gekl"art werden, wie mit einer eventuellen Einzellizensierung
    umzugehen ist.


\section{Portierung einer Server-Applikation auf \eisfair}

    Die wichtigste Regel, die bei der Umsetzung eines Paketes zu beachten
    ist: die Installation, Konfiguration und die Bedienung der Applikation
    muss m"oglichst einfach sein. Dies dr"uckt insbesondere der erste Buchstabe
    von \eisfair\ aus: \textbf{ "`EASY - f"ur den Anwender!"'}. Dabei sollte man
    auf exotische Konfigurationen, welche die Server-Anwendung leisten
    k"onnte, aber die Konfiguration des Paketes verkomplizieren w"urde,
    besser verzichten. Wenn der Grossteil der potentiellen Anwender mit dem
    Standardumfang arbeiten kann, sollte man solche "`Schmankerl"' weglassen.
    Es sollte also nicht unbedingt jede erdenkliche Funktion der Basissoftware
    unterst"utzt werden. Im Zweifelsfall geht eine einfache Konfiguration
    vor. Anhand des Feedbacks der User l"asst sich im Laufe der Zeit viel
    besser feststellen, welche Features tats"achlich ben"otigt werden. Diese
    Features ko"nnen dann Schritt f"ur Schritt in das Paket eingearbeitet
    werden und lassen zudem das Leben des Projektes erkennen.

    Einfache und "ubersichtliche Konfigurationen sind die
    Grundvoraussetzungen f"ur ein \eisfair\-Paket. Dabei muss unbedingt die
    \eisfair\-Konfigurationsschicht beachtet werden. Diese darf unter
    keinen Umst"anden umgangen werden. Das Paket muss sich m"oglichst nahtlos
    ins Gesamtsystem integrieren. Untergr"abt man als Entwickler die
    Philosophie von eisfair, wird die ganze Idee, die hinter \eisfair\
    steckt, hinf"allig. In diesem Fall ist f"ur den Paketentwickler eine
    Standard-Linux-Distribution besser geeignet.

    Neben der Konfiguration sollte man auch der Installation des
    \eisfair\-Paketes ein gr"osseres Augenmerk widmen. Die Installation
    sollte m"oglichst einfach, geradlinig und performant "uber die B"uhne
    gehen. Es sollte auch auf jeden Fall vermieden werden, einen Reboot des
    \eisfair\-Servers zu erzwingen. Ein Server zeichnet sich durch seine
    Verf"ugbarkeit aus. Ist ein Reboot des Servers notwendig, um die
    Software zu initialisieren, wird diese Grundregel verletzt. Ausnahmen
    kann es nat"urlich geben, sie sollten jedoch vermieden werden.

    Wichtig ist auch die M"oglichkeit, ein Update eines Paketes installieren
    zu k"onnen. Dabei muss auf Abw"artskompatibilit"at geachtet werden.
    Bisherige Konfigurationen sollten bei einem Package-Update soweit wie
	m"oglich "ubernommen werden. Das beinhaltet auch die korrekte Handhabung
	mglw. entfallener oder umbenannter Konfigurationsparameter. Das Paket muss
	ebenso vom Anwender beliebig oft installiert werden k"onnen, ohne dass sich
    dabei pl"otzlich Dubletten von Daten/Konfigurationen einstellen. Der
    Paketentwickler muss also jederzeit damit rechnen, dass der Anwender
    das Paket im Falle einer Fehlfunktion "`dr"uberinstalliert"'. Installiert
    werden die Pakete f"ur \eisfair\ grunds"atzlich "uber das
    \eisfair\-Setup-Men"u. Eine davon abweichende Installation ist nicht
    erlaubt!

    Genauso wichtig wie die Entwicklungsarbeit, die man in die Portierung
    eines \eisfair\-Paketes steckt, ist auch die Erstellung einer
    entsprechenden Dokumentation. Diese sollte man nicht vernachl"assigen.
    Eine der wichtigsten S"aulen von \eisfair\ ist die Dokumentation. Man
    sollte mindestens die Zeit, die f"ur die Portierung der Applikation auf
    \eisfair\ ben"otigt wurde, auch in die Erstellung der Dokumentation
    stecken. Je besser das Handbuch ist, desto gr"osser wird die Akzeptanz
    der Anwender.


\section{QUALIT"AT - Pflichten eines Paketautors}

    Die Einhaltung der in diesem Dokument aufgef"uhrten Richtlinien dient
    der Sicherstellung eines gewissen Qualit"atsniveaus. Die Stabilit"at und
    die Qualit"at von \eisfair\ steht und f"allt mit der Disziplin des
    Paketautors.

    Mit der Ver"offentlichung eines \eisfair\-Paketes endet jedoch
    nicht die T"atigkeit des Entwicklers. Dieser sollte auch gegen"uber den
    Anwendern eine gewisse Verantwortung zeigen. Dazu geh"ort neben der
    kontinuierlichen Pflege des Paketes auch die Bereitschaft, Support zu
    bieten. Sollte das die M"oglichkeiten des Entwicklers "uberschreiten,
    sollte sich dieser nach Personen umsehen, die bereit sind,
    entsprechenden Support zu leisten. Nichts ist f"ur einen Anwender
    schlimmer, als wenn er auf sich alleine gestellt ist.

    Zur Pflege des Paketes geh"oren selbstverst"andlich auch Bugfixes.
    \eisfair\ soll nicht nur "`Easy"' sein, sondern auch sicher.
    Werden Sicherheitsl"ucken in der Software bekannt, sollte der Entwickler
    diese schliessen und ein Update zur Verf"ugung stellen. Es ist niemandem
    gedient, einen Server zu betreiben, der L"ocher wie ein Schweizer K"ase
    hat.


\section{Urheberrechte}

    Der Entwickler hat neben seinen Pflichten nat"urlich auch Rechte -
    n"amlich zumindest die Urheberrechte an seiner Portierung. Da \eisfair\
    als Plattform grunds"atzlich auf der Basis von freier Software steht,
    sollte man - wenn m"oglich - auch sein Paket als freie Software
    deklarieren, d.h. unter die GNU PUBLIC LICENSE (siehe
    http://www.gnu.org/), kurz "`GPL"', stellen. Am besten deklariert man
    dies in s"amtlichen selbst erstellten Klartext-Dateien (Konfigurationen,
    Shell-Scripts usw.) durch einen entsprechenden Absatz als Kommentar.
    Beispiele daf"ur findet man unter \eisfair zuhauf, z.B. in den
    Konfigurationsdateien unter \texttt{ /etc/config.d}.

    Ist es aus urheberrechtlichen Gr"unden nicht m"oglich, das Paket unter
    die GPL zu stellen, sollte man dies auch klarstellen. Das sollte am besten
    bereits bei der Installation geschehen. Viele Anwender legen Wert
    darauf, ausschliesslich freie Software zu verwenden. Dieses Anliegen
    sollte man als Paketentwickler auf jeden Fall respektieren.

So, genug der Vorrede, jetzt geht es ans Eingemachte: Viel Spass bei der
Lekt"ure dieser Dokumentation und dann ... beim Entwickeln :-)

Frank Meyer, im Juni 2005

"Uberarbeitet, aktualisiert und erweitert vom eisfair-Team 2011
