Simon Hammer 3 년 전
부모
커밋
a8276a97b9
1개의 변경된 파일37개의 추가작업 그리고 23개의 파일을 삭제
  1. 37 23
      maturText/matur.tex

+ 37 - 23
maturText/matur.tex

@@ -190,8 +190,8 @@ dass sich auch in den letzten zehn Jahren - nämlich seit dem Aufkommen der mass
 
 
 \subsection{Ziel der Arbeit}
-
- was, wie und warum [machen wir das?]
+% TODO: machen wir das (noch) ???
+% was, wie und warum [machen wir das?]
 
 \section{Konzept der Arbeit}
 
@@ -227,7 +227,7 @@ Wir haben uns viele Ziele gesetzt und dachten, dass wir auch mehr schaffen könn
 
 
 \subsection{Vergleich mit Konkurrenz}
-Disclamier/Note: Da bei dieser App einen Wert auf Sicherheit und Endnutzer-Freiheit gesetzt wird, wird sie dementsprechend nur mit Apps verglichen, welche auch Freie Software sind, nach Definition [der FSF??]. Somit fallen jegliche Proprietäre Produkte raus, da sie unseren Grundanforderungen eines Email Clients nicht entsprechen.\\
+Disclamier/Note: Da bei dieser App einen Wert auf Sicherheit und Endnutzer-Freiheit gesetzt wird, wird sie dementsprechend nur mit Apps verglichen, welche auch Freie Software sind, nach Definition der \textit{Free Software Foundation (FSF)}. Somit fallen jegliche Proprietäre Produkte raus, da sie unsere Grundanforderungen an ein generelles Programm nicht erfüllen.\\
 
 
 Wenn wir die meisten anderen quelloffenen, noch maintainten Open Source Email Clients anschauen fällt sofort auf, 
@@ -242,7 +242,8 @@ Um ein Programm zu programmieren, werden menschenlesbare Instruktionen in ein od
 die dann in Sprache, welche die Computerhardware interpretieren und ausführen kann, übersetzt. 
 Bei diesem Prozess geht die Lesbarkeit für den Menschen grösstenteils verloren. Um ein Programm ausführen können braucht der Nutzer also keinen Zugang zum Quellcode. Doch wenn er wissen will, was das Programm macht - es könnte ihn ausspionieren oder andere bösartige Sachen im Hintergrund machen - oder einfach das Programm verändern will, braucht er unbedingt Zugang zum Source Code.\\
 
-Durch die zunehmende Kommerzialisierung und Massentauglichkeit der Computer haben sich aber monetäre und andere Anreize gebildet, den Source Code dem Nutzer nicht mehr zur Verfügung zu stellen. Das hat für den Nutzer verschiedene praktische Folgen. Aber vor allem ist er nicht mehr in Kontrolle seines Computers, Betriebssystems und Programms, sondern der Besitzer oder Copyrightholder des Programms. Das ein Programm einen Besitzer haben kann, ist ziemlich absurd und nur durch die Veränderungen der westlichen Copyright- Gesetze- und Kultur der letzten 150 Jahre [möglich?].\\
+% maybe too much of a rant about intellectual property (IP) ???
+Durch die zunehmende Kommerzialisierung und Massentauglichkeit der Computer haben sich aber monetäre und andere Anreize gebildet, den Source Code dem Nutzer nicht mehr zur Verfügung zu stellen. Das hat für den Nutzer verschiedene praktische Folgen. Aber vor allem ist er nicht mehr in Kontrolle seines Computers, Betriebssystems und Programms, sondern der Besitzer oder Copyrightholder des Programms. Das ein Programm einen Besitzer haben kann, ist ziemlich absurd und nur durch die Veränderungen der westlichen Kopierschutz-Gesetze und der daraus entstandene kulturelle Umgang mit \say{intellektuellem Eigentum} in den letzten 150 Jahre möglich.\\
 
 Doch auch bei Open Source Software gibt es verschiedene Lizenzmodelle welche gewählt werden können. Diese lassen sich gut ein zwei Kategorien unterteilen:\\
 
@@ -279,7 +280,7 @@ Hier kommt die Philosophie des \textit{Suckless Philosphy} ins Spiel: Sie zielt
 
 
 
-\subsubsection{Hintergründe, Technologisch, UNIX, KISS}
+% \subsubsection{Hintergründe, Technologisch, UNIX, KISS}
 \subsection{Lizensierung}
 % ENG: The differences of different source code models and their licenses have been already discussed in this paper (?). The reason the GNU General Public License Version 3 (short: GPL v3) was chosen because it is one of the most popular and strongest copyleft licenses that suits the application.
 
