<qandadiv>

  <title>Jungle Monkey and other file transfer programs</title>

  <qandaentry>

    <question>
      <para>
	What's the difference between JM and FTP?
      </para>
    </question>

    <answer>

      <para>
	FTP is the classic file transfer protocol/program.  You
	connect to an FTP server with an FTP client and download
	or upload files.  Archie is the classic FTP searching
	tool.  Nowdays you can search for files using any search
	engine.  The FTP protocol is well documented and has
	hundreds of implementations.
      </para>

      <para>
	Jungle Monkey is not client-server based.  The JM
	protocols are not well documented and there is only one
	implementation.
      </para>

    </answer>

  </qandaentry>


  <qandaentry>

    <question>
      <para>
	What's the difference between JM and Hotline?
      </para>
    </question>

    <answer>
      <para>
	Hotline is basically FTP but all servers can register
	with a central server to create lists of available
	servers.  Hotline also has news and chat.  I believe the
	clients are free, but you have to pay for a server.
	Hotline is a proprietary program.
      </para>

      <para>
	Jungle Monkey is more distributed.  Because Jungle Monkey uses
	multicast, it is potentially more scalable.  Jungle Monkey is
	also open source and free.
      </para>

      <para>
	Hotline Homepage: <ulink url="http://www.hotlinesw.com">http://www.hotlinesw.com</ulink> 
      </para>

    </answer>

  </qandaentry>


  <qandaentry>

    <question>
      <para>
	What's the difference between JM and Napster?
      </para>
    </question>

    <answer>
      <para>
	Napster is a program for sharing MP3's.  A central Napster
	server has a list of each client's MP3s.  You can search this
	database to find the closest Napster client with the MP3 you
	want.  You receive the MP3 directly from the client with the
	MP3 - it does not come from the Napster server.
      </para>

      <para>
	Jungle Monkey works with any file.  When you download the
	file, you will download it from the closest host with the
	file, which is not necessarily the host which originially
	had the file.  JM search is distributed, there is no central
	database.
      </para>

      <para>
	Jungle Monkey is open source, Napster is not (though there
	are open source clones).
      </para>

      <para>
	Napster Homepage: <ulink url="http://www.napster.com">http://www.napster.com</ulink>
      </para>
    </answer>

  </qandaentry>


  <qandaentry>
    
    <question>
      <para>
	What's the difference between JM and iMesh or CuteMX?
      </para>
    </question>

    <answer>
      <para>
	Both of the programs are basically like Napster, but
	will work with any sort of file.
      </para>

      <para>
	IMesh homepage: 
	<ulink url="http://www.imesh.com">http://imesh.com/</ulink>
      </para>

      <para>
	CuteMX:   
	<ulink url="http://cutemx.com">http://cutemx.com/</ulink>
      </para>
    </answer>

  </qandaentry>


  <qandaentry>

    <question>
      <para>
	What's the difference between JM and Gnutella?
      </para>
    </question>

    <answer>
      <para>
	Gnutella is Nullsoft's file sharing program (Nullsoft is owned
	by AOL).  It was never officially released, and it is unclear
	whether it will ever be officially released.  However, some
	programmers have reverse-engineered an early beta version and
	written clones based on it.
      </para>

      <para>
	Gnutella clients form a mesh.  Users join the mesh by first
	connecting to a well-known server and then the user may
	manually connect to other clients.  When a client joins the
	mesh, it floods the mesh with information about it (which is
	basically an address and a globally unique ID).  Each client
	who receives this message responds with information about
	itself.  This way, all clients know the next hop to all other
	clients.
      </para>

      <para>
	Clients search for files by flooding the mesh with search
	messages.  The message has a TTL to limit its spread.  One
	unofficial spec says that other clients must track the search
	message to prevent loops.  (Though this isn't necessary
	because clients have the routing information to do reverse
	path broadcasting.)  If a client has a file the requester
	wants, it sends a message back to it.  The file transfer is
	made directly from the client with the file using an HTTP-like
	protocol.
      </para>

      <para>
	A Nullsoft employee said in an IRC chat that Gnutella would
	probably not scale to more than 250 or so clients.  The intent
	was that groups of people would join one small mesh that was
	known only to them (eg, a group of friends might have their
	own mesh).  The advantage of this is that there is no central
	server which an ISP could ban connections to.
      </para>

      <para>
	Official Gnutella homepage (down): 
	<ulink url="http://www.gnullsoft.com">http://www.gnullsoft.com/</ulink>

	Unofficial Gnutella hompage: 
	<ulink url="http://gnutella.nerdherd.net">http://gnutella.wego.com/</ulink>
      </para>
    </answer>

  </qandaentry>


  <qandaentry>

    <question>
      <para>
	What's the difference between JM and Freenet?
      </para>
    </question>

    <answer>
      <para> 
	Freenet is a distributed file publication system.
	In Freenet, each node (or "host", or "computer") has a
	cache of files and each file has a name.  Nodes connect to
	each other to form a mesh (it is not specified how the
	host decides who its neighbors are in the mesh).  The
	namespace in Freenet is flat and nodes can allocate names
	freely.
      </para>

      <para>
	Hosts can place files in their cache or any of their
	neighbors caches.  If a host needs a file not in their
	cache, it asks its neighbor for the file.  If the neighbor
	has the file, it gives the file to the requesting host.
	Otherwise, the neighbor asks one of its neighbors for the
	file.  If that neighbor doesn't have it, it asks the next
	neighbor, and so on.  In this manner, the mesh is searched
	depth-first for the file (though there is a TTL on the
	search so that the entire mesh isn't searched).  It is not
	specified how a host decides which neighbor to ask for a
	file it needs.
      </para>

      <para> 
	Note that to get a file it only needs to be in a
	cache _somewhere_ in the mesh.  That is, the node that
	originally had the file may not even be in the mesh.
      </para>

      <para> 
	In Jungle Monkey, each file has a URL allocated by a
	host.  The URL has includes the host's name, so the
	namespace isn't flat.  File are transfered using an E2E
	multicast tree, but to join the tree a host must connect
	to the host with the file first.  The advantage of this is
	that each host effectively has its own namespace that
	cannot be polluted by other hosts.  The disadvantage is
	that two hosts may offer the same file but it would have
	different multicast channels and thus different URLs.
      </para>

      <para> 
	Freenet was conceived by Ian Clarke of the University
	of Edinburgh.  It is described in his paper/tech
	report/thesis (?), "A Distributed Decentralised
	Information Storage and Retrieval System", available on
	the Freenet homepage.  The paper also includes the results
	of some basic proof-of-concept experiments.
      </para>

      <para>    
	Freenet homepage:   
	<ulink url="http://freenet.sourceforge.net">http://freenet.sourceforge.net/</ulink> 
      </para>
    </answer>

  </qandaentry>


  <qandaentry>

    <question>
      <para>
	What's the difference between JM and ___?
      </para>
    </question>

    <answer>
      <para>  
	Some other EM projects include:

	<itemizedlist>
	  <listitem><para>
	      Yoid (
	      <ulink
	      url="http://www.aciri.org/yoid">
		http://www.aciri.org/yoid</ulink>)
	    </></>

	  <listitem><para>
	      Narada (
	      <ulink
	      url="http://www.cs.cmu.edu/~hzhang/multicast/other/endsystem-index.html">
		http://www.cs.cmu.edu/~hzhang/multicast/other/endsystem-index.html</ulink>)
	    </></>
	  <listitem><para>
	      Overcast
	    </></>
	</itemizedlist>
      </para>

      <para>  
	Some other overlay network projects include:
      </para>

      <para>  
	Some other EM projects include:

	<itemizedlist>
	  <listitem><para>
	      MBone (
	      <ulink
	      url="http://www.cs.columbia.edu/~hgs/internet/mbone-faq.html">
		http://www.cs.columbia.edu/~hgs/internet/mbone-faq.html</ulink>)
	    </></>
	  <listitem><para>
	      X-Bone (
	      <ulink
	      url="http://www.isi.edu/xbone">
		http://www.isi.edu/xbone</ulink>)
	    </></>
	</itemizedlist>
      </para>

      <para>  
	Write me <email>dhelder@umich.edu</email> if I've missed your project.
      </para>
    </answer>

  </qandaentry>

</qandadiv>

