Most of peer-to-peer applications and middleware revolve around some form of file sharing as the main feature provided and target the Internet scenario. As a result of these choices they implement best-effort mechanisms for file searching and retrieving over millions of nodes. In developing PeerWare we had a different goal: to design a peer-to-peer middleware that could ease the development of applications supporting distributed and mobile cooperative work in enterprise scenarios.
PeerWare provides a core and minimal set of flexible and extensible primitives sufficient to support any kind of peer-to-peer application, or to constitute the core for higher-level, application-specific middleware. It does not provide any kind of application specific service, and consequently has not been developed with file sharing in mind, although it is indeed data-centric. Also, it offers several forms of extensibility and flexibility both at the service level and at the architectural level. As an example, at the service level the effect of every PeerWare primitive depends on a piece of code, the action, specified by the caller. Similarly, at the architectural level, several components, like the local repository or the security and access-control manager adopted can be easily changed to adapt to different environments.
Moreover, being oriented towards the enterprise rather than the Internet, PeerWare implements "complete" searches in a scalable manner. Perhaps not so scalable to be used on the Internet with millions of nodes, but scalable enough to cope with the size of a large enterprise.
Finally, we observed that advanced collaboration cannot be based only on proactive services. Functionalities like the ability of searching the shared information space for specific documents when needed are fundamental to support collaboration but the proactive paradigm is not enough. Reactive services, like the ability to be notified if a new document appears or a user joins the system, are also required. PeerWare integrates in a single unifying model both proactive and reactive primitives.
We hope that you will find the PeerWare model amenable to the styles of peer-to-peer programs that you want to write. To learn more, see how it works, or jump into the API documentation to figure it out. You can also download it and start coding. PeerWare is open source, with the use of the binaries and source code regulated by the GNU Lesser Public License.