Avoid client-side moderation, rely on relays.

Reply to this note

Please Login to reply.

Discussion

Bullshit. You can see the clients code. You cannot see how relays moderate you.

Keep relays fast and dumb, make the clients smart. This is the foundation of Nostr.

You just made that up, you know.

Even if he did, he’s right.

Feels like he wasn’t just making it up. This was my sentiment as well and here is an excerpt from your blog.

https://fiatjaf.com/nostr.html

That is the very short summary, it doesn't contain everything.

Makes more sense

You don't have to. What harm can they cause to you?

Seriously? I have seen relays deleting posts they don't like (political positions, etc) without telling anyone. I have seen them delaying posts that have a criticism of the product that happens to be sponsoring them. I have seen them hide counts and act as if those were at the "bottom of the database".

NEVER trust any relay.

They are expected indeed. That's why one should NEVER rely on them. Don't entrust relays to moderate anything because you don't know what they are running.

Clients are always "moderating" because their choice of UI **is** moderation in itself.

That's why I also say people show NEVER use a closed-source client in Nostr. A closed-source client can create and display "events" as if they were signed by the author even if they didn't. They can create things out of thin air.

Use only open-source clients so that you can verify what's happening in code and create an expectation of behavior that can be constantly checked.

I mostly agree with you, but I think we're talking past each other.

is there a way to do software verification where an implementation would periodically self sign a note saying it’s verified its build?

and then also broadcast relay actions?

Even, just to see the relay actions… not to move all trust of moderation to relays.

Yep, it's called reproducible builds. Amethyst has this active. It means that anybody should be able to check if the APK I published matches the code on the repo by recompiling the app with the same code/parameters.

but for relays on servers one would need like artifact sharing?

There is no way to know if they are running the version you think they are and/or if they added anything between you and the code you know.

probably need a tool that caches seen on and then rechecks for seen on later

how did you noticed relays deleting things?

That's disturbing..šŸ‘ŽšŸ¤”

I’d like to be able to connect privately to my own relay for backing up notes. Is it possible to connect to a relay and no one else be aware/able to see that connection? Encrypted relay list?

VPN is the only way.

Sorry, half reply. You can add a local IP (192.168.0.x, etc) to your relay list while we don't have private relay lists. In that way, people know you have a local relay but there is no way to know where.

Would you need to be on your local network to backup then tho? Can you connect to this local relay from the internet?

Correct. If you make something outside of a local network, you have to place it inside a VPN for now. Otherwise, everyone will know you have access to it.

OR, you can use NIP-42 to authenticate with your public keys to write and read from the relay.

You can also use something like tailscale or wireguard

Your client literally censors ppl for no reason, including me.

Yep, and it's written in the code that everyone can see. That is my point. People can use Onyx if they dont like the filter or simply disable the filters in Amethyst's settings.

However, you have no idea if relays are censoring you or not (hint, they are).

Yes, but there will be thousands of relays. Anyone can setup their own relay and others can broadcast the note to other relays.

Very few people have the ability to create their own client. Right now, if 5 clients decide to censor a user, nobody would ever see them.

There are dozens of clients already. Hopefully, we get to thousands. You don't need to create one from scratch, you can just fork it and remove the things you don't like... like Onyx did.

Clients make 100s of decisions in the visibility of posts. For instance, Amethyst didn't show non-like reactions until this week. They were always displayed as red hearts. Is that censorship? To some extent, yes. But if so, then every client is censoring everyone, all the time.

Don't trust anyone. Not relays, not clients. The only thing you can be sure of is the code that you can see and verify. If you can't verify, hire somebody who can, or fund a group that does it for you (but then you are trusting the group).

The idea that ppl should just ā€œlearn to codeā€, or pay hundreds or thousands of dollars to vet an app they’re using is simply ridiculous.

It's not that expensive. Lots of people do it for free like Tony did with Onyx.

But welcome to real freedom.

Censoring a hug emoji because your client hasn’t implemented it is much different than censoring the text of a note. Damus doesn’t render markdown, but the words are still there.

I’m a bit confused about what you’re arguing for. If relays already censor, and we cannot verify what they’re doing, how does it help to have an open-source client that explicitly tells you they censor? That’s just adding more censorship.

At least if I feel like 5 relays are censoring me, I can add 10 more. If I’m censored on Amethyst, I may never know that 1000s of people aren’t seeing my notes, and they also don’t know I even exist.

I have that problem rn. I literally don’t know who can see my posts because of Vitor’s censorship.

He doesn’t seem receptive to reason, and seems to condone using reports as a valid means to censor ppl, considering it doesn’t stop spam at all.

Ok but your distributed unaccountable censorship system (which should be opt-in btw) can’t be challenged. If a relay claims they do not censor, it’s a lot easier for me as a non-technical person to verify that than it is to go into a bunch of code I have no idea how to read and find out how you’re censoring me (which you are btw).

Relays have an incentive to abide by the policies they establish, and they can be exposed if they’re lying.

Your system has no recourse, and there’s literally nothing I can do to contest being censored by the policies you arbitrarily set (that gives weight to false reports for whatever reason), particularly since many ppl can’t even see me.

Not to mention how ppl have told you that they literally had no idea your app was censoring ppl. ā€œRead the codeā€ isn’t a reasonable suggestion, most ppl can’t.

Also there are tools that you can use to check whether your posts are being relayed.

Client-side filters are the future. I don’t like relying on relays to curate content. Users can discern locally (1st person POV) rather than relays discerning globally (deciding the 1st POV for everyone else).

Both types of filtering will occur, but I prefer client-side so as many relays as possible host diverse content.

Why?

The moderation needs to be a third service. Where relays and clients can opt in to which moderation regirme they want to use and moderation decisions can be opt in and transparent.

What if instead of clients and relays opting in, just users can opt in?

Sure, but I don't see why introduce this unnecessary complexity.

In most cases as a client you can pretty much

- for whoever you follow or are interested in, request data from any relay, whatever relay on Earth, you really don't care what relay

- for cases where you'll get data from people you don't know ("global feed", replies etc), request data from relays that enforce policies you agree with ("no posts without PoW", "all posts must contain the word 'soup'", "only posts from women", "posts must be manually approved" etc)

I think you're both right, but I tend to lean towards the FoaF (friend of a friend) moderation algorithm. FoaF makes newcomers work to get reach, because they need to know someone, and it's something that Scuttlebot did right so we all know how it works.

You can include a dial for less toleratant people that can be turned down to 'just friends', and people who want to explore more can dial it up to 3 or 4 hops if they want a global feed.

*tolerant -- can we get an edit button? I jest.

this feel too complicated. just rely on relay for moderation, right now relay feel likes a data redundancy layer on nostr, but eventually each relay will became its own social community focus on specific topics and interests and acts as a content moderation/curation box that user can plug-in

Noooo

Primal.

šŸ˜†

Personally I rely on Tim Cook and Elon exclusively.

Hahahahahaha

There are, and always will be, far more relays than clients. It requires practically no effort to switch between relays from within a client, to achieve the moderation you want.

Relay moderation > client moderation

Relays should be dumb pipes. If they start moderation, they become the gatekeepers

Would a model like pi-hole work? Something that sits between the relay and client, that does said filtering for you?

Yes. There are some people doing this. https://nostr.wine/ for example.