IMO, the biggest challenge of making this server-less is NAT traversal. Discovery is also a problem if this becomes an open standard.
Setting up an open SparkleShare server that can bridge traffic between two NAT'ed clients might be able to solve the problem. It'd be a plus if there was a way to take the bridging server out of the loop once data transfer starts (I don't know if that's technically possible though). The same SparkleShare server could be a default discovery server for new users, so they get a "it just works" experience (e.g., run the setup on two machines, with the same login credentials they find each other through the discovery server).
Designed correctly, the server-less and the hosted scenario should function the same - in a hosted scenario you just happen to always have one client online.
IMO, the biggest challenge of making this server-less is NAT traversal. Discovery is also a problem if this becomes an open standard.
Setting up an open SparkleShare server that can bridge traffic between two NAT'ed clients might be able to solve the problem. It'd be a plus if there was a way to take the bridging server out of the loop once data transfer starts (I don't know if that's technically possible though). The same SparkleShare server could be a default discovery server for new users, so they get a "it just works" experience (e.g., run the setup on two machines, with the same login credentials they find each other through the discovery server).
Designed correctly, the server-less and the hosted scenario should function the same - in a hosted scenario you just happen to always have one client online.