gossip/README.md

80 lines
3.0 KiB
Markdown
Raw Normal View History

2022-12-20 04:48:33 +00:00
# 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.