Opened at 2012-03-26T13:11:24Z
Last modified at 2016-05-05T01:09:46Z
#1694 new enhancement
package client and server separately
Reported by: | zooko | Owned by: | somebody |
---|---|---|---|
Priority: | normal | Milestone: | undecided |
Component: | packaging | Version: | 1.9.1 |
Keywords: | performance security packaging p2p | Cc: | |
Launchpad Bug: |
Description (last modified by zooko)
https://tahoe-lafs.org/pipermail/tahoe-dev/2012-March/007084.html
https://tahoe-lafs.org/pipermail/tahoe-dev/2012-March/007085.html
Here is a story that we should implement:
As a system administrator, I install the tahoe-lafs server software on a machine, and I know that since I didn't install the client software, the process running there will not import any code which is useful only to clients, will not open connections to other servers (which is #344), will not expose client-only services (which could be a security risk), and will not use up extra RAM or other computational resources to do client-only behavior. Also, installing the tahoe-lafs server doesn't depend on other software packages which are needed solely for the client.
Likewise, I can install the tahoe-lafs client software on a machine and have all the equivalent freedom from unexpected serverish behavior.
Change History (4)
comment:1 Changed at 2012-03-29T19:09:24Z by davidsarah
- Priority changed from major to normal
comment:2 Changed at 2012-11-22T01:10:37Z by davidsarah
- Keywords performance security packaging added
comment:3 Changed at 2013-06-25T15:47:33Z by zooko
- Description modified (diff)
- Keywords p2p added
comment:4 Changed at 2016-05-05T01:09:46Z by warner
I'm -1 on splitting client and server code apart so completely.. I recently started to do this with magic-wormhole, but Glyph talked me down. There are enough interdependencies between the client-ish pieces and the server-ish pieces that it'd be a difficult split: we'd need some third package (and a name on pypi) to hold all the things that are needed by both client and server distributions.
And testing things would be more difficult. In the magic-wormhole experiment, I had a single git repo with multiple setup.py directories, and a tox config that attempted to install everything into a common virtualenv. It was messy.
I'm not opposed to having a tahoe-server command that's used to do server-only things, and remove those subcommands from the client-centric tahoe command, but I don't think it'd be a win.
I'm +1 on making a clear distinction between the behaviors of tahoe "clients" and "servers" (replacing the muddy concept of "node" with something that's definitely "client", or "server", or explicitly "both client+server"). So if you run tahoe create-client, then you can be sure that your process is not going to provide or advertise storage service (unless you subsequently modify tahoe.cfg to re-enable it). And tahoe create-server will refrain from connecting to storage servers because it doesn't need to. But in my current frame of mind, I'd like that to be controlled by tahoe.cfg, rather than having the code be absent entirely.
adding keyword p2p to tag tickets that have to do with the open question of "Is Tahoe-LAFS client-server or is it peer-to-peer?": pipermail/tahoe-dev/2012-July/007533.html