From the giFT documentation at the giFT homepage:

OpenFT is a file sharing protocol developed by the giFT project. It is loosely based on the idea of FastTrack, working in a different way to well-known file sharing programs like Napster and Gnutella. Napster (and OpenNap) work with one server providing users a way to share files and search for files from other users, in a big list. This requires constantly running servers, and bringing the network down is as easy as shutting those (few) servers down. Also, those servers must be able to handle thousands of connections, and must have lots of memory and disk space to maintain and search the filelists. Gnutella creates a structure of 'nodes' (computers connected to the network), with every node connecting to a few others. Search requests must be forwarded through the whole network (or at least a large part of it). Because of this, Gnutella uses a lot of bandwidth, and it can take a long time to receive search requests.

Figure 2: Napster and Gnutella OpenFT combines the idea of Napster and Gnutella, making a network of nodes connected to each other, but with certain nodes having specific tasks. There are 3 different kind of nodes.

  • USER
 The 'normal' nodes are USER nodes, they don't have any special function.
SEARCH
 These nodes handle search requests. They search the filelists their CHILD
 nodes (explained below) submitted to them. These nodes must have a capable 
 Internet connection and at least 128M RAM. A modern processor is highly 
 recommended as well.
INDEX
 Nodes with a fast connection and lots of memory should be INDEX nodes. INDEX 
 nodes keep lists of available search nodes, collect statistics, and try to 
 maintain the structure of the network.

A node can be both a SEARCH and a INDEX node. USER nodes will pick three SEARCH nodes to be their PARENT nodes. They'll submit their shares list to them if the PARENT accepts the USER as its CHILD. By default, SEARCH nodes will be PARENTS for a maximum of 500 CHILD nodes.

Figure 3: OpenFT For more technical information about OpenFT, you must read the source code, because there's no document covering that at the moment. Also, you can use Doxygen to generate documentation from comments in the source files, using doxygen/doxygen.conf in the CVS repository. When we (members of the giFT project) say 'OpenFT', we can mean two different things. First, there is the OpenFT protocol, but there's also OpenFT as an implementation in the form of a plugin for giFT. Keep that in mind.