
\section{Zweck des Dokuments}
\label{sec:orgf75a1ef}
Im Rahmen einer Diplomarbeit an den IBZ-Schulen soll die Grundlage für ein neues
Open-Source-Projekt geschaffen werden, sowie die Entwicklung der dazugehörigen
Backup-Applikation gestartet werden. Die Applikation soll es normalen Usern
ermöglichen mit der Backup Software BorgBackup zu interagieren.

Das Dokument dient als Grundlage für die Freigabe der Diplomarbeit.

\section{Ausgangslage}
\label{sec:org099face}
Das Open-Source-Projekt BorgBackup\footcite{borgbackup} entwickelt eine
Backup-Software welche es einem ermöglicht Backups auf ein externes Laufwerk
oder einen externen Server zu machen. Für externe Server die man nicht selber
kontrolliert unterstützt BorgBackup auch eine starke Verschlüsselung. Als
weiteres wichtiges Feature unterstützt BorgBackup auch Deduplikation auf Block
Ebene was es einem erlaubt sehr viele Snapshots zu haben ohne das der Speicher
allzu fest wächst. Des Weiteren erlaubt die Deduplikation von BorgBackup dem
User grosse Dateien zu bearbeiten ohne das bei einem weiteren Backup die ganze
Datei erneut gespeichert werden muss. Es werden dann nur die effektiv
veränderten Blöcke gespeichert.

Als freie Software und aufgrund der interessanten Features wäre BorgBackup auch
für weniger erfahrene User sehr nützlich. Leider gibt es für BorgBackup zurzeit
kein klassisches grafisches User Interface mit dem ein User interagieren kann.
BorgBackup wird komplett über die Kommando-Zeile gesteuert.

Aus diesem Grund soll der Student im Rahmen der Projektarbeit eine grafische
Oberfläche für BorgBackup entwickeln.

BorgBackup stell keine direkte API im Python Code für externe Applikationen zur
Verfügung. Allerdings gibt es einen Kommandozeilen-Parameter, mit welchem der
Output im JSON Format zurückgegeben wird. Die Entwickler raten dazu, BorgBackup
direkt über die Kommandozeilen Befehle anzusteuern und anschliessend den JSON
Output zu parsen.\footcite{jsonapi}

\section{Projektrahmenbedingungen}
\label{sec:org3cb682f}

Das Projekt ist im Rahmen einer Diplomarbeit an den IBZ-Schulen zu realisieren.
Daraus ergeben sich Ansprüche an:

\begin{enumerate}
\item Komplexität des Vorhabens
\item Umfang des Vorhabens (250 Stunden)
\end{enumerate}

Die Begleitung der Diplomarbeit ist durch die IBZ sichergestellt.

