Home

Awesome

Gossip

Gossip is a desktop client for NOSTR

Nostr is an open social media protocol empowering lots of software such as this client. The experience is kind of like Twitter except that you control your own account, and you can post to many different independent places called "relays". People are finding many additional uses for NOSTR that go far beyond micro-blogging or chatting, but this client is focused on those.

Nostr stands for "Notes and Other Stuff Transmitted by Relays."

Installing

See instructions for Build from Source.

With Release Builds

With Package Managers

Packaging status

With pacman on Arch Linux: gossip or gossip-git or gossip-bin on the AUR

With homebrew on MacOS or Linux: brew install gossip from homebrew-core, or for more options brew install nostorg/nostr/gossip from homebrew-nostr

With scoop on Microsoft Windows: scoop install extras/gossip from scoop extras bucket.

Points of Difference

The following features make gossip different than most other nostr clients so far:

Screenshots

Gossip Screenshot, Default Light Theme Gossip Screenshot, Default Dark Theme

nostr features supported

āœ… = Fully Supported šŸŸ© = Partly Supported ā¬œ = Not Supported (but might be in the future) ā¬› = Not Applicable

Content Moderation and Curation

Gossip provides multiple methods for you to moderate and curate the content that you see. Some of these mechanisms leverage the work of other people such as community moderators, friends, and relay operators. Others put you in charge, but as such you will be seeing the content in order to moderate it so they don't completely insulate you from the content. Here are the mechanisms available in gossip for content moderation and feed curation.

  1. No global feed and no algorithm - Gossip has no global feed. So right from the start you are not subjected to everything that is out there. Feeds are comprised entirely of posts from people that you choose to follow. Replies to posts, on the other hand, can come from anywhere. Therefore there is still a need for moderation.
  2. Lists - You can define lists of people and view only what those people have posted.
  3. Muting - You can mute individual people. You can share this mute list with other clients that you use.
  4. Thread Dismissal - You can dismiss a post and all the replies to it (however, this is temporary until client restart).
  5. Content Warnings - Gossip shows content warnings of posts that have them, and you must approve to see the content. You can also place content warnings on any content that you post.
  6. Spam Filtering Script - Gossip provides a hook to filter posts via a script that you can program to do whatever you want.
  7. SpamSafe Relay Designation - When the SpamSafe setting is enabled, notes from unknown persons are only fetched from relays that you have marked as SpamSafe.

Showing relay-global feeds on relays marked SpamSafe is a possibility for the future.

In the future I intend for gossip to support one of the multiple competing standards for labelling and reporting of content (the options currently are NIP-32, NIP-56, and NIP-72), but none of these are defined well enough to be useful yet IMHO. I look forward to a time when you can subscribe to a set of moderators that you trust.

Command Line Usage

Gossip is a GUI desktop program, but it also outputs a lot of messages to the console as it runs. I recommend you keep the console open and pay some attention to errors or other odd behavior that may become apparent from the console messages.

Gossip has a lot of command line commands for tweaking things or extracting bits of information from its database. See docs/COMMANDS.md.

Building from Source

Step 0 - Possible Reset of Master Branch

If when you pull gossip it doesn't pull cleanly, I may have done a rare force-push. Run these commands to reset your master branch:

git fetch
git reset --hard origin/master

Step 1 - Install Rust

If you don't already have rust installed, follow the guidance at rust-lang.org.

Step 2 - Install some dependencies

Most dependencies are probably already installed in your base operating system. Here are a few that sometimes aren't:

macOS

a. Install rust with rust-up: https://rustup.rs/ b. Install homebrew if you don't have it yet https://brew.sh/ c. Install these dependencies:

brew install cmake sdl2 pkg-config ffmpeg

Step 3 - Clone this Repository

git clone https://github.com/mikedilger/gossip

Step 4 - Compile

cd gossip
cargo build --release

The output will be a binary executable in target/release/gossip

This binary should be portable to similar systems with similar hardware and operating system.

If you want a binary optimized for your exact processor with the newest CPU features enabled, and all gossip features enabled, do something more like this (for exact features to use, see the next section):

RUSTFLAGS="-C target-cpu=native --cfg tokio_unstable" cargo build --features=lang-cjk,video-ffmpeg --release

Everything gossip needs (fonts, icons) is baked into this executable. It doesn't need to find assets. So you can move the "gossip" binary and run it from anywhere.

