\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.