The term "peer-to-peer" has come to be applied to networks that expect end users to contribute their own files, computing time, or other resources to some shared project. Even more interesting than the systems' technical underpinnings are their socially disruptive potential: in various ways they return content, choice, and control to ordinary users.