Nostr is a social media protocol and ecosystem, kind of like Twitter, Mastodon, Gab, Post, Gettr, Farcaster, Truth social, BlueSky, Locals, Minds, Spoutable, etc, etc.... except that you control your own account and nobody can silence you so long as some relay operator somewhere allows you to post.
Gossip is currently early alpha-quality code. As of right now you can (if you aren't stopped by some bug):
- [x] Follow people by user@domain (NIP-35) or by public key (hex or bech32) plus a relay where they can be found.
- [x] See the feed of posts by those people, threaded or not, including reactions. But it's ugly and not very complete.
- [x] User-control of when to search for missing events (referred to by events you have), and a display of how many are missing.
- [x] Generate or import (hex or bech32) a private key (your identity) and it is kept by the client encrypted under a password that you need to unlock it every time you start the client.
- [x] Choose relays to post to (from among the relays that the client has seen -- it doesn't yet allow you to enter one)
- [x] Post root-level text messages (but not in reply to, nor reactions)
## Development Ideology
- **Portable** design intended for the **desktop**: This is intended to run on desktop computers, but not limited as such. The platform must be supported by rust (most are), and SQLite3 needs to store its file somewhere. The UI will run on anything that runs one of these backends:
- OpenGL (via glium or glow)
- OpenGL ES (via glow or wgpu)
- WebGL (via glow)
- Vulkan (via wgpu)
- Metal (via wgpu)
- DirectX 11/12 (via wgpu)
- Browsers (via WebAssembly)
- **High-enough performance**: the network speed should be your limiting factor on performance, not the UI or any other part of the code. It doesn't matter how fast the code runs as long as it is always faster than the network, and I think that's definitely true for gossip.
- **High user control**: the plan is for the user to be in control of quite a lot of settings regarding which posts they see, which relays to talk to, and when to fetch from them, but with some sane defaults so you don't have to change anything.
We do not intend to support the following features/NIPs:
- NIP-03 - OpenTimestamp Attestations for Events: We handle such events, but we do nothing about the ots fields in them.
- NIP-04 - Encrypted Direct Message: I doesn't believe this is a good idea to do encrypted messaging this way, as it leaks metadata and has a cryptographic weakness.
- NIP-06 - Basic key derivation from mnemonic seed phrase. This is probably not applicable anyways.
- NIP-07 - window.nostr capability for web browsers. This is not applicable.
### other features worth mentioning
- [x] threaded or linear
- [x] configurable look-back time
- [x] dark/light mode
- [ ] semi-secure handling of private keys by zeroing memory and marking them Weak if displayed or exported (partial)
- [ ] exporting/importing of private keys with a passphrase (partial)
- [ ] multiple identities
- [ ] user management of relays (read/write), including ranking
- [ ] choose to load from another relay with a button press
- [ ] choose what posts to see beyond direct posts of people you follow: replies, events replied to, posts liked by people you follow, post made by friends of friends, global on a relay, or global.
- [ ] mute someone
- [ ] mute a message
- [ ] dismiss a message without blocking for future sessions
My public key is ee11a5dff40c19a555f41fe42b48f00e618c91225622ae37b6c2bb67b76c4e49
You can also my NIP-05/NIP-35 address of `mike@mikedilger.com` which will also hook you up with the relays I post to.
Note: I will rollover my public key once gossip is my daily driver.
## Tips
You can tip me at my Bitcoin Lighting address (lud16): lnurl1dp68gurn8ghj7ampd3kx2ar0veekzar0wd5xjtnrdakj7tnhv4kxctttdehhwm30d3h82unvwqhkgetrv4h8gcn4dccnxv563ep
You can also do that with the [Damus](https://damus.io) iOS nostr app (not yet available in gossip).