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