Changes between Version 1 and Version 2 of NewCapDesign


Ignore:
Timestamp:
2009-07-11T12:29:35Z (15 years ago)
Author:
warner
Comment:

more notes

Legend:

Unmodified
Added
Removed
Modified
  • NewCapDesign

    v1 v2  
    1515
    1616 * make then start with {{{x-tahoe:}}} or {{{tahoe:}}}, register {{{tahoe:}}}
    17    with IANA (#418)
     17   with IANA (#418) (#683)
    1818 * understand how URI/URL/URNs are built, decide about hierarchical segments
    1919   vs non-hierarchical segments. What's magical about a leading double-slash?
    2020   Do we need one?
     21 * according to #683, a URI !!!identifies!!! a resource, but does not
     22   necessarily provide enough information to actually access it (i.e. if you
     23   have a URI and somebody pointed you at a file, you could confidently tell
     24   them whether or not it was the right file, but if you only have the URI,
     25   nyou might not be able to find the file without additional information). If
     26   the cap has both identifying and location information, it's called a URL.
     27 * Tahoe filecaps are meant to be URLs (they are intended to provide location
     28   information), but to really make that work, you also need to define which
     29   grid you're talking about. So far this has always been implicit, but that
     30   has caused us problems. #403 talks about making an explicit "gridid" and
     31   would provide a procedure to get from a gridid string to a set of storage
     32   servers. The existing tahoe codebase could use the introducer FURL as a
     33   gridid, if there were a good place to put it in the filecap (#683 touches
     34   on this).
     35  * from the point of view of a web browser, you also need a gateway service
     36    (the Tahoe client node with a webapi frontend). The tahoe URLs that we've
     37    been passing around so far always reference one of these, either by
     38    assuming that {{{http://localhost:8123}}} is a suitable gateway or by
     39    explicitly referencing an external gateway like testgrid.allmydata.org
     40    (with deleterious effects on security and availability). I hope that our
     41    new filecaps are defined independently of a webapi gateway used to access
     42    them, and that we have a clear procedure for starting with a filecap and
     43    a gateway HTTP URL, and ending with the contents of the file.
     44
    2145
    2246== other features ==
     
    3559   {{{http:}}}, then they'll be made clickable. This is at odds with the
    3660   IANA-friendly {{{tahoe:}}} prefix. Clients may make {{{tahoe:}}} URIs
    37    clickable too (I've seen them make other letters-than-colon strings
     61   clickable too (I've seen them make other letters-then-colon strings
    3862   clickable, even when the letters are not "http"), so perhaps a reasonable
    3963   solution is to provide an OS-level URI handler for the {{{tahoe:}}}
     
    5074   Writeable Mutable" and {{{FRI..}}} for "File Readonly Immutable". If these
    5175   are jammed against the (base62) crypto bits it may be difficult to tell
    52    where the prefix ends and the crypto bits begin ({{{FRIDWM...}}}).
     76   where the prefix ends and the crypto bits begin, especially because the
     77   crypto bits will be using the same character set ({{{FRIDWM...}}}). It
     78   might be a good idea to separate the type prefix from the cryptobits:
     79   {{{FRI-cryptobits}}} or {{{FRI/cryptobits}}}.
    5380  * in addition, tahoe URIs should be distinguishable from local filenames by
    5481    a CLI tool, so that {{{tahoe cp $CAP local/foo.txt}}} is unambiguous.
     
    75102   particular may require a grant of storage authority, which might entail a
    76103   cap format that can accept arbitrary extra non-hierarchical fields.
    77    Appendcaps or "drop-box" writecaps might fall into this same space.
     104   Appendcaps or "drop-box" writecaps might fall into this same space. But
     105   remember that URIs should identify objects, not the action that you want
     106   to do on it: a webapi scheme may use a POST/PUT/DELETE method, or append a
     107   t=json adverb, or alternatively encode the verb/adverb into the HTTP url
     108   (think {{{GET .../filecap/json}}} or {{{PUT unlinked/ciphertext}}}), but
     109   these are independent of the underlying filecap.
    78110 * provide ciphertext access. Reading from a verifycap should give you
    79111   ciphertext. It should be possible to upload ciphertext directly.