% Conclusions

\svnInfo $Id$

\chapter{Conclusions}
\label{ch:conclusions}

The implementation of an Eiffel binding for JXTA was quite a challenging task.

As a JXTA novice, it was hard to get into the topic since many books and
documentation about it are out of date.

Originally, we were full of expectations of the JXTA specification
\cite{jxta_spec} but we had to become aware of the fact that it specifies mainly
the various messages' syntax. Detailed semantics is ceded to the implementation
which makes it impossible to build a binding compatible to the reference
implementation with the specification only. We therefore had to extensively look
at the reference code to find out how the details really work.

We encountered also many uncertainties when we implemented the modules and tried
to test our code because we did not see all problems during the design process.
We encountered also a few bugs in the reference implementation while testing,
which we could fix and send patches to the community. We are very happy that
they all got applied rapidly.

While we now have a deeper knowledge in JXTA, we also learnt a lot about Eiffel
software since we actively tried to stick to the Eiffel conventions. This was
also a challenge since we always read the JXTA's Java code, which complies to
other patterns than state of the art Eiffel code.

We are pleased to have started a new project \vampeer, which may grow in the
future to become a mature and fully usable JXTA implementation.

\section{Future work}
\label{ch:futurework}

We mentioned at several places before that our new library is incomplete and
does not implement the full JXTA specifications. Although the current release
can be used in Origo and in many others applications, it lacks of some essential
features that would tremendously improve the \vampeer's experience.

We really should focus first on a rendezvous server implementation because we
then could eliminate the dependency to another JXTA implementation. This task
involves working into the rendezvous' peer view protocol. While the rendezvous
adaptions are a bigger part, it also involves to enhance the discovery service
since this has to fulfill more tasks when the peer is a rendezvous server. We
have to maintain an SRDI for all rendezvous clients for example.

Another important issue is the endpoint router completion. It should be able to
resolve peer IDs also querying remotely for route advertisements. Another
yet unavailable router feature is to forward traffic for other peers residing
behind a firewall.

JXTA is actually also known for its support to bypass firewalls. The HTTP
transport is surely an important contribution to this facility too. Such a
transport would thus be nice.

Our thesis did not treat security issues. In JXTA, we generally own secure
communication by using TLS channels. As there is no SSL/TLS library for Eiffel
yet, it is not that easy to implement the \texttt{jxtatls} transport to
\vampeer\@. But wrapping the SSL C library could lead to a neat TLS transport
implementation.

Introducing support for several running peer groups should be an easy task as
most services are ready for it. However, there may be some more challenges with
the current address rewriting issue described in
section~\ref{sec:design_mangling}.

When multiple peer groups are going to be allowed and secure communication is
available, we may be interested to introduce the \emph{membership service} which
allows peers to gain access to a certain peer group only with a valid
authorization.

The last missing service we would like to list here is the \emph{pipe service}.
Its idea is to support virtual channels to one or multiple peers. A simple
implementation should not be that much work.

\section{Acknowledgements}

Without exaggerating, this thesis would certainly not have led to success if I
had not get assistance by the JXTA community. The communication by means of
mails and primarily IRC messages with other JXTA developers has really helped
out with good advice. Therefore, I would like to thank Roger~Karis and
Mike~Duigou (Sun Microsystems) for their great aid.

I like to mention Roger from Holland especially as he was also writing his
master thesis in the JXTA field (writing about ``Analysis of a peer-to-peer
framework in $\mu$CRL''). We had some great hours in the JXTA's IRC channel
sharing frustration and exultation.

I would also like to thank my supervisor Till~Bay (the main driver behind Origo)
who was always available to give advice and motivated me in my project.

The last six months were a demanding time but I had a good fellow sufferer with
my office neighbour Samuele~Lucchini who implemented a single sign-on solution
for Origo. Thank you Samuele for the entertaining time!

Many thanks also to all my friends who did the proof-reading of this document:
thank you Andrea, Mirjam, Nina and Philip!
