Welcome to the CP2PC Home Page

CP2PC (pronounced "copy to pc") is a project carried out by the Globe group at the Vrije Universiteit and funded by Stichting NLnet. In CP2PC we develop a minimal programming interface to file sharing peer-to-peer systems. Client side applications can be built on top of this interface by different groups. In addition we will ourselves develop a simple GUI client which will integrate the various P2P protocols.

Request for Feedback

We've drafted a design document describing a unified file-sharing application and have designed a preliminary unified file-sharing API. The design documents are available through the above links.

We have currently implemented the API for Gnutella and GDN. Although we have already implementated a large part of the API, we are still very interested in comments and feedback about our application and API from the people who are intimately familiar with actual P2P file-sharing systems (both from a networking perspective as well as from an application programmer perspective). Are there concepts and/or functions that don't map well onto some existing systems? are there things we've overlooked? or just misunderstood? Do you have any good ideas that can be incorporated into an 'uberclient'?

We are especially interested in comments about open issues such as: How to represent file attributes and search results (XML, RDF, etc.), how to configure and monitor individual networks, etc.

Please send your comments and feedback to globe=cp2pc@cs.vu.nl.

Why CP2PC?

Several P2P networks exist that are used for sharing files among clients, for example Gnutella and Mnet. Each network uses its own suite of protocols, leading to a number of client applications that are difficult or impossible to integrate. In particular each P2P network has its own proprietary client-side software. In fact some P2P systems are based on the same technology, but cannot be integrated easily. An example of this is the Fasttrack's P2P protocol suite, on which Kazaa, Grokster and Morpheus (used to be) are based.


As the first step we examined the functionality present in current P2P systems. Some of the functionality is shared by many systems; other functionality is particular to just a few systems: We also looked at particulars of client applications: Based on our experiences we have arrived at a programming interface that maps to each of the P2P protocols. We have (and are) working together with the Tristero project to keep our API compatible with their API.

The second step involves implementing the API for existing P2P file-sharing systems. We currently have implementations for Gnutella and GDN.

The third step involves implementing an 'uberclient' application that uses the CP2PC API. We currently have a basic GUI 'uberclient' implementation.


The links below point to a collection of notes that can also be accessed here.


Hard Workers

Ex Hard-Workers

Lazy Bones



Logo Globe Project The Globe Project
Logo Stichting NLnet Stichting NLnet (CP2PC page at NLnet)