-
Notifications
You must be signed in to change notification settings - Fork 0
/
Chapter_01.tex
19 lines (16 loc) · 5.2 KB
/
Chapter_01.tex
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
\chapter{Introduction}\label{sec:Introduction}
Creating network applications nowadays might be a complicated process of design which involves long series of research and experiments or, on the other hand, it might be a fairly simple procedure that takes only a tenth of its time and effort. In both cases, the most frequent evaluation metric is the scalability of the application, more than a thousand of lines of code or the complexity of the model. With the rise in popularity, the usage of network applications increases, which in consequence results in an increase in the frequency that the application is requested to serve its functionality. This growth can be calculated and included at the planning level, thus becoming a good programming practice that places itself close to other widely approved design patterns. Whereas a design for a certain load may by very wrong with ten or hundred times growth then by planning for ten times growth the developer should have in plan to rewrite some of the design parts before hundred times growth is reached~\cite{google_wsdm}. With no doubt scalability is starting to play a more important role, being often set at the same level with such issues like portability or security~\cite{scalable_delft}. The present thesis aims to introduce an application that by its original functionality would heave the potential to become a heavy traffic network application with numerous active users.
The idea of SmartNotes, an application which is the subject of this thesis, has been inspired by the Google Notebook application which was being actively developed until January 2009, when Google announced that further development work on this project is stopped. Google Notebook has an interesting interface and features, some of which will be mentioned in Section~\ref{subsec:google_notebook}. What was still missing from the functionality until January 2009 was comfortable notes usage without network connectivity. The aim of the subject of the thesis was to use the idea of making a truly scalable notes taking application that would be even more flexible by offering offline functionality and a synchronization feature. All of this is delivered in an elegant user interface that pays special attention to easiness and functionality.
SmartNotes and the iSmartNotes client are meant to be Open Source projects that after my graduation could become developed by users supporting the idea, willing to contribute and see their ideas working for others. To make that possible, the Git Version Control System has been used and the code has been released under the LGPL license. The code is also available on GitHub, one of the most poplar code hosting services which is widely used in the Open Source community. Moreover, in order to ensure easy visualization of project development, mark important changes and gather links and information regarding the project as well as care for user opinion, additional services have been implemented, all of which will be described in the below sections. For that purpose, SmartNotes have its own:
\begin{itemize}
\item{\textbf{Project home page}. At \url{http://smart-notes.appspot.com/} users can find a brief overview what the project does and how they can use it.}
\item{\textbf{SmartNotes development blog}. Project home page makes it easy for users interested in the source code to find the blog address \url{http://blog-smart-notes.blogspot.com/} which aims to to provide an official area where design decision can be taken, developers can exchange opinions and share experience.}
\item{\textbf{Ohloh SmartNotes profile}. It is linked from the project homepage and can be found at \url{http://www.ohloh.net/p/SmartNotes}. This service offers a friendly user interface which helps users of diverse level of technical knowledge to stay updated with the project status.}
\item{\textbf{Get Satsfaction SmartNotes profile}. The project home page provides a feedback form where users can ask questions, share ideas, report problems or give praise to the application which may be afterwards accessed and responded at \url{http://getsatisfaction.com/smartnotes/}.}
\end{itemize}
The above points have been designed to contribute to user- or developer-oriented services which should ease the process of finding information regarding the SmartNotes application and provide an official communication channel. The system makes it easier to react to user signals, playing an important role in building a group of satisfied users with a potential to grow. All in all, providing reliable service is one of the key elements allowing to explore the scalability of SmartNotes architecture. Therefore, the aims of the following study can be summarized as follows:
\begin{itemize}
\item{\textbf{Clarify the scalability term.} This popular term requires to find a good definition as it frequently becomes misunderstood or is used exchangeably with other terms.}
\item{\textbf{Write a Python application with scalability in mind.} The research should be completed by writing a network application allowing to test the gathered information in a practical project.}
\item{\textbf{Form best practice for writing scalable applications.} As a final outcome the reader shall be presented with a list of patters that help write scalable applications.}
\end{itemize}