Opened at 2007-08-31T00:12:53Z
Last modified at 2017-08-09T06:16:03Z
#126 new enhancement
add "Invite a Friend" button
Reported by: | warner | Owned by: | |
---|---|---|---|
Priority: | major | Milestone: | undecided |
Component: | code-network | Version: | 0.7.0 |
Keywords: | usability | Cc: | |
Launchpad Bug: |
Description
Invite a Friend
Once we get the new Introducer code in place, we need to add a button to the node's welcome page. It should say something like this:
To invite a friend to join your Tahoe network, fill in their name here and press the "Invite!" button. This will create a personalized invitation that you can paste into an email or IM. When your friend finishes installing their own Tahoe node, they can accept your invitation by pasting it into their own node's "Join a Network" box.
The name you provide here will be used as a "pet name" for your friend. Everything that this node tells you about your friend's node will be labelled with this name. When your node introduces your friend to other nodes, they will see the pet names you choose for your friend too. For example, if you are Alice and you have a friend you call Bob, and you introduce Bob to your mother (who calls you Ally), your mother's node will refer to Bob's node as "Ally's friend Bob".
Internally, this button will create an Invitation object (tagged with the pet name), generate a persistent FURL for it (probably by using the new Tub.registerNameLookupHandler feature in Foolscap-0.1.5), then display a page with the FURL and some instructions on its use.
Accept an Invitation
Assume that Alice created an Invitation and sends it to Bob.
The accept-invitation form should take a backwards-facing pet name (what does the recipient call the person who sent the invitation?) and the FURL. It should create an identity (the Who object in the Horton protocol: a random number for now, eventually a Sealer, i.e., a public key).
Bob's side then contacts the Invitation (using the FURL that was pasted in) on Alice's side and fetches AliceWho?. Then Bob creates a PersonalIntroducer? for the Alice, persists it, and sends (BobWho?, PersonalIntroducerForAlice?) to the Invitation. The Invitation is one-shot: it destroys itself after use.
When the Invitation, on Alice's side, receives BobWho/BPIa, it creates APIb (recording the previously-stashed "Bob" petname) and returns APIb. Bob adds APIb to his list of servers.
From then on the inductive case holds: new peers are introduced via the "introduce_me_to_other_servers" and "create_an_introducer_for_X" methods, tracked in #68. This ticket is specifically about the Invite/Accept? buttons and classes.
Change History (7)
comment:1 Changed at 2007-09-25T04:24:04Z by zooko
- Milestone changed from undecided to 0.7.0
- Version changed from 0.5.1 to 0.6.0
comment:2 Changed at 2007-11-01T18:14:29Z by zooko
- Milestone changed from 0.7.0 to 0.7.1
- Version changed from 0.6.0 to 0.6.1
comment:3 Changed at 2007-11-13T18:25:27Z by zooko
- Milestone changed from 0.7.1 to 1.0
- Version changed from 0.6.1 to 0.7.0
This is an important feature, but it is a big feature to implement, and I don't think we are going to get it done in the next six weeks, so I'm putting it in Milestone 1.0.
comment:4 Changed at 2008-03-21T22:38:32Z by zooko
- Milestone changed from 1.0 to undecided
comment:5 Changed at 2008-06-01T21:08:35Z by warner
- Milestone changed from eventually to undecided
comment:6 Changed at 2010-01-07T00:27:57Z by davidsarah
- Keywords usability added
comment:7 Changed at 2017-08-09T06:16:03Z by Brian Warner <warner@…>
In 3eaf18e/trunk:
We're focussing on an imminent v0.7.0 (see the roadmap) which hopefully has #197 -- Small Distributed Mutable Files and also a fix for #199 -- bad SHA-256. So I'm bumping less urgent tickets to v0.7.1.