Als nebenläufiges Ziel soll mit dieser Arbeit auch die Verbreitung von freier
Software gefördert werden. Dies wird insbesondere dadurch erreicht, dass die
Software selbst unter der GNU Public License Version 3\footcite{gplv3}
veröffentlicht wird. Wenn möglich sollen während der Entwicklung auch
hauptsächlich freie Software verwendet werden. Die gesamte Arbeit wird zudem zu
jedem Zeitpunkt öffentlich einsehbar sein. Der Quelltext der Dokumentation ist
bereits unter diesem Link erreichbar: \url{https://git.2li.ch/Nebucatnetzer/thesis}

Das Repository für den Code der Applikation wird während der Umsetzung erstellt.
Die Dokumentation und der Code werden in getrennten Repositorys veröffentlicht,
da das Projekt auch nach der Abgabe weiter existieren soll.

Die Entwicklung wird hauptsächlich auf einem Linux System stattfinden. Da
BorgBackup einerseits hauptsächlich auf Unix Systeme ausgelegt ist und
anderseits die Hauptzielgruppe des Projektes auch auf Linux Usern liegt.
Trotzdem sollen im Projekt Cross-Plattform fähige Technologien eingesetzt werden
damit es in der Zukunft möglich ist das Projekt auf andere Plattformen
auszuweiten.

Bugs von BorgBackup welche während der Dauer der Diplomarbeit vom Studenten
entdeckt werden, wird dieser dem Projekt melden jedoch nicht selber beheben.

\section{Zielsetzung}
\label{sec:orgbdf8d15}
\begin{longtable}{|p{9cm}|p{1.5cm}|p{2cm}|}
\hline
\textbf{Zielsetzung}\cellcolor[HTML]{C0C0C0} & \textbf{Muss}\cellcolor[HTML]{C0C0C0} & \textbf{Wunsch}\newline (1-5, 5=sehr wichtig)\cellcolor[HTML]{C0C0C0}\\
\hline
\endfirsthead
\multicolumn{3}{l}{Fortsetzung von vorheriger Seite} \\
\hline

\textbf{Zielsetzung}\cellcolor[HTML]{C0C0C0} & \textbf{Muss}\cellcolor[HTML]{C0C0C0} & \textbf{Wunsch}\newline (1-5, 5=sehr wichtig)\cellcolor[HTML]{C0C0C0} \\

\hline
\endhead
\hline\multicolumn{3}{r}{Fortsetzung nächste Seite} \\
\endfoot
\endlastfoot
\hline
Die Anwendung setzt auf Cross-Plattform (Linux, Windows, OSX) fähige Technologien. & X & \\
\hline
Die Anwendung steht unter der GPLv3 der Öffentlichkeit zur Verfügung. & X & \\
\hline
Der User kann mit weniger als 3 Klicks ein Backup ausführen. & x & \\
\hline
Der User kann ein Archiv mit 3 Klicks löschen. & x & \\
\hline
Der User kann unter Linux ein Archiv mit zwei Klicks "`read-only"' als Laufwerk mounten. & x & \\
\hline
Der User kann ein Archiv wieder herstellen. & x & \\
\hline
Der User kann den zu sichernden Pfad manuell in der Anwendung definieren. & x & \\
\hline
Die Applikation holt ihre Konfiguration aus einer Plain-Text Datei. & x & \\
\hline
Der User kann sein Repository auf einer Harddisk ablegen. & x & \\
\hline
Die Anwendung exkludiert für einen Linux Computer sinnvolle Pfade bereits zu Beginn. & x & \\
\hline
Die Archivliste wird nach einer Aktion automatisch aktualisiert. & x & \\
\hline
Der User kann sein Repository auf einem über SSH erreichbaren Server ablegen. &  & 5\\
\hline
Der User kann den Namen eines Archives selbst bestimmen. &  & 5\\
\hline
Die Anwendung meldet transparent, wenn das Repository nicht erreichbar ist. &  & 5\\
\hline
Die Anwendung meldet dem User, wenn noch ein Hypervisor am Laufen ist. &  & 5\\
\hline
Die Anwendung leitet Meldungen von BorgBackup transparent weiter. &  & 5\\
\hline
Die Anwendung zeigt transparent an das BorgBackup im Hintergrund bereits läuft. &  & 5\\
\hline
Das Repository wird nach jedem Backup bereinigt. &  & 4\\
\hline
Der User kann automatische Hintergrundbackups in der Anwendung konfigurieren. &  & 4\\
\hline
Die Anwendung gibt dem User die Möglichkeit ein passendes Repository zu erstellen, wenn keines gefunden wird, die Anwendung jedoch bereits konfiguriert ist. &  & 4\\
\hline
Die Applikation verwendet, wann immer möglich allgemeingültige Umgebungsvariablen. &  & 4\\
\hline
Die Anwendung cached/speichert (evtl. zusätzliche) Informationen in einer Datenbank. &  & 3\\
\hline
Die Anwendung zeigt beim ersten Starten einen Setup Wizard. &  & 3\\
\hline
Der User kann sich mit 3 Klicks das Log eines Archives anschauen. Nur möglich mit einer zusätzlichen DB. &  & 3\\
\hline
Die Anwendung kann Systembenachrichtigungen auslösen. &  & 3\\
\hline
Der User kann die Anwendung grafisch konfigurieren. &  & 3\\
\hline
Der User kann entscheiden ob, ein gemountetes Archiv nach dem Schliessen der Applikation noch weiter verfügbar ist. &  & 2\\
\hline
Der User kann das Repository wechseln. &  & 2\\
\hline
Der User kann ein Archiv nach einer Datei oder einem Ordner durchsuchen. &  & 2\\
\hline
Der User kann die "`Retention Policy"' konfigurieren. &  & 2\\
\hline
Die Anwendung kann mit allen Features von BargBackup umgehen. &  & 2\\
\hline
Die Applikation prüft, ob sie sich im richtigen Netzwerk befindet bevor sie eine Verbindung zum Server aufbaut. &  & 2\\
\hline
\caption{\label{tab:org7e8f332}
Projektziele}
\\
\end{longtable}
\newpage
\section{Mittelbedarf}
\label{sec:orgf773869}
Für die Arbeit sind, ausser den 250h des Diplomanden, keine weiteren Mittel
notwendig.

\section{Planung}
\label{sec:org18ba744}

Die Arbeit ist innert 14 Wochen (Vorgabe IBZ-Schulen) abzuwickeln. Die
Verteilung der anstehenden Arbeiten auf die 14 Wochen ist durch den Diplomanden
vor dem Start der Phase Voranalyse zu erledigen.

Der Student wird die Projektmethodik, "`Wasserfall"' einsetzen.

\section{Wirtschaftlichkeit}
\label{sec:org4434af0}
Die Wirtschaftlichkeit ist für dieses Projekt nicht relevant.

\section{Konsequenzen}
\label{sec:org7690d70}
Keine speziellen Konsequenzen in dem Vorhaben bekannt.

\section{Antrag}
\label{sec:org85e4c65}
Der Diplomand beantragt die Freigabe der Phase Voranalyse, diese startet mit dem
Kick-off vom 10.12.2018.
