devchat notes 20-Jun-2017
Brian Warner
warner at lothar.com
Tue Jun 20 21:43:53 UTC 2017
Tahoe-LAFS devchat 20-Jun-2017
Attendees: warner, exarkun, meejah
Notes:
* twisted book ideas: tahoe, magic-wormhole, buildbot
* magic-wormhole ops stuff
* API to turn on mitigation
* stats fetcher API instead of writing out JSON files
* wormhole rendezvous server could accept JSON blobs over unix-domain
socket, return results as JSON via same path
* then write external proxy program which does whatever auth you want
* wormhole-server --api-port=unix:/path
* https://github.com/warner/magic-wormhole/issues/176
* NaCl-based signed/Boxed requests/responses
* write "wormhole-server-api-client" to speak the client-side
* or do auth/encryption in-process
* plugins
* or pre-write multiple auth schemes as people ask for them
* or SIGUSR1: reread configfile
* down-side of --api-port=: easy to accidentally expose, e.g.
--api-port=tcp:0.0.0.0:1234
* magic-wormhole PoW/DoS-mitigation stuff
* warner will read wormhole#126 /PR165
* maybe/maybe-not automatically pop open web browser
* meejah finds it kind of rude to launch a browser surprisingly
* maybe have them hit return at the "enter token" prompt to pop-open
their web browser
* jp: open local web server, point user's browser at that, auto-submit
token
* or, in a WebView, provide a window.somethingNew API to auto-submit
(like how Persona used to do it)
* tahoe-invite
* at least needs magic-wormhole 0.10.0 with new API
* CNAME
* tahoe invite / tahoe create-node --join
* tahoe create-node --join=WORMHOLECODE
* current patch makes this be create-client: disables storage
* only thinking of this as a client thing for now
* "tahoe invite" is run on any node
* because it currently only provides the introducer.furl and
recommended encoding parms
* and suggested nickname
* so notionally it's run on the introducer node
* LAE won't use these commands
* server will use some internal API
* gridsync will wrap client, do its own wormhole stuff, emit tahoe.cfg
* so main customer right now is:
* power users who want an LAE server but who won't run the gridsync
client
* friendnet admin who want easier client setup
* two sides exchange an abilities message first
* so initial code will use v1, which transfers just introducer.furl
and encoding parameters
* later, v2 means grid-manager, which also does accounting pubkeys
* need a way to make an interactive code-entry form of create-client
* maybe "tahoe create-client --join=ASK", or "tahoe create-client
--accept"
* but to be honest, tab-completion is not a priority-1 feature
* also think about web-based config setup
* "tahoe create-client --websetup"
* then a web-based UI asks for the invitation code
* restarts itself after tahoe.cfg is written
*
* tahoe start/daemonize/run, PR417
* change "tahoe start" to bail with error on windows
* exarkun would like to see "tahoe start" go away, only provide "tahoe
run", use external daemonizers
* should we also get rid of "tahoe stop"?
* warner wants a handy command for local testnets
* maybe supervisord (which is in homebrew), or daemontools
* this exists so that async startup (for async leasedb) can async
fail, and "tahoe start" exits with error
* goal is to replace the Client() constructor API (as called by
startstop_node.py) with a function that returns a Deferred
* internally it will build all the sub-objects that Client needs
(i.e. leasedb) asynchronously, then feed them in as pre-constructed
attrs to Client()
* the Deferred it returns will fulfill a contract that says "when you
finally get this Client object, it will be fully ready to go, and
any obvious early/late errors that would prompt us to terminate the
process will have happened by now"
* later we can provide softer contracts, like "this is good enough
for downloading, but might not yet be good enough for uploading"
* moving tahoe to a more library-like interface (with possible shared
connection pools, like twisted's http2/Agent API) can make this
easier
*
* warner will look for a "tahoe start" replacement, then he can be
comfortable with hard-deprecation "tahoe start"
* aka "deprecate with an axe"
* maybe add a helper shell script to misc/
*
More information about the tahoe-dev
mailing list