Delivery between people

Once you've added someone in People, what you send them arrives by itself, and so does what they send you. There's no server of midden's in between. Each person keeps a mailbox folder in their own Google Drive. You post what you send into yours, and the other person's midden collects it from there. Nobody ever writes into anyone else's Drive.

Delivery needs sync to be set up first.

How it works

Adding someone

The folders

midden mailbox/        private: only you (and midden, through drive.file)
  ├─ hello/            shared by link; its ID is on your card
  ├─ <opaque>/         shared by link; one per contact, its ID handed to them sealed
  └─ <opaque>/

Checking it works

Setting up delivery tests your mailbox the way a contact reaches it: midden posts a small file in hello/, lists and fetches it without signing in, and takes it down. Each device tests once (a mailbox set up earlier is tested at its next check), and keeps testing while it's failing. People shows the result, along with any trouble from the last check, and check again runs another. It says you're reachable, not that a particular contact has added you.

If your mailbox folder is moved to the trash or deleted

Every check also looks for your folders in Drive.

Sending something

Use send on a card (in its ⋯). The same screen opens on the phone and the desktop:

A send is a copy: it's theirs once it arrives, and you can't change it or take it back. If delivery isn't set up between you, the screen gives you the sealed copy to pass on yourself, to paste into a chat or save as a file.

When something arrives

Sending and receiving

  1. Sending: midden seals the item (see Security) and posts it as one file in the folder you made for that person. The file is named <mailbox>.<message id>.i, where <mailbox> is worked out from both people's keys, so only the two of you can work it out.
  2. Receiving: your midden lists your contacts' folders and fetches what's yours. It does this without signing in, using midden's API key: the folders are link-shared, and the key only identifies midden's Cloud project to Google, not you.
  3. Receipts: once you have an item, midden posts a sealed receipt in your folder for them (<mailbox>.<id>.r.<item id>).
  4. Cleanup: when the sender sees your receipt, they take their copy down. Once their copy is gone, you take your receipt down. Everything clears itself, from listings alone, on whichever device checks first.
    • What nobody picks up is taken down after 14 days.
    • Removing a contact deletes their folder, and everything in it. Whichever of your devices has heard of the removal does it; a device that simply hasn't met them yet leaves it alone.

When it runs

Security

What protects a message

Each item, receipt and handover is sealed before it leaves the device:

Nothing outside the sealed file says who it's from, who it's for, or what it is.

What each party can see

Who Sees Doesn't see
Google your mailbox folders and files: their count, sizes and times; that they're link-shared anything inside them; your other Drive files are no different from before
midden's Drive access (drive.file) only files and folders midden made anything else in your Drive
Anyone with your card your hello/ folder: how many first contacts and handovers, their sizes and times who they're from, what they say, anything in your contact folders
A contact their own folder: opaque names, sizes and times of what you sent them your other contacts, or anything you sent anyone else
Anyone with midden's API key what anyone with a link can see: a link-shared folder whose ID they already have private folders; folders whose ID they don't have

The API key

Limits, said plainly