<?xml version="1.0"?>
<!DOCTYPE content [ <!ENTITY nbsp " "> ]>
<rdf:RDF xml:base="http://snarfed.org/rdf"
         xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
         xmlns:dc="http://purl.org/dc/elements/1.1/">

<rdf:Description rdf:about="http://snarfed.org">
  <dc:title> snarfed.org  </dc:title>
  <dc:description> draw group stream of consciousness </dc:description>
  <dc:creator> Ryan Barrett &lt;snarfed at ryanb dot org&gt; </dc:creator>
  <dc:language> en </dc:language>
  <dc:format> text/html </dc:format>
  <dc:rights> Copyright 2002-2007 Ryan Barrett </dc:rights>
</rdf:Description>

<rdf:Description rdf:about="http://snarfed.org/space/p4">
  <dc:title> p4 </dc:title>
  <dc:creator> Ryan Barrett &lt;snarfed at ryanb dot org&gt; </dc:creator>
  <dc:date> 2003-01-01T05:00:00Z </dc:date>
  <dc:language> en </dc:language>
  <dc:format> text/html </dc:format>
  <dc:rights> Copyright 2002-2007 Ryan Barrett </dc:rights>

  <content>
    <p><a href="/space/p4"><img src="/space/notes.png" alt="/space/notes.png" title="" /></a></p>

<p>For the impatient: <br />
<a href="/space/p4-0.3.1.tar.bz2">Download P4 0.3.1</a> <br />
<a href="http://ryan.barrett.name/p4/doc/html/proposal.html">Original project proposal</a> <br />
<a href="http://ryan.barrett.name/p4/doc/html/poster.html">Poster (with diagrams)</a> <br />
<a href="http://ryan.barrett.name/p4/doc/html/protocol.html">Protocol specification</a> <br />
<a href="http://ryan.barrett.name/p4/doc/html/p4plugin_8h.html">API documentation</a></p>

<p><a href="/space/p4">P4</a> is a fully functional, self-organizing overlay
network similar to <a href="http://rfc-gnutella.sourceforge.net/">Gnutella</a> and
<a href="http://freenet.sf.net/">Freenet</a>. However, P4 differs in that it provides an
<a href="http://ryan.barrett.name/p4/doc/html/p4plugin_8h.html">API</a> for developing
plugin applications on top of the network. P4 handles the networking and exports
functionality for unicast, multicast, user and plugin discovery, and strong
encryption and authentication. This frees developers from worrying about
networking, and allows them to focus on building real functionality.</p>

<p>Since its release in early 2001, P4 has been surpassed by other general-purpose
overlay platforms such as <a href="http://jxta.org/">JXTA</a>,
<a href="http://groove.net/">Groove</a>, and Microsoft's <a href="/space/windows+p2p">Windows Peer-to-Peer
SDK</a>. Furthermore, <a href="http://overnet.com/">many</a>
<a href="http://freedom.net/">other</a> <a href="http://freehaven.net/">file</a>
<a href="http://mnet.sourceforge.net/">sharing</a>
<a href="http://en.wikipedia.org/wiki/FastTrack">networks</a> have long been superior to P4
in terms of routing algorithms, bandwidth management, anonymity, maturity, etc.
(They're mostly dedicated file-sharing networks, though, not general-purpose
networks.)</p>

<p>For these reasons, P4 is not currently as competitive as it was a few years ago.
However, it's still a viable alternative, especially if you're looking for a
simple, lightweight, embeddable networking solution. P4 requires only <a href="http://en.wikipedia.org/wiki/Berkeley_sockets">Berkeley
sockets</a> and
<a href="http://www.llnl.gov/computing/tutorials/workshops/workshop/pthreads/MAIN.html">pthreads</a>,
and the shared library weighs in at a slim 270K.</p>

<p>P4 has been tested on RedHat 9, SUSE 8, Debian stable, Solaris/SunOS 5.8, and
Mac OS X. It should build on most *nix platforms without much modification.
Windows Visual Studio project files are included for building on Windows, but
they're not currently maintained.</p>

<p>P4 is distributed under the <a href="http://www.gnu.org/licenses/gpl.html">GPL</a>.
Copyright 2001-2004 <a href="http://keeda.stanford.edu/~kash">Ken Ashcraft</a>, <a href="http://ryan.barrett.name/">Ryan
Barrett</a>, <a href="http://maulik.net/">Maulik Shah</a>, and
<a href="http://cs.stanford.edu/~nstoll">Nathan Stoll</a>.</p>

<p>See also:</p>

<ul>
<li><a href="/space/synchronizing mp3 playback">synchronizing mp3 playback</a></li>
<li><a href="/space/libmsntp">libmsntp</a></li>
<li><a href="/space/libwebserver shutdown patch">libwebserver shutdown patch</a></li>
</ul>

  </content>

  <rdf:Seq>

  </rdf:Seq>
</rdf:Description>
</rdf:RDF>
