Technical Documents
The LimeWire client code has evolved into both a sophisticated graphical user interface and a core Gnutella protocol and sharing engine. These are the components that make up the gui and core projects respectively. To describe the design and operation of these system components, we have put together a collection of design documents.
LimeWire Design
The LimeWire design document lays out the important class structures throughout the LimeWire code and gives an idea as to how they operate. Important components of the code are grouped together and their interoperation is explored. This documentation should greatly increase your understanding of the LimeWire code at the design level.
LimeWire Javadocs
The actual source code of LimeWire is generally well documented. This allows for high quality Javadocs on the LimeWire package structure. This is a must read for developers interested in understanding specific sections of the code. Note that developers can build these javadocs themselves from the source code if they follow some special rules. See the makedoc instructions. LimeWire Coding Conventions Ever a controversial area with developers, LimeWire has a set of coding conventions. Following standards is an important part of any development effort. The distribution of millions of copies of peer to peer software raises the required level of testing and quality. This process begins with unit tests, careful programming and a style of programming that allows for testability.
Getting Down to Specifics
Here is a collection of other specific documentation of value to developers:
- Coding Conventions
- CVS Tagging Conventions
- Known Performance Problems
- Anti-Spam Technologies
- Keyword Matching Algorithm
- Result Grouping Algorithm. Also describes how search results are rendered in the GUI.
- Download Mechanism
- Adding support for non-blocking IO (NIO)
- Original Gnutella Protocol Specs
- RFC Gnutella
- Gnutella Wiki

