file exchange protocol in clang/distcc

I’d like to discuss about file exchange method for clang/discc. I’d like to use ssh protocol, because it is a standard and supports authentication.
any opinion ?

Hi Peter,

I think it depends on your goals. Consider the following points:

1) Should a user require full account access on a remote machine in order to use it for distcc? Is this absolutely necessary? What are the tradeoffs? Having a "distcc" account on remote machine that is dedicated for the purpose of doing remote compiles isn't necessarily a bad thing, as it isolates access of resources. There is an administrative cost, however, of setting up an account and installing ssh keys on every single machine. In order to make clang-distcc useful, we probably want low administrative overhead to lower the administrative cost of using it.

What does the standard distcc do?

2) There is a high cost of initiating the ssh connection (a key exchange has to be done using cryptography primitives that are typically more expensive to use that the ciphers used by ssh to encrypt data). Do you plan on keeping an ssh connection open throughout the compilation of a source file(s) on a remote host? This answer to this question directly effects scalability. Keeping a bunch of connections open is also a scalability concern. I'm not an expert on distributed network protocols, so hopefully someone else has more insight here.

3) Encrypting data that does not need to be encrypted wastes a non-negligible amount of CPU cycles, both on the sender and the receiver. This has immediate ramifications on scalability, as you rob precious cycles from potentially other compilation jobs.


I'd 1) keep it simple, and 2) make the transport pluggable in the future so that people can choose the right protocol for their needs.

In the short term, do whatever is simplest... following what standard distcc does is a great way to start.