@@ -356,13 +357,13 @@ Dies ist ein Software-Tool für die Interaktion mit Android-Geräten, die per US
 
 \paragraph{Open Source Programme}
 
-Beim Programmieren kann es sehr Hilfreich sein Programme zu haben welche, ähnliche Funktionen haben wie das Programm welches entstehen soll. 
-Solche Vorlagen können beliebig getestet und verändert werden. Simon hatte zu beginn Schwierigkeiten Java zu nutzen, um Programme zu schreiben, da er noch nicht viel 
+Beim Programmieren kann es sehr hilfreich sein Programme zu haben welche, ähnliche Funktionen haben wie das Programm welches entstehen soll. 
+Solche Vorlagen können beliebig getestet und verändert werden. Simon hatte zu Beginn Schwierigkeiten Java zu nutzen, um Programme zu schreiben, da er noch nicht viel 
 Erfahrung mit dem Programmieren hatte. Um sich mit der Art der Sprache und des Programmierens vertieft auseinander zu setzen, begann er Email-Apps, welche Open Source
 waren, genauer zu Betrachten. Im folgenden Text werden wir diese Programme aufführen und zeigen für was wir sie gebraucht haben. 
 
-\subsubsection{Librarys}
-(bedeutung im glossar erklärt)
+% \subsubsection{Librarys}
+% (bedeutung im glossar erklärt)
 
 \paragraph{RecyclerViewer}
 
@@ -390,8 +391,8 @@ Es wurde auch Nutzen gemacht von Büchern und Artikeln, in digitaler und physisc
 
 \subsection{Dokumentation(-stools)}
 \subsubsection{Latex}
-% ENG: To write more formatting-demanding papers like in this paper it was made use of the typesetting engine LaTeX. This is a highly extensible and efficient way for getting your paper to look just like you want it. Also professionals use it to format a big majority of published books since \~ 20 years up to this day(TODO: look up on facts/statistics for this).
-Um formatierungsintensivere Texte wie diese Arbeit zu schreiben, wurde das Satzprogramm LaTeX verwendet. Dies ist ein äußerst erweiterbarer und effizienter Weg, um eine Arbeit so aussehen zu lassen, wie man es exakt verlangt. Auch professionelle Fachleute verwenden es, um eine große Mehrheit der veröffentlichten Bücher seit etwa 20 Jahren bis zum heutigen Tag zu formatieren (TODO: Fakten/Statistiken dazu nachschlagen).
+% ENG: To write more formatting-demanding papers like in this paper it was made use of the typesetting engine LaTeX. This is a highly extensible and efficient way for getting your paper to look just like you want it.
+Um formatierungsintensivere Texte wie diese Arbeit zu schreiben, wurde das Satzprogramm LaTeX verwendet. Dies ist ein äußerst erweiterbarer und effizienter Weg, um eine Arbeit so aussehen zu lassen, wie man es exakt verlangt. Es wird nicht umsonst extensiv verwendet in naturwissenschaftlichen Artikeln, Büchern und Verlagen.
 \subsubsection{Pandoc}
 % ENG: This is program to convert from one document format to another. This is useful to write a document in format with very simple syntax (e.g. markdown) to convert it to a format that allows much better formatting (e.g. LaTeX) without having to use the more sophisticated syntax of the latter format. This is often used to write documentation or short texts with the minimal amount of time and effort to do so.
 Dies ist ein Programm zur Konvertierung von einem Dokumentformat in ein anderes. Dies ist nützlich, um ein Dokument in einem Format mit sehr einfacher Syntax (z.B. Markdown) zu schreiben und es in ein Format zu konvertieren, welches eine viel bessere Formatierung ermöglicht (z.B. LaTeX), ohne die anspruchsvollere Syntax des komplexeren Formats verwenden zu müssen. Dies wird häufig verwendet, um Dokumentationen oder kurze Texte mit minimalem Zeit- und Arbeitsaufwand zu schreiben. So auch bei dieser Arbeit.
