diff --git a/README.md b/README.md new file mode 100644 index 00000000..5e3f65d8 --- /dev/null +++ b/README.md @@ -0,0 +1,79 @@ +# Gossip + +Gossip is a desktop client for nostr. + +Nostr is "Notes and Other Stuff Transmitted by Relays." + +This is pre-alpha code. It is not ready for use. + +NOTE: After two false starts (tauri, gtk4) I'm moving to egui, which should be much easier +and faster to develop. + +## Features + +- Asychronous design: No busy waiting or polling. +- Portable. The UI will run on anything that runs one of these backends: OpenGL (glium, glow), OpenGL ES (glow, wgpu), WebGL (glow), Vulkan (wgpu), Metal (wgpu), DirectX 11/12 (wgpu), Browsers (WebAssembly). And rust runs very many places. +- Talks to as few relays as it needs to to keep up with the people you follow, and doesn't overload them with too heavy of requests. + +## nostr features supported + +This section will need updating. +- Reads and displays type=1 (TextNote) events in a feed sorted by time created. + - Shows replies under the message they reply to + - Shows deleted events struck out with red deleted marker. +- Shows people you subscribe to in the Person tab + - Processes type=0 (Metadata) events to show user information on events in your feed (name, avatar) + - Lets you subscribe to a person (via public key and relay), but currently requires a restart +- Identity: + - Lets you generate an ID (private key) and stores that key encrypted under a passphrase, zeroing memory when finished with it where it can. + - Lets you import an ID (private key) +- Settings: feed chunk size, overlap, autofollow, but these don't work right yet. + +## nostr features planned for first alpha release + +- [ ] Create your identity +- [ ] Follow people and see their feed posts in time order +- [ ] See your feed in threaded mode +- [ ] Choose and manage relays to post to +- [ ] Post messages and reactions +- [ ] Show reactions + +## nostr features planned for subsequent releases + +- [ ] Lets you subscribe to a person via a DNS ID (NIP-35) +- [ ] Validates users via NIP-05 +- [ ] Lets you react to other people's posts +- [ ] Lets you show events from people you don't follow if they reply to a post you do +- [ ] Lets you mute someone +- [ ] Lets you rank relays +- [ ] Shows links as links +- [ ] Shows images inline (option to wait for your approval) +- [ ] Include a 'client' tag +- [ ] Show the 'client' tag of posts +- [ ] Support "content-warning" +- [ ] Allow browsing of relay-global events of people you dont follow +- [ ] Multiple identities +- [ ] Publish your following list +- [ ] Follow someone privately (without including in your posted following list) +- [ ] Allow viewing of other people's following lists w/ petnames +- [ ] Dismiss a message for this session only w/o deleting it + +## Technology Involved + +- Rust Language +- egui Rust GUI framework +- SQLite 3 +- Tungstenite websocket library +- Tokio async task runtime +- Serde serialization/deserialization +- Many others + +## License + + * MIT license ([LICENSE-MIT](LICENSE-MIT) or http://opensource.org/licenses/MIT) + +### Contribution + +Unless you explicitly state otherwise, any contribution intentionally submitted +for inclusion in the work by you, shall be licensed as above, without any additional +terms or conditions.