Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP

Comparing changes

Choose two branches to see what's changed or to start a new pull request. If you need to, you can also compare across forks.

Open a pull request

Create a new pull request by comparing changes across two branches. If you need to, you can also compare across forks.
base fork: manish/The-Zeitgeist-Manual
base: 65f4a85113
...
head fork: manish/The-Zeitgeist-Manual
compare: 87366dcce8
Checking mergeability… Don't worry, you can still create the pull request.
  • 2 commits
  • 2 files changed
  • 0 commit comments
  • 1 contributor
Showing with 62 additions and 9 deletions.
  1. +46 −1 include/development_process.tex
  2. +16 −8 include/development_tools.tex
View
47 include/development_process.tex
@@ -1,6 +1,35 @@
\section{How we handle bugs}
\section{How we handle blueprints}
\section{How we handle merge requests}
+
+All important changes needs to be reviewed before it lands in our source
+code repository. Anyone who wants to make a change, which includes the
+developers too, have to propose a merge request. The changed in the merge
+request is then reviewed by other developers before it lands in the source
+code repository. As a general policy, atleast one developer needs to approve
+the merge request before the request is considered accepted by the team.
+
+There are various advantages of reviews using merge requests which includes,
+but is not limited to the following reasons
+
+\begin{itemize}
+\item It helps find the probable issues which might be encountered if the
+changes proposed contains bugs.
+\item It helps the person proposing the merge request to learn something new
+when one of the developers proposes a better solution than the one provided.
+\item It helps the team learn any new practices or feature which would
+otherwise go un-noticed if the changes were directly pushed in the main
+repository without a review
+\item It helps the team to keep a track on the changes occouring in the source
+code repository.
+\end{itemize}
+
+You can relate this process with peer-reviews of scientific journals. Instead of
+new theories, changes are being proposed. The scientific community's role is being
+played mostly by the developers (though anyon can leave a review). If the changes
+is found to meet the requirements and expecations, they are accepted in the
+codebase just like theory is accepted in the scientific knowledge repository.
+
\section{How we test our work}
\section{How we manage releases}
A release is discussed between the various module maintainers.
@@ -29,4 +58,20 @@ \section{How we manage releases}
\end{itemize}
\section{Description of our development process}
-\section{Governance model}
+\section{Governance model}
+
+The zeitgeist project is a mix of meritocratic and democratic practises.
+When an important topic is discussed, all the members involved are
+consulted and the best decision is carried forward. The experience and
+knowledge of a member related to the topic carries weight and the decision
+is based on it.
+
+There are components which have a single maintainer. Those maintainers usually
+take decisions which are in best interest of the project or to that component.
+Maintainers sometimes consult other members in cases when the impact of the
+decision might be noticable.
+
+Components which are maintained by a group of developers are mostly important
+ones and the decision is taken largely by concensus. The person who took more
+active part in the ongoing version gets a stronger voice and he/she knows the
+changes better than others who are passively participating.
View
24 include/development_tools.tex
@@ -1,7 +1,8 @@
\section{Languages used}
\subsection{Zeitgeist Engine}
-The Zeitgeist engine is primarily written in Python and minimum supported version is Python 2.7
+The Zeitgeist engine is primarily using Vala which is a C\# like language
+which targets the GObject type system instead of Common Language Runtime
\subsection{Zeitgeist Datahub}
@@ -27,22 +28,22 @@ \subsection{Datasources}
the application supports. Example Emacs datasource is written in lisp,
tomboy datasource is written in C\#, Rhythmbox datasource is written in
python and so on.
-\subsection{Why Python for Engine?}
+\subsection{Why Vala for Engine?}
GNOME Zeitgeist started from the Gimmie/Mayanna codebase that was written
in python. The tradition continued. Although we had several thoughts to move
-to Mono, C and Vala it never happened for several reasons.
+to Mono and C, it never happened for several reasons.
\begin{itemize}
\item Mono would have created a big debate in the community since a lot of
GNOME hackers dislike it, however at the very beginning all ZG developers were
keen with mono, yet to ensure no political issues we decided to stay with python.
\item C was and still is an issue since, only a few or the core devs are familiar
with C and we will lose momentum.
-\item Vala would have made Zeitgeist more a GNOME project than a desktop project
-and there is not much gain now in moving to any other programing language since
-speed and memory consumption wont be affected heavily in comparison to the effort
-we will have to put in it. That time Vala wasn't an option either because it
-doesn't support some D-Bus features we needed.
+\item
\end{itemize}
+Finally the developers took a tough decision and ported the codebase to Vala
+which compiles Zeitgeist as a native application. This greatly expanded the
+scope where zeitgeist can be used. The target platform only needs to support
+a basic set of libraries including glib, sqlite and xapian (for full text search)
\section{Other technologies}
@@ -89,6 +90,13 @@ \subsection{GLib}
written in C. It provides the basic functionality like data strutures, threading, mutex,
message passing, hook functions and many more.
+\subsection{Xapian}
+Xapian is an open source search engine library which is mostly used for full text
+search. To be more accurate, xapian is a probabilistic information retrieval library.
+
+Zeitgeist uses Xapian to prove full text search on the event logged, using which
+we can do the search on URL, application name, Text fields of the event.
+
\section{Launchpad}
Launchpad is a web based application for software development and collaboration for

No commit comments for this range

Something went wrong with that request. Please try again.