#+title: Projektantrag
:preamble:
#+setupfile: ~/nextcloud/03_documents/org/settings/html_theme/setup/theme-readtheorg.setup
#+author: Andreas Zweili
#+latex_class: article
#+latex_class_options: [a4paper,11pt]
#+latex_header: \input{general/style}
#+otions: H:5 todo:f
#+language: de
#+startup: align
#+exclude_tags: no_export
:end:

* DONE Zweck des Dokuments
CLOSED: [2018-07-09 Mo 20:55]

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.

* DONE Ausgangslage
CLOSED: [2018-07-09 Mo 21:16]

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

* Projektrahmenbedingungen

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

1. Komplexität des Vorhabens
2. Umfang des Vorhabens (250 Stunden)

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

* DONE Zielsetzung
CLOSED: [2018-07-16 Mo 21:10]

#+CAPTION: Projektziele
#+ATTR_LATEX: :environment longtable :align |p{9cm}|p{1.5cm}|p{2cm}|
#+NAME: tab:projektziele
|------------------------------------------------------------------------------------------------------+------------+------------|
| *Zielsetzung*\cellcolor[HTML]{C0C0C0}                                                                | *Muss*\cellcolor[HTML]{C0C0C0} | *Wunsch*\newline (1-5, 5=sehr wichtig)\cellcolor[HTML]{C0C0C0} |
| <100>                                                                                                | <10>       |       <10> |
|------------------------------------------------------------------------------------------------------+------------+------------|
| Die Anwendung setzt auf Cross-Plattform (Linux, Windows, OSX) fähige Technologien.                   | x          |            |
|------------------------------------------------------------------------------------------------------+------------+------------|
| Die Anwendung steht unter der GPLv3 der Öffentlichkeit zur Verfügung.                                | x          |            |
|------------------------------------------------------------------------------------------------------+------------+------------|
| Der User kann mit weniger als 3 Klicks ein Backup ausführen.                                         | x          |            |
|------------------------------------------------------------------------------------------------------+------------+------------|
| Der User kann ein Archiv mit 3 Klicks löschen.                                                       | x          |            |
|------------------------------------------------------------------------------------------------------+------------+------------|
| Der User kann unter Linux ein Archiv mit zwei Klicks "read-only" als Laufwerk mounten.               | x          |            |
|------------------------------------------------------------------------------------------------------+------------+------------|
| Der User kann ein Archiv wieder herstellen.                                                          | x          |            |
|------------------------------------------------------------------------------------------------------+------------+------------|
| Der User kann den zu sichernden Pfad manuell in der Anwendung definieren.                            | x          |            |
|------------------------------------------------------------------------------------------------------+------------+------------|
| Die Applikation holt ihre Konfiguration aus einer Plain-Text Datei.                                  | x          |            |
|------------------------------------------------------------------------------------------------------+------------+------------|
| Der User kann sein Repository auf einer Harddisk ablegen.                                            | x          |            |
|------------------------------------------------------------------------------------------------------+------------+------------|
| Die Anwendung exkludiert für einen Linux Computer sinnvolle Pfade bereits zu Beginn.                 | x          |            |
|------------------------------------------------------------------------------------------------------+------------+------------|
| Die Archivliste wird nach einer Aktion automatisch aktualisiert.                                     | x          |            |
|------------------------------------------------------------------------------------------------------+------------+------------|
| Der User kann sein Repository auf einem über SSH erreichbaren Server ablegen.                        |            |          5 |
|------------------------------------------------------------------------------------------------------+------------+------------|
| Der User kann den Namen eines Archives selbst bestimmen.                                             |            |          5 |
|------------------------------------------------------------------------------------------------------+------------+------------|
| Die Anwendung meldet transparent, wenn das Repository nicht erreichbar ist.                          |            |          5 |
|------------------------------------------------------------------------------------------------------+------------+------------|
| Die Anwendung meldet dem User, wenn noch ein Hypervisor am Laufen ist.                               |            |          5 |
|------------------------------------------------------------------------------------------------------+------------+------------|
| Die Anwendung leitet Meldungen von BorgBackup transparent weiter.                                    |            |          5 |
|------------------------------------------------------------------------------------------------------+------------+------------|
| Die Anwendung zeigt transparent an das BorgBackup im Hintergrund bereits läuft.                      |            |          5 |
|------------------------------------------------------------------------------------------------------+------------+------------|
| Das Repository wird nach jedem Backup bereinigt.                                                     |            |          4 |
|------------------------------------------------------------------------------------------------------+------------+------------|
| Der User kann automatische Hintergrundbackups in der Anwendung konfigurieren.                        |            |          4 |
|------------------------------------------------------------------------------------------------------+------------+------------|
| Die Anwendung gibt dem User die Möglichkeit ein passendes Repository zu erstellen, wenn keines gefunden wird, die Anwendung jedoch bereits konfiguriert ist. |            |          4 |
|------------------------------------------------------------------------------------------------------+------------+------------|
| Die Applikation verwendet, wann immer möglich allgemeingültige Umgebungsvariablen.                   |            |          4 |
|------------------------------------------------------------------------------------------------------+------------+------------|
| Die Anwendung cached/speichert (evtl. zusätzliche) Informationen in einer Datenbank.                 |            |          3 |
|------------------------------------------------------------------------------------------------------+------------+------------|
| Die Anwendung zeigt beim ersten Starten einen Setup Wizard.                                          |            |          3 |
|------------------------------------------------------------------------------------------------------+------------+------------|
| Der User kann sich mit 3 Klicks das Log eines Archives anschauen. Nur möglich mit einer zusätzlichen DB. |            |          3 |
|------------------------------------------------------------------------------------------------------+------------+------------|
| Die Anwendung kann Systembenachrichtigungen auslösen.                                                |            |          3 |
|------------------------------------------------------------------------------------------------------+------------+------------|
| Der User kann die Anwendung grafisch konfigurieren.                                                  |            |          3 |
|------------------------------------------------------------------------------------------------------+------------+------------|
| Der User kann entscheiden ob, ein gemountetes Archiv nach dem Schliessen der Applikation noch weiter verfügbar ist. |            |          2 |
|------------------------------------------------------------------------------------------------------+------------+------------|
| Der User kann das Repository wechseln.                                                               |            |          2 |
|------------------------------------------------------------------------------------------------------+------------+------------|
| Der User kann ein Archiv nach einer Datei oder einem Ordner durchsuchen.                             |            |          2 |
|------------------------------------------------------------------------------------------------------+------------+------------|
| Der User kann die "Retention Policy" konfigurieren.                                                  |            |          2 |
|------------------------------------------------------------------------------------------------------+------------+------------|
| Die Anwendung kann mit allen Features von BargBackup umgehen.                                        |            |          2 |
|------------------------------------------------------------------------------------------------------+------------+------------|
| Die Applikation prüft, ob sie sich im richtigen Netzwerk befindet bevor sie eine Verbindung zum Server aufbaut. |            |          2 |
|------------------------------------------------------------------------------------------------------+------------+------------|
#+LATEX:\newpage
* DONE Mittelbedarf
CLOSED: [2018-07-09 Mo 21:37]

Für die Arbeit sind, ausser den 250h des Diplomanden, keine weiteren Mittel
notwendig.

* Planung

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.

* DONE Wirtschaftlichkeit
CLOSED: [2018-07-09 Mo 20:55]

Die Wirtschaftlichkeit ist für dieses Projekt nicht relevant.

* DONE Konsequenzen
CLOSED: [2018-07-09 Mo 20:55]

Keine speziellen Konsequenzen in dem Vorhaben bekannt.

* DONE Antrag
CLOSED: [2018-07-09 Mo 20:55]

Der Diplomand beantragt die Freigabe der Phase Voranalyse, diese startet mit dem
Kick-off vom 10.12.2018.

* Bibliography                                                    :no_export:

bibliography:general/bibliography.bib
