A few characteristics most projects consistently fail to meet are (a) keeping the source code available, small, relatively simple and easy to compile, (b) allowing peers the option to connect directly after discovery without routing traffic through a third party and (c) recognising that not all peers want to form massive infinitely scalable networks, most will prefer small ones.
Most P2P projects choose a design that forces the majority of users compromise in order to accomodate a few unpredictable/hypothetical edge cases. "Perfect" gets in the way of progress. History shows there is no "perfect" when it comes to P2P.
Also, being able to ping my iOS phone that's on 4G from my computer feels like magic.