To make the binary smaller,

strip gossip

Step 5 - Do it all again

The master branch changes quickly. When you want to update, do it all again, something like this:

git pull
cargo build --release
strip ./target/release/gossip
./target/release/gossip

Compile Features

TLS

Gossip has three options for TLS support:

  1. Use rust-code and compiled in root certificates from webpki (feature 'rustls-tls')
  2. Use rust-code, but use your system's root certificates (feature 'rustls-tls-native', this is the default)
  3. Use your system's code and your system's root certificates (feature 'native-tls')

Rust's TLS code is thought to be more secure than your systems TLS code (e.g. OpenSSL). But it is very finnicky. In particular:

Language Support

Chinese, Japanese and Korean character sets

Gossip by default does not include the CJK font because it is larger than all other languages put together, and most gossip users don't recognize those characters. If you do recognize such characters, you can compile in that font with:

  --features=lang-cjk

Other Non-Latin languages

There are so many of these (172) that it becomes a real pain to add them all. But if you need one, please ask (open an issue) and I'll add it for you.

Video Playback

You will need to install sdl2 (follow the instructions in the readme) and ffmpeg on your system.

Compile with

  --features=video-ffmpeg

Troubleshooting

See docs/TROUBLESHOOTING.md.

Technology Involved

License

MIT license (LICENSE MIT or http://opensource.org/licenses/MIT)

Contribution

All contributions welcome, please check the development guidelines before starting to code.

Please join Gossip Telegram Channel.

Anyone interested in replacing the GUI with something much better, or keeping it as egui but making it much better, would be greatly appreciated. The project was split into two crates (lib and bin) to make it easier to build a different UI onto the backend.

Any contribution intentionally submitted for inclusion in the work by you, shall be licensed as above, without any additional terms or conditions.

On Nostr

The official gossip account

nprofile1qqsrjerj9rhamu30sjnuudk3zxeh3njl852mssqng7z4up9jfj8yupqpzamhxue69uhhyetvv9ujumn0wd68ytnfdenx7tcpz4mhxue69uhkummnw3ezummcw3ezuer9wchszxmhwden5te0dehhxarj9ekkj6m9v35kcem9wghxxmmd9uq3xamnwvaz7tm0venxx6rpd9hzuur4vghsz8nhwden5te0dehhxarj94c82c3wwajkcmr0wfjx2u3wdejhgtcsfx2xk

npub189j8y280mhezlp98ecmdzydn0r8970g4hpqpx3u9tcztynywfczqqr3tg8

Mike Dilger

nprofile1qqswuyd9ml6qcxd92h6pleptfrcqucvvjy39vg4wx7mv9wm8kakyujgpzamhxue69uhhyetvv9ujumn0wd68ytnfdenx7tcprpmhxue69uhkzapwdehhxarjwahhy6mn9e3k7mf0qyt8wumn8ghj7etyv4hzumn0wd68ytnvv9hxgtcprdmhxue69uhkummnw3ezumtfddjkg6tvvajhytnrdakj7qgnwaehxw309ahkvenrdpskjm3wwp6kytcpremhxue69uhkummnw3ez6ur4vgh8wetvd3hhyer9wghxuet59uq32amnwvaz7tmwdaehgu3wdau8gu3wv3jhvtct8l34m

npub1acg6thl5psv62405rljzkj8spesceyfz2c32udakc2ak0dmvfeyse9p35c hex: ee11a5dff40c19a555f41fe42b48f00e618c91225622ae37b6c2bb67b76c4e49

You can also my NIP-05 address of mike@mikedilger.com which will also hook you up with the relays I post to.

I'd prefer if you trusted mike@mikedilger.com higher than my public key at this point in time since key management is still pretty bad. That is the inverse of the normal recommendation, but my private key has not been treated very carefully as I never intended it to be my long-term key pair (it just became that over time). Also, I fully intend to rollover my keys once gossip supports the key-rollover NIP, whatever that is (or will be).

You can tip me at my Bitcoin Lighting address: decentbun13@walletofsatoshi.com == lnurl1dp68gurn8ghj7ampd3kx2ar0veekzar0wd5xjtnrdakj7tnhv4kxctttdehhwm30d3h82unvwqhkgetrv4h8gcn4dccnxv563ep