@@ -417,19 +418,21 @@ Die Schlussfolgerung für unser Anwendungsprojekt ist also, unsere Anwendung nic
 Wenn man Nutzereinstellungen- und Daten speichert in Android, kann der Entwickler zwischen verschieden Berechtigungsmodi wählen. In diesem Project wurde der sogenannte \textit{PRIVATE MODE} gewählt. Dieser bewirkt, dass andere Apps mit Nutzerberechtigungen (also a alle von einem Nutzer installierten Apps) den Inhalt dieser Daten nicht sehen können. Aber Google, Root-Nutzer und Apps mit Root-Zugriff können diese Einschränkung des \textit{Android Permission Systems} ohne weitere Probleme umgehen.\\
 
 % ENG: To prevent this type of exploitation we would have to encrypt ALL sensitive user data with an encryption key. But when there is a keylogger installed, even this is not safe. So considering that there is not a single android phone free from proprietary operating system and firmware code(when connecting to the internet via WiFi), this feature idea has been rejected as out of place and to make our codebase simpler.
-Um solch eine Art der Ausnutzung zu verhindern, müsste man ALLE sensiblen Benutzerdaten mit einem Verschlüsselungscode verschlüsseln. Aber wenn ein Keylogger installiert ist, ist selbst dies nicht sicher. In Anbetracht der Tatsache, dass es kein einziges Android-Telefon gibt, das frei von proprietärem Betriebssystem- und Firmware-Code ist (wenn es sich über WiFi mit dem Internet verbindet), wurde diese Funktionsidee als fehl am Platz und zur Vereinfachung unserer Codebasis verworfen.
+% Um solch eine Art der Ausnutzung zu verhindern, müsste man ALLE sensiblen Benutzerdaten mit einem Verschlüsselungscode verschlüsseln. Aber wenn ein Keylogger installiert ist, ist selbst dies nicht sicher. In Anbetracht der Tatsache, dass es \textit{kein einziges} Android-Telefon gibt, das frei von proprietärem Betriebssystem- und Firmware-Code ist (wenn es sich über WiFi mit dem Internet verbindet), wurde diese Funktionsidee als fehl am Platz und zur Vereinfachung der Codebasis verworfen.
+% LAST PARAGRAPH COMMENTED OUT BECAUSE TOO MUCH SCHIZO
 
-% TODO: write about sandbox (and its 'lies') + maybe delete the last schizo paragraph
+% TODO: write about sandbox (and its 'lies') ????
 
 \subsection{Code Kompaktheit}
-% ENG: This is something that we have absolutely achieved, we used so much less SLOC than any of the competing email clients on android.(TODO: compare use of libraries, and if we used more or less than the other apps) This is also very crucial to stand with our initial goal and the suckless philosophy. While we used \~ 4000 SLOC, other apps use a whopping 300'000 SLOC.
-Das ist etwas, was im Laufe diese Projekts ziemlich gut eingehalten wurde: Es wurden viel weniger SLOC geschrieben als bei den konkurrierenden Email Clients auf Android. (TODO: compare use of libs, and if we used more or less than the other apps). Das ist ein sehr wichtiger Massstab um das initiale Ziel der \textit{Suckless Philosophy} so gut wie möglich zu erreichen. Während dieses Projekt nur \~ 4000 SLOC Zeilen Code aufzuweisen hat, sind es bei anderen Apps gar über 300'000 SLOC.
+% ENG: This is something that we have absolutely achieved, we used so much less SLOC than any of the competing email clients on android.(compare use of libraries, and if we used more or less than the other apps) This is also very crucial to stand with our initial goal and the suckless philosophy. While we used \~ 4000 SLOC, other apps use a whopping 300'000 SLOC.
+Das ist etwas, was im Laufe diese Projekts ziemlich gut eingehalten wurde: Es wurden viel weniger SLOC geschrieben als bei den konkurrierenden Email Clients auf Android. Das ist ein sehr wichtiger Massstab um das initiale Ziel der \textit{Suckless Philosophy} so gut wie möglich zu erreichen. Während dieses Projekt nur \~ 4000 SLOC Zeilen Code aufzuweisen hat, sind es bei anderen Apps gar über 300'000 SLOC.
 \subsubsection{Maintaining}
 % ENG: Our codebase should be very easy to maintain: The main things you would have to do is check if the dependencies are up to date and if they can be considered deprecated.\\
 Die Codebasis dieses Projektes sollte sehr einfach zu maintainen sein: Die wichtigsten Punkte dabei sind, dass der Maintainer schaut, dass die Dependencies auf der neusten Version sind und ob sie als obsolet oder veraltet angesehen werden müssten.\\
 
 % ENG: Even if this project gets abandoned by their original developers - or as some people call that: when it get orphaned - and if someone finds it and likes it, he can easily read through it and understand the code without too much effort needed of understanding the codebase. Would the same be the case for bloated programs like thunderbird? I don't think so either.
