Help page prose

This commit is contained in:
Mike Dilger 2023-01-07 17:31:41 +13:00
parent e01f706877
commit 47eb1bb098
2 changed files with 39 additions and 11 deletions

View File

@ -32,7 +32,7 @@ pub(super) fn update(app: &mut GossipUi, _ctx: &Context, _frame: &mut eframe::Fr
ui.add_space(35.0);
ui.label(
RichText::new(format!("nostr is a protocol and specification for storing and retrieving social media events onto servers called relays. Many users store their events onto multiple relays for reliability, censorship resistance, and to spread their reach. If you didn't store an event on a particular relay, don't expect anyone to find it there because relays normally don't share events with each other.
RichText::new(format!("nostr is a protocol and specification for storing and retrieving social media events onto servers called relays. Many users store their events onto multiple relays for reliability, censorship resistance, and to spread their reach.
Users are defined by their keypair, and are known by the public key of that pair. All events they generate are signed by their private key, and verifiable by their public key.

View File

@ -1,6 +1,6 @@
use super::{GossipUi, Page};
use eframe::egui;
use egui::{Context, ScrollArea, Ui};
use egui::{Context, RichText, ScrollArea, Ui};
mod about;
mod stats;
@ -26,12 +26,26 @@ pub(super) fn update(app: &mut GossipUi, ctx: &Context, _frame: &mut eframe::Fra
ui.separator();
ui.add_space(10.0);
ui.heading("Gossip follows people AT RELAYS");
ui.add_space(10.0);
ui.label("This is a core concept. Gossip doesn't fetch posts from the same relays it is configured to post to. It trys to fetch posts from whereever your followers post them, so you need to configure at least one relay for each person you follow. Gossip will then dynamically figure out where they actually post (if it finds them at all) and keep things updated as they change where they post to. A lot of other clients are not operating like this, they are pulling from the same relays they push to and this author thinks that will not scale. Right now, these other clients work because relays are copying messages from each other somehow.");
ui.add_space(10.0);
ui.horizontal_wrapped(|ui| {
ui.label(RichText::new("Gossip follows people").heading());
ui.label(RichText::new("at relays").heading().italics());
});
ui.label("NIP-05 makes this easy, since it specifies how users can share their public key AND their relays via a webserver that they control. For example, you can follow me at `mike@mikedilger.com`. That's all you need to type in.");
ui.add_space(10.0);
ui.horizontal_wrapped(|ui| {
ui.label("Gossip follows people at whichever relays they post to, ");
ui.label(RichText::new("not").strong());
ui.label("whichever relays you post to. This is a core concept. As the nostr network expands, it will be increasingly unlikely that the person you want to follow posts to the same relays that you do. And it will become increasingly untenable for event mirroring to be occuring on all those relays. Most clients will eventually need to work this way, except for clients that intend to be bound to a local community of relays.");
});
ui.add_space(10.0);
ui.horizontal_wrapped(|ui| {
ui.label("The upshot of this is that when you follow someone, you will need to supply their public key");
ui.label(RichText::new("and their relays").italics());
});
ui.add_space(10.0);
ui.label("NIP-05 (used in the reverse for user discovery) makes this easy, since it specifies how users can share their public key and their relays via a webserver that they control. For example, you can follow me at `mike@mikedilger.com`. That's all you need to type in. Gossip will go to mikedilger.com, fetch the `.well-known/nostr.json` file, find the entry for `mike` and find the relays for that public key. Then it will go to those relays and pull my recent posts into your feed.");
ui.add_space(10.0);
ui.label("Other ways of following people include pasting their public key (hex or bech32 format) and typing in a relay URL which should start with 'ws'. NOTE: use CTRL-V to paste, other forms of pasting (X11 middle click) won't work.");
@ -46,7 +60,7 @@ pub(super) fn update(app: &mut GossipUi, ctx: &Context, _frame: &mut eframe::Fra
});
ui.add_space(10.0);
ui.label("Gossip currently does not fetch your following list from nostr. Nor does it publish the list of follows you configure on gossip so you don't have to worry about it clobbering anything.");
ui.label("Gossip currently does not fetch your following list from nostr. Nor does it publish the list of follows you configure on gossip so you don't have to worry about it clobbering anything (but this will change).");
ui.add_space(10.0);
ui.separator();
@ -55,9 +69,17 @@ pub(super) fn update(app: &mut GossipUi, ctx: &Context, _frame: &mut eframe::Fra
ui.heading("Driving the Feed");
ui.add_space(10.0);
ui.label("As events come in, they often refer to other events that have not come in yet. If you want to query the relays for these missing events, you can by pressing the QM (Query Missing) button on the feed page. Usually some but not all missing events can be found this way.");
ui.label("Recent events from people you follow should show up on the main [Feed > Following] page in reverse chronological order, without replies or context. If you want to see the context of a post, press the right-arrow on the right hand side of the feed to move to the [Feed > Thread] page. This page should show the full context, and when you enter the thread page it will ask relays questions in order to fill in the thread. But often it is missing posts and can't quite get the full context. In fact, there are cases where the post you clicked on isn't even there. Future development on Gossip will likely improve this greatly.");
ui.add_space(10.0);
ui.label("One dirty hack that helps: As events come in, they often refer to other events that have not come in yet. If you want to query the relays for these missing events, you can by pressing the QM (Query Missing) button on the feed page. Usually some but not all missing events can be found this way. But it is older code and newer event processing may have already superceded it's abilities by the time you read this. Still, worth a shot.");
ui.add_space(10.0);
ui.label("There is a [Feed > Replies] page where you can see replies to your own posts, with descendants (but not ancestors)");
ui.add_space(10.0);
ui.label("Finally there is a [Feed > Person] page where you can see posts made by a person. To get there, click an avatar, then click [VIEW THEIR FEED].");
ui.add_space(10.0);
ui.separator();
ui.add_space(10.0);
@ -77,6 +99,9 @@ pub(super) fn update(app: &mut GossipUi, ctx: &Context, _frame: &mut eframe::Fra
ui.label("After generating or importing your key, gossip will save it encrypted under a password. You will need this password to unlock it every time you start gossip. Gossip handles keys securely by never displaying them and zeroing memory used for private keys and passwords before freeing it (unless you explicitly request it to be exported).");
ui.add_space(10.0);
ui.label("If you are just trying Gossip out and not intending to post or react to posts yet, you can just import your public key. This way you'll be able to sync your following list (when that work is committed), and see your replies, but you won't be able to post or react to posts.");
ui.add_space(10.0);
ui.add_space(10.0);
ui.separator();
ui.add_space(10.0);
@ -96,7 +121,7 @@ pub(super) fn update(app: &mut GossipUi, ctx: &Context, _frame: &mut eframe::Fra
});
ui.add_space(10.0);
ui.label("Gossip currently does not synchronize this list of relays on the nostr network, so it will not get data you use with other clients. Nor will it clobber that data. The list is local and independent.");
ui.label("Gossip currently does not synchronize this list of relays on the nostr network, so it will not get data you use with other clients. Nor will it clobber that data. The list is local and independent (but this will change).");
ui.add_space(10.0);
ui.separator();
@ -111,7 +136,10 @@ pub(super) fn update(app: &mut GossipUi, ctx: &Context, _frame: &mut eframe::Fra
ui.label("To reply, press the reply icon at the bottom of the post you want to reply to. That post will be copied to the top of the page to make it clear what you are replying to. Type your reply and press Send.");
ui.add_space(10.0);
ui.label("To react, you can click the heart. Other kinds of reactions are not yet implemented. You can see other people's reactions belo the posts.");
ui.label("To react, you can click the heart. Other kinds of reactions are not yet implemented. You can see other people's reactions below the posts.");
ui.add_space(10.0);
ui.label("Quoting and Boosting content are not yet implemented.");
ui.add_space(10.0);
ui.add_space(10.0);