Frequently Asked Questions

Author: Eelco Lempsink

Author: Josh Guilfoyle

Abstract

This document is a collection of the most common questions found on the mailing lists and in our IRC channel. Please review the answers carefully before posting a support request.


Table of Contents

1. Generic
2. Troubleshooting
3. Usage

1. Generic

Q: What is giFT?
Q: How do I get giFT?
Q: What protocol plugins are available?
Q: Can I use multiple plugins at once?
Q: Why do you use a daemon?
Q:What is giFT?
A:

giFT is a system of components that work together to provide an elegant, easy-to-use framework for the development and usage of popular peer-to-peer networks. The system's core component, giftd, is the central bridge between the backend protocol plugins and the user interfaces (sometimes referred to as "giFT clients").

Q:How do I get giFT?
A:

You can download the latest release from our Sourceforge file list, and (for most UNIX platforms) follow the instructions from the Installation Guide.

Please note that giFT alone (that is giftd, libgift, and libgiftproto) will not actually provide a fully functional peer-to-peer client. You will need to download at least one protocol plugin and a client.

There are also packages available in the Debian GNU/Linux distribution for those of you that have been blessed with Super Cow Powers. Simply install the gift meta package which will provide most of the components that you will need. Other platforms may also independently provide their own packages for the giFT framework.

Q:What protocol plugins are available?
A:

The following plugins are currently known to exist (please note that only some of these plugins are actually considered supported by this project):

gift-openft *

Implements the OpenFT network, an open source alternative to FastTrack built completely from scratch for the giFT framework.

gift-gnutella *

Implements a large portion of the Gnutella network (not version 2).

TODO: The author of this document knows little about the implementation details of this plugin, and so little information is provided at this time.

gift-fasttrack

Implements the hugely popular FastTrack network used by KaZaA (and formerly Morpheus and Grokster).

Please note that this network plugin was produced through reverse-engineering and is NOT the same as other popular clients utilizing this network.

gift-opennap
gift-soulseek

* - Officially supported by the upstream developers.

Q:Can I use multiple plugins at once?
A:

Certainly. Simply run gift-setup (or alternatively, edit $HOME/.giFT/giftd.conf) and take a look at the documentation for the /main/plugins configuration option.

Q:Why do you use a daemon?
A:

It creates an easy way for people to focus their development efforts on the particular component that interests them most. That is, GUI developers do not need to worry about protocol details, and protocol developers do not need to worry about display/interface details.

2. Troubleshooting

Q: When I try to start giftd it tells me that my setup is "incomplete", what should I do?
Q: Why do I get startup errors trying to load specific protocol plugins?
Q: Protocol X cannot connect, what's wrong?
Q: When I try to start giftd it tells me that my setup is "incomplete", what should I do?
A:

Make sure that you have used the gift-setup utility to properly configure the software. If you have already done this, make sure that you have answered the first question correctly (it was intentionally worded in a manner to force new users to actually read the configuration documentation before answering the questions!).

After your initial run of gift-setup, you may omit this step in the future when you wish to change or update your configuration by simply descending the $HOME/.giFT directory and poking around at the .conf files found there.

Q: Why do I get startup errors trying to load specific protocol plugins?
A:

By an overwhelming margin, the two most common reasons for this are that the user (that's you) has either specified the name of the plugin incorrectly, or the plugin has not been completely or correctly configured prior to giftd invocation.

If you are receiving errors actually opening/executing the protocol plugin, make sure that the name of the plugin you specified in the configuration file matches the name of the plugin that you downloaded (case matters!). If you are still having problems, I recommend running giftd -V | grep PLUGIN_DIR to determine where giftd is actually searching for the plugins. Examine the contents of the directory, and make sure that you have correctly installed the plugin (you should see a libPLUGIN.so file in this directory).

If it appears that the log file and/or error output is suggesting that the plugin has not been configured correctly, you should make sure to run gift-setup after installing the plugin. Please note that some plugins do not use the gift-setup configuration system and must be manually setup. The most common example of this is gift-fasttrack, which requires that the user (in some cases) manually run mkdir $HOME/.giFT/FastTrack before the plugin will start. Hopefully this behaviour will be corrected in future releases of gift-fasttrack.

Q: Protocol X cannot connect, what's wrong?
A:

This is perhaps the most frequent (and most annoying) question that we receive, so I'm going to force you to choke on a little background information before I even attempt an answer.

First, it is important to understand that giftd provides a framework for third-party plugins in which to nest, but it does not actually control how those plugins work, or develop. For this reason, the upstream giFT developers often have no idea why some unknown/foreign protocol plugin is not working exactly as you might expect. Naturally, you should contact the appropriate development team when attempting to request support. For example, if gift-fasttrack isn't working, contact the gift-fasttrack developers -- it is as simple as that.

Second, a common property of most peer-to-peer networks is the extremely limited availability of peers and peer resources. This often means that new users will be devalued and may require additional time to connect, or may not even be able to connect at all when the most localized group of nodes is unable to accept connections. This is especially true with smaller networks like OpenFT which do not have a large probabilistic network to poll from when certain sections become stressed. Yes, it sucks, we know this. What few things we can do to improve the situation are constantly being explored and worked on, but as is a common theme with most open source projects, we simply don't have the time to do everything!

And now finally, your answer. Each protocol plugin has its own method of node discovery and propogation (as do most networks, independent of their giFT implementations), which means that there is no one unified answer to this question. For gift-openft, you can often find a more up-to-date nodes file to replace the default here. To install this file, simply close giftd, copy to $HOME/.giFT/OpenFT/nodes, then restart. Please note that this method does not guarantee a network connection! For other plugins, you should consult the appropriate documentation (if any exists) and find the answer in the context of that plugin.

3. Usage

Q: Why does giftd bog down my system so much?
Q: I run giftd, but nothing happens. What gives?
Q: Why does giftd bog down my system so much?
A:

For new giFT users, the system will attempt to calculate a hash (MD5, SHA-1, etc) for each file that you are sharing for each of the hashing algorithms registered by your loaded plugins. This often requires a great deal of disk and CPU resources that may cause your computer to run sluggish while it's working.

Once you have allowed this process to complete successfully, the calculated hashes will be stored in a local shares file and will be read in at the next startup. The shared directories will be scanned for new entries, but for the most part, the disk and CPU usage will be substantially lower.

Q: I run giftd, but nothing happens. What gives?
A:

giftd does not use direct input/output to the user in the conventional user interface sense. You will want to use a giftd client to interface with the system. Also make sure that you have downloaded, installed, and configured your preferred protocol plugin before running giftd.