-Selbst wenn das Projekt aufgegeben werden sollte bei seinen ursprünglichen Entwicklern - oder wie manche sagen: ``the project/package gets orphaned'' (TODO: source pls) - und wenn jemand das Projekt findet und es ihm gefällt kann er dann recht einfach und schnell die Codebase durchlesen und sie ohne allzu grossen Aufwand verstehen. Wäre das auch der Fall bei bloated Software wie thunderbird? Das glaube ich auch nicht.
+% TODO: get source to term 'orphaned packages'
+Selbst wenn das Projekt aufgegeben werden sollte bei seinen ursprünglichen Entwicklern - oder wie manche sagen: \say{the project/package gets orphaned} - und wenn jemand das Projekt findet und es ihm gefällt kann er dann recht einfach und schnell die Codebase durchlesen und sie ohne allzu grossen Aufwand verstehen. Wäre das auch der Fall bei bloated Software wie thunderbird? Das glaube ich auch nicht.
 
 \subsubsection{less bug/error-prone}
 % ENG: This is thanks to the suckless nature of our coding philosophy, but also our execution. It could be the case however that bad practices may have been used as the initial project owner did not have a lot of experience of 
@@ -527,7 +530,7 @@ Die Wahl des Layout Manager wurde sehr schnell getroffen. Es war klar, dass eine
 z.b auch das Datum nicht versetzt angezeigt werden soll. Weshalb der Gridlayout Manager gewählt wurde. Nun hat sich Simon in einem Tutorial über den Recyclerviewer informiert
 und konnte sich auch ein beispiel anschauen, woran sich der Recyclerviewer der Email-App zu beginn sehr stark orientierte. \\
 
