Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Dilated File Transfer #23

Open
wants to merge 49 commits into
base: main
Choose a base branch
from
Open
Changes from 1 commit
Commits
Show all changes
49 commits
Select commit Hold shift + click to select a range
aac7fc9
prelim v2 sketch
meejah Jun 13, 2022
1f454ee
clarify
meejah Jun 13, 2022
efc0011
overall selection
meejah Jun 13, 2022
58e32e5
attempt at state diagram
meejah Jun 13, 2022
8240b1a
tweak diagram
meejah Jun 14, 2022
8e8985d
more tweaks
meejah Jun 14, 2022
0e94de2
more version work
meejah Jun 15, 2022
c8aaa0d
random notes
meejah Jun 17, 2022
bb917fe
new writeup, incorporating extensive discussion from brian warner
meejah Jun 17, 2022
75d1c05
clarify
meejah Jun 17, 2022
7caca5b
words
meejah Jun 17, 2022
545a050
basic -> core
meejah Jun 21, 2022
efdf7ee
paths are lists; cleanups/edits
meejah Jun 21, 2022
12eacc9
clean
meejah Jun 21, 2022
23e1e8a
clean
meejah Jun 21, 2022
dd4f11d
dot diagram
meejah Jun 21, 2022
8b3ffa7
tweak diagram
meejah Jun 21, 2022
59ade4d
editing tweaks
meejah Jun 23, 2022
d90275c
add philosophy
meejah Jun 23, 2022
d15f61a
grammar is fun
meejah Jun 23, 2022
6f545bb
links
meejah Jun 23, 2022
0ba5c9a
old
meejah Jun 24, 2022
0ffed00
slight re-wording and spelling
meejah Jun 28, 2022
83b8dae
clarify
meejah Jun 30, 2022
b650bf8
old
meejah Jun 30, 2022
63ed3b7
q: compression?
meejah Jul 4, 2022
aaf49b0
subtly change version declartions; add more version discussion / exam…
meejah Jul 4, 2022
63b41b1
decide: yes, we want send/receive modes
meejah Jul 4, 2022
8a57ad0
use strings for kind in control messages
meejah Jul 4, 2022
4426249
clarify further
meejah Jul 4, 2022
55c8eae
tweak wording
meejah Jul 4, 2022
477cf60
get rid of 'core', no features currently
meejah Jul 4, 2022
5fc4c17
make 'permission' mode a future enhancement
meejah Jul 4, 2022
88b124b
features: list -> dict
meejah Jul 4, 2022
0a7992a
reword
meejah Jul 4, 2022
1b91a74
clean up examples, expand compression
meejah Jul 4, 2022
f61ec7a
no version 1
meejah Jul 5, 2022
dd24416
add a final message with checksum hash
meejah Jul 5, 2022
7705f33
clarify
meejah Jul 5, 2022
7792aaf
clarify
meejah Jul 5, 2022
6606347
add symlink discussion
meejah Jul 8, 2022
aa27570
further clarify data fragmentation etc
meejah Jul 8, 2022
da44652
verb tense
meejah Jul 13, 2022
24e5335
nah
meejah Jul 13, 2022
6057b14
how to close the session
meejah Jul 13, 2022
d1aae38
re-word offer language to clarify modes
meejah Jul 13, 2022
74de043
clarifications and minor re-wording
meejah Jul 13, 2022
2d881ee
control-message 'kind' is string
meejah Jul 14, 2022
0af29f4
clarify the timestamp
meejah Jul 14, 2022
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
decide: yes, we want send/receive modes
  • Loading branch information
meejah committed Jul 4, 2022
commit 63b41b169979259e5218341639428781016f5146
17 changes: 5 additions & 12 deletions dilated-file-transfer.md
Original file line number Diff line number Diff line change
Expand Up @@ -81,19 +81,12 @@ It has one of three values:
* `"receive"`: the peer only receive files (the flip side of the above)
* `"connect"`: the peer will send and receive zero or more files before closing the session
meejah marked this conversation as resolved.
Show resolved Hide resolved

Note that `"send"` and `"receive"` above will still use Dilation as all clients supporting this protocol must.
If a peer sends no version information at all, it will be using the classic protocol (and is thus using Transit and not Dilation for the peer-to-peer connection).

XXX: maybe we don't strictly _need_ the mode at all? but it does keep things explicit .. which might be important for UX decisions on one or the other side?
XXX: that is:
XXX: a "receive-only" client can simply never send an offer
XXX: a "send-only" client simply (automatically) rejects any offer

XXX: "being explicit" has the advantage that a "receive-only" peer that connects to another "receive-only" peer will discover that quickly, and can (properly) fail -- otherwise, they'll only notice when one side gets bored and quits
If both peers indicate `"receive"` then nothing will ever happen so they both SHOULD end the session and disconnect.
If both peers indicate `"send"` then they SHOULD also end the session (although whichever sends the first Offer will induce a protocol error in the other peer).
If one peer indicates `"connect"` and the other indicates either `"send"` or `"receive"` then the peers can still interoperate and the `"connect"` side MUST continue (although it MAY indicate the peer's lack of one capability e.g. by disabling part of its UI).
piegamesde marked this conversation as resolved.
Show resolved Hide resolved

XXX: two "send-only" peers that connect will fail fairly quickly -- each side should disconnect with a protocol-error when their receive the first offer

XXX: a "connect" peer that contacts either a "receive-only" or "send-only" can benefit from "being explicit" by disabling parts of the UI (for example) that won't work (e.g. contacting a "send-only" peer means the user can't browse/drop files)
Note that `"send"` and `"receive"` modes will still use Dilation as all clients supporting this protocol must.
If a peer sends no version information at all, it will be using the classic protocol (and is thus using Transit and not Dilation for the peer-to-peer connection).

The `"features"` key points at a list of message-formats / features understood by the peer.
This allows for existing messages to be extended, or for new message types to be added.
Expand Down