[Mono-list] Open Fire :-)

Jay Freeman (saurik) saurik@saurik.com
Tue, 10 Jul 2001 02:07:49 -0500

I've been doing quite a bit of research about this over the last few weeks,
and feel safe in saying that they really _aren't_ comparible and _are_ on
different levels.

Freenet is about having an anonymous system for sending files around.  It
doesn't maintain any connections.  Each node keeps a list of other nodes and
a hash of a key that has been known to come from that node.  It tries to
find files by asking people who have been known to produce files that have
keys that hash to something similar to the key being looked for.  There is
no way of searching, files are transfered along the hops taken to find the
path (so no one knows where the file was originally so you couldn't use this
as a fast way to take out the people with the file).

JXTA is an architecture for first connecting a network of users and then
doing host and service discovery.  That's all it itself is designed to do.
If you wanted to write an application like Freenet, it could be written over
JXTA, but as the network topology itself doesn't change, you wouldn't gain
some of the interesting aspects of Freenet.

OK, so far all I have really said is "JXTA is _just_ this and Freenet does
_this_ faster".  It's important to realize that _just_ doing something
important is a good thing, and that there is a lot more to the world than
_this_ :-).

An example: if you are trying to do file sharing a la Napster, something
like Gnutella blows Freenet so far away that it isn't even funny.  First
off, Gnutella can search, which is very important.  Secondly, Gnutella's
standard implementation doesn't have the added overhead of transferring
files between many users who may be in disparate locations just to get a
file from someone who may be downstairs, instead it only returns a URL to
find the file at, at which point the user downloads it directly from the
other party.  Third, Gnutella doesn't see a need to protect users from what
they are storing on their own system, and doesn't make a differentiation
between "files this user has on his computer and uses" and "files that are
being stored here by the network that other people can download from him,
carefully encrypted enough to make it annoying for him to know what terrible
things he is donating storage to", and thereby ends up with a much larger
region of storage (as many users share hundreds of megabytes of MP3s and
other files to the network, something they are unlikely to do if it is just
an encrypted blob that they have no idea what is in).

Once again, those "limitations" in file sharing lead to advantages in
anonymous file storage, but I think we can cut to the point here:

JXTA is a framework that provides an architecture for writing P2P
applications easily.  Also, as the initial main implementation is Java,
nodes that don't have an application or a service can easily (and securely)
transfer the code from a repository or from each other and run it without
having to worry much about security (hence a synergy with .NET).  OK, right
now their implementation sucks (so much so _I_ am at least avoiding it :-),
hehe), but their abstractions seem sound and as a better system is worked
into it, improvements will be seen in all applications.  I read that same
article you have there (first, as, like likely was true of you, my initial
reasons for researching JXTA were to prove to myself that it wasn't
something that needed to be looked at much), and after doing more research
am surprised at how misleading it is.

To me, an implementation of Freenet would be quite worthless in .NET, all
you really need is one implementation.  It isn't good for much else than it
is currently being used for (a statement the recent group who ported some
online games to work on Freenet will almost assuradly agree to, accourding
to their web page they only did it because they were bored and thought it
would be freaky), and if you try to make it do things that other
applications are good at you could quickly violate it's core principals
(which is seeable if you read enough of the content on their website, and
see the decisions they have had to make in the past to guarantee anonymity
of users).

However, an implementation of JXTA for .NET would be very useful, and would
do a lot to push forward P2P by making such applications both "easy to
develop" and "easy to develop in any language".  Any work that is done on
this should be done closely with the jxta.org people, as they are still
working on coming forward with the drafts and such.  (BTW, I'd be happy to
work with such an effort.)

Jay Freeman (saurik)

----- Original Message -----
From: "Adriano Galano" <adriano@satec.es>
To: "Martin Coxall" <martin.coxall@itouch.co.uk>; "Fiery Death"
Cc: "Fiery Death" <mono-list@ximian.com>
Sent: Tuesday, July 10, 2001 1:35 AM
Subject: Re: [Mono-list] Open Fire :-)

> Is marvellous that the marketing could do ;-)
> What JXTA is a infraestructure and Freenet one mechanism? What is the
> difference in your opinion between infraestructure and mechanism?
> Let's see: http://www.openp2p.com/pub/a/p2p/2001/05/02/jxta_trouble.html
> If you want more information about the "mechanism" look at:
> http://sourceforge.net/projects/eof/
> I don't know but maybe apt-get over freenet is something that sounds good!
> (or maybe rpm, Mr. Tiemman?)
> Yes, everything is possible to be ported to MONO but not all was sugested
> the ideas section ;-)
> 0
> -Bryam