-\textbf{https://github.com/android/views-widgets-samples/tree/main/RecyclerView} Recyclerviewer beispiel \\
+% \textbf{https://github.com/android/views-widgets-samples/tree/main/RecyclerView} Recyclerviewer beispiel \\
 
 Nach dem sich Simon über den Recyclerviewer informiert hat, sollte er endlich in das Programm eingefügt werden. Leider gab es da einige Probleme. Der erste Versuch scheiterte daran,
 dass die App abstürzte ohne einen Error zu melden. Und nach einiger Zeit war die beste Lösung wieder an einen Punkt zu gehen, an welchem die noch funktionierte, nur ohne vollständigen 
@@ -648,6 +651,9 @@ android:paddingTop="50dp"
 
 \subsubsection{Probleme / Hiccups}
 % RecyclerViewer, shit java IMAP libraries
+Probleme waren die unnötig vielen Layouts, welche entstanden bei unserer App. Vielleicht hätten diese minimiert werden können, wenn die Entwickler eine siginfikant höhere Erfahrung im Bereich der Android Entwicklung hätten, oder wenn die verschiedenen Inhalte beim Aufrufen weniger Layouts generieren würden, oder diese könnten besser wieder referenziert werden.\\
+
+Mit gewissen Biobliotheken sind auch Probleme entstanden, dazu wird später in diesem Text noch das Problem mit den Email-Bibliotheken geschildert.
 
 \subsubsection{Kommunikation}
 % TODO: write something here
@@ -657,10 +663,10 @@ simon fragen, war Kommunikation zwischen uns gut?
 
 \subsection{Fremdeinschätzung}
 \subsection{Selbsteinschätzung}
-\subsubsection{was lief gut}
+\subsubsection{Was Gut Lief}
 % komm., vcs, java syntax (allg.)
 Das Arbeiten mit \textit{Git} als \textit{Version Control System} verlief gut und half ihrer Meinnung nach enorm beim Arbeitsprozess und dessen Strukturierung. Mit der Syntax der verwendeten Programmier- und Markupsprachen Java, Python und XML konnte gut umgegangen werden, obwohl die beiden noch recht wenig Erfahrung mit Java hatten. Die Codestruktur fanden sie den Umständen entsprechen gut und sinnvoll.
-\subsubsection{was lief schlecht}
+\subsubsection{Was Schlecht Lief}
 % ******* java shit tier libraries
 Dass es keine mit Gradle funktionierede, ausreichend dokumentierte und/ode nicht veraltete IMAP- und Emailbibliotheken für Java. Deshalb wichen wir auf die um Welten besser funktionierende Python \say{imap} und {emaillib} aus. Dazu mussten wir eine Library namens \textit{Chaquopy} benutzen, um Python als Bytecode kompiliert in unsere Java App einbauen zu können. Das ist natürlich unschön, aber die Funktionalität wär halt die oberste Priorität.
 
@@ -671,21 +677,29 @@ In so einer Situation war ich nicht nur bei der Database. Mit dem Recyclerviewer
 Aber diesen konnte ich mit der Zeit sehr gut an de Recyclerviewer anpassen. Ich habe ihn auch sehr stark ausgebaut. Als ich jedoch eine vollstendige Version einer Database hatte, musste ich den 
 Adapter so gut wie löschen. Solche Dinge haben den Arbeitsprozess sehr stark ausgebremst und die Arbeit begann mich zu nerven, da teilweise klar war, dass ich das was ich gerade
 mache sowieso nochmals überarbeiten muss. 
-\subsubsection{was würden wir gleich machen}
+
+\subsubsection{Was Wir Gleich Machen Würden}
 % As long as java is not deprecated in the future for android programming, we would still use it as it is the most ``native'' way of programming. The new java clone/fork of google, Kotlin, would be a worse choice in our eyes, as your are even more dependent on google code, which you are already by using android.
-\subsubsection{was würden wir anders machen}
+Wenn wir diese in die Vergangenheit reisen könnten und die App von Neuem machen könnten, würden wir am Userdesign nichts ändern, und auch weiterhin mit \textit{Git} als \textit{VCS} arbeiten und für jedes noch nicht einsatzbereite Feature einen neuen \textit{Branch} machen. Die Arbeitsweise an sich hat sich aus unserer Sicht bewährt und ist ein passabler Weg, kollaborativ an einem Softwareprojekt zu arbeiten.
+\subsubsection{Was Wir Anders Machen Würden}
 % As java is much slower than language that can be compiled into native binaries we would try to use more C or C++ libraries to improve speed and portability.
 
-Code der in Java geschrieben wurde, kann nicht nativ auf einer Maschine laufen, sondern muss durch eine virtuelle Maschine, die \textit{Java Virtual Machine (JVM)} während der Ausführung in nativen Code umgewandelt werden. Deshalb würde bei einem Rewrite wohl besser mehr Code in C oder C++ geschrieben, um die Geschwindigkeit und Portabilität zu erhöhen.
+Code der in Java geschrieben wurde, kann nicht nativ auf einer Maschine laufen, sondern muss durch eine virtuelle Maschine, die \textit{Java Virtual Machine (JVM)} während der Ausführung in nativen Code umgewandelt werden. Deshalb würde bei einem Rewrite wohl besser mehr Code in C oder C++ geschrieben, um die Geschwindigkeit und Portabilität zu erhöhen.Java komplett wegzulassen ist aber weder vorgesehen noch praktisch sinnvoll umsetzbar.
 
 
 % use more c libs for speed and less java
 \subsubsection{abschliessende persönliche Schlussfolgerung}
 \paragraph{Simon}
+% TODO: write something here
 \paragraph{Noah}
+Ich habe persönlich das Gefühl, einen guten Einblick in die native Android Programmierung mit Java bekommen zu haben. Mir erschien es nicht so spannened oder interessant wie ich erhofft hatte, sondern gewisse Befürchtungen über den Stand der Software und Entwicklungsumbebung auf Smartphones bestätigten sich.\\
 
-\section{Danksagung}
+Das Dependency Managment ist im Vergleich zu UNIX-ähnlichen Betriebssystemen schrecklich, der Resourcenverbrauch im Verhältniss zur Komplexität der Apps riesig. Wenn man das Android Betriebsystem nicht auf Java sondern auf in der Exekutierung schnelleren Programmiersprachen wie C oder Rust aufgebaut hätte, wären zwar die Programme etwas schwerer zu programmieren für die Entwickler, aber dafür wären die Akkulauftzeit und Performance deutlich besser.\\
+
+Ich persönlich habe mich über diese in meinen Augen schlechten Umständen aufgeregt, und das hat mir auch ein gutes Stück an Motivation genommen. So ausgeprägt hatte ich das kaum bei einem meiner Softwareprojekte, und davon habe ich schon einige. Doch ich bin froh, diese Erfahrung gemacht zu haben, als beispielsweise eine ganze Ausbildung in dieses Richtung anzufangen.
 
+\section{Danksagung}
+Wir (Simon und Noah) möchten uns bedanken bei unserer Betreuungslehrperson Dr. Viktor Yakonthov, und unserem Koreferenten D. Bühler bedanken, dass sie uns die Arbeit erlaubt haben durchzuführen und ihre Bereitschaft, zu Helfen bei allfälligen Fragen.
 
 %=======================================