The fact that @primal has a backend in no way threatens #Nostr as a protocol and open network. Think of it as a full stack client. Backend client code + front end client code. The source of truth remains the relays, and users maintain complete control over their keys and handle. Don't get gaslight by butthurt devs. #Primal is taking the #Nostr experience where users want without lockin, censorship, or moats.

Replies (134)

Most clients have a front end application, a UI, that interfaces directly with relays as their data source. #Primal has a UI and also a backend server that, together, interface with relays, enhancing the experience in a way that just a UI couldn't. The result is a better experience.
This is literally no different than twitter then. Just use twitter if you want a single server. The entire point of nostr is the ability to connect to different relays so you don’t have a view of the network that is controlled by a single entity.
Are you regarded? Twitter's source of truth is the Twitter database. #Primal's source of truth is the user's own relays. Twitter owns the user handles. #Primal doesn't.
The source of truth only matters if you can verify it. You are trusting their relay to do that for you. They can forge posts or even swap out zap addresses this way if they wanted to. if they didn’t want to it could still happen if their relay is hacked. Don’t trust, verify.
Everything you just mentioned is possible with a front end client. Having client code execute in the user interface and a server does not undermine #Nostr, nor does #Primal have an incentive to do so.
Do you let other people run your bitcoin node? Verify your bitcoin? Would you run a “backend” bitcoin client and let a third party verify your transactions? You sound like someone who would store their coins in coinbase, since you seem like a fan of backend clients.
You can’t verify what backend code is running, you can compile and verify what code is running on damus ios and damus notedeck. No backend to trust. This is 101 stuff man.
Even if you looked at backend source code it could still get hacked and swapped out. This is a real concern. If the caching relay started serving zap addresses that didn’t match profiles… you could be sending sats to hackers on all profiles. This can’t really happen on iOS due to how code signing works, ios verifies binary signature chains from apple and the developer.
1. Client code *can* forge posts and swap zap addresses. 2. Server code can augment the #Nostr experience in ways UI-only clients can't. This is why #Primal is winning. 3. Attestation for live server code is a real issue, but with primitives like runc/containerization, something like this is getting closer to being possible. 4. #Primal could rug their users using a rogue build on the server just like Damus could on the client. The reason these things don't happen is that the risk is destroying the project's reputation and the return is a paltry sum. This is 101 stuff man.
Immutable container runtimes are becoming more and more prevalent. It should be possible to build a cryptographically verifyable container for every commit on Github, then automtically deploy that container to an immutabl container runtime engine in such a way that the entire live production backend could be verified by users. @miljan can you have the devs chew on this? I think its in Primal's best interst to put this type of concern trolling to rest.
Theres nothing primal is doing right now that can’t be done with a no-backend client. The hack risk of your client trusting zap addresses from a trusted backend is too high, money could be sent to the wrong place, this would tank nostr’s credibility. A centralized server has complete control over what you view, they have censored users on the past on trending. They have complete control to manipulate follow counts to make people look more popular and others not, the counts don’t match up at all with other indexers. The server can go down leading to the app not working, leading to people viewing nostr as unreliable. The wallet is heavily kyc’d and doesn’t work in many places including where i live. The system is very brittle, and is set to implode the second they run out of money, and can easily lead to a very easy to censor experience without much effort from governments and ISPs… but hey, what do i know, im just a “butthurt dev”
Look, I'm trying not to embarrass you, but it's clear you don't know what you're talking about. It's not 2000 anymore; servers have immutable, verifyable runtimes that can't be hacked the way you are talking about. It is possible, just not common practice, to provide full attestation of server code so that users can verify (byte by byte) that build A is running in immutable container B. note156x0nyw5wlthztyne4uaekvffu9hhmh7lhl5u3yskkvksvkavhxsmvp48h
Primal doesn't need your permission to make a full stack client. They can and should provide end to end attestation, from source to live production instance, of their server code. Users aren't locked in in any meaningful way. Easy on, easy off.
sorry, you have no clue. There is no such thing, even if there was, noone is running that tech. There is a 99.9999% chance most code is running on mutable architecture. Do you just make stuff up to sound like you know what you’re talking about? At damus we run the closest thing to immutable architecture (nixos), but its always mutable, you can always run whatever you want once your’re in the machine, unless you have some custom crazy os and hardware like apple private ai.
It is completely possible and the fact that you can't be honest about that says a lot. 1. Containers are sealed and verifiable, cryptographically, down to the last byte. 2. Immutable container runtime engines exist. I haven't been in the scene for a few years, but both AWS and Google Cloud were experimenting with such things before I retired. You're flailing.
Cool i will wait for this magical system to be in place where a client verifies attestations from a container, i dont see what this gains over certs and how the client would know what attestations are valid without trusting the server anyway.
we need gossip to scale and decentralize nostr too, plebs running nodes is the path forward. I really don’t even see how a single proprietary relay even works at scale, unless it’s just bluesky and twitter all over again.
I was, but I simply disagree with that characterization. It's true that the purity group think has imagined #Primal to be some threat, but actual engineers can think through it and see: it's just a full stack client. Codebase is actively hostile to user funds. I use #Primal every day; in what way am I being exploited or trapped?
If the primal client isnt ALSO writing to the caching relays this will continually lead to people's replaceables (follows, lists, etc) inadvertently wiping out what the user wants it to be. Your caching service is NOT UPDATING at an appropriate pace for this flow model image
Aeneas's avatar
Aeneas 1 year ago
But they are not honest, in the beggining they blocked and shadowbaned people here, the ones that are here from the beggining know what they've done.
Will and Damus weren't booted from the stage. In fact, from the very beginning talks, when we were working on the program, we had Will on the panel. Will decided he did not want to participate on his own. He felt that people were buying main stage talks. He didn't like how the packaging of booth and stage content were merged together. I was actually saddened by this. I had been speaking to Vanessa and trying to get him to come and have him participate in all of it. On a side note, I specifically remember one video call where @miljan said "c'mon, it's Will, if course we have to have him in stage for this panel." Sadly, I just couldn't make everyone happy. I tried my hardest. As for comments about Damus or Will at dinner, that wasn't a dinner I was at or heard. Will is my dude and will always be my dude. 🫂🫂🫂
Still waiting for you to reveal those tools for being done with Gleason's bridge bullshit that you said "we" already had as of last night. Were you lying and gaslighting and wasting time because your bullshit was being called out aggressively, or did "we" really have those tools all along? image
If it makes you feel any better i would levy the same criticism against any other client that has a centralized relay that it reads from. Maybe just make this more obvious to your users so I don’t have to continually troubleshoot their issues every day.
Same echo chamber as the people who've told me this. You know, the circle of Bitcoin whales and/or OGs is very small. So you're not on the board, fair enough. Step down from your horse, you're not flying as high as you might think.
Vveerrgg's avatar
Vveerrgg 1 year ago
Anyone complaining hasn’t been around long enough to see the tides of change … tech changes … new experiences become normal. Every platform can be disrupted by a new interface. Seem it from client server to dailup modems. From desktop web to mobile first.
Laser has lost his fastball a little. Seems more easily agitated & takes a feminine tone in arguing. I sometimes question if it’s the same laser of old.
Yes, we need better docs. We try to make it easy to stand these things up from our repo, but definitely hit us up if you need help. We've helped other teams stand them up in the past.
Absolutely, I'd like Damus and Primal to work closely together to achieve our common goal of satisfying Nostr users. Thanks for sharing your experience!
I know. I'm just telling you what actually happened since I was involved in the conversations on both sides playing middle man trying to get everyone to play together.
Still waiting for you to stop doubling down on gaslighting and time-wasting. Admit those are what you were doing here, not merely being "confused" - and if you want to apologize, offer substantial help with the same power you've abused here, or a relinquishing of that power, instead of empty words. image View quoted note →
Dude, it has taken me years to figure this out. 😂 I am overly anal about some things and I used to just think I'm just an asshole sometimes, but now I understand. And it's thanks to me being a father and witnessing this with my son first hand. Sometimes we just get hyper focused on minute details.
dangershony's avatar
dangershony 1 year ago
I disagree with you, jb55 is totally right if you have a backend you are centralised, you control the data that you fetch from relays and you choose to let users see what's on the relay, but you could easily censor that data if you wanted (or nicely asked by gov)
consumerx's avatar
consumerx 1 year ago
it means primals server is aggregating the data for the users.
After reading up on this, all Will has done is list facts. Your reaction is alarming.
The worst case scenario for Primal is that it becomes like the Bluesky BGS. But that is a hypothetical fear. And it's also a best case scenario? Because we would have a ton of users? But importantly, apps like Damus already exist, and a foundation is laid for a "free" side of Nostr that will never work perfectly but will serve a community who truly needs it, which will continue to grow. Both are inherently needed, and that is the true power of Nostr.
> The hack risk of your client trusting zap addresses from a trusted backend is too high, money could be sent to the wrong place, this would tank nostr’s credibility. This is an argument against zaps. They add nothing but unnecessary risk.
Aeneas's avatar
Aeneas 1 year ago
So if you are here from the beggining did you remember when Onyx and Ralf were manually shadowbanned?
Aeneas's avatar
Aeneas 1 year ago
Ask them, many people saw in real time that happening. @TheGrinder Can you confirm what im saying about Ralf and Onyx being shadowbanned on primal on the beggining, or i am telling a lie?
There may be a "nostr community" today because nostr is small. But nostr is not designed to be, nor will it stay a small cohesive community. Any number of communities that are at total odds with each will exist on nostr as it grows.
Aeneas's avatar
Aeneas 1 year ago
You can ask miljan too, i doubt he will say that doesn't happen.. Maybe he will say it was because bla bla bla, like he allways do, but it is what it is
Aeneas's avatar
Aeneas 1 year ago
I don't give a fuck to what they have on there repo, i was here when censorship on Primal happened, i saw that with my fucking eyes, and i wasnt the only one that saw that..
@miljan see, eventually people start to see the details adding up. Misleading… that’s what you are. So was your marketing, so are your investors, so are the other projects they fund. Misleading
ill think of it how i want to think of it. based on its actions, bot on its many words.
image
Laser's avatar Laser
The fact that @primal has a backend in no way threatens #Nostr as a protocol and open network. Think of it as a full stack client. Backend client code + front end client code. The source of truth remains the relays, and users maintain complete control over their keys and handle. Don't get gaslight by butthurt devs. #Primal is taking the #Nostr experience where users want without lockin, censorship, or moats.
View quoted note →
Dumbest take I’ve ever seen. You need to learn computer science/CAP theorem. All the readable data is centralized on one server. That isn’t a feature — it’s shitcoiner level centralization.
This honestly is my biggest desire right now for Primal and the single thing that keeps me using Damus and Nostrudel if I'm on mobile or desktop. It stinks because people are engaging (even if it is negligible) and I'd like to be able to return volley.
I worked in software for nearly 2 decades, ding dong. How does the persistence tradeoffs @miljan and friends made have anything to do with the debate at hand : whether or not a full stack client undermines #Nostr. Please explain to the audience how throwing out CAP theorem, a term for navigating data persistence constraints, as it relates to Primal's cache implementation, supports your presumed argument that the presence of a backend in a client somehow degrades user sovereignty.
I’m sorry miljan, but for non-tech people it’s not obvious from the network settings. I may not be a developer, but I wish I had known this before subscribing to the premium
Clearly, there are trade-offs between scalability and UX versus decentralization. No one has found the golden rule to have everything at the same time, and I think it will be a good experience to better understand the dynamics as a social media over a decentralized protocol. In the end, we cannot find a new path by doing the same thing everyone else is doing, and we can always choose another client if we dislike one or another.
Clearly Laser is going to keep his head in the sand. 🙄 I hope you all get a chance to see what @jb55 said in this tweet below, and if you don’t understand what he meant then listen to the video. @ODELL @miljan And @jack, I know you’re probably watching this drama unfold… just get in the arena already. Work with Will or Martti. Work with the purists. Make a client yourself, like you alluded to 3 months ago. Don’t compromise on the CAP theorem; who makes the client isn’t as important as decentralizing the data itself — the client code can live on beyond you. View quoted note →
Exactly my thought except there is no ads like on twitter . Damus and Nostr by far my prefer to decentralize social media . Especially Damus very clean and simple interface with only to reshare and reply . No amount follower show up or everything . No crowd.
Calling it a cache is just a way to distract from the fact that it’s used as a crunch to deliver all the data to all the users. Users can’t read data from any other server. Achieving quick speeds with a centralized server is just a sloppy shortcut that compromises on our values.
the axiom's avatar
the axiom 1 year ago
Primal can censor anyone they want anytime they want. it will happen soon and people will blame it on nstr the protocol
Hmm @jb55 said the primal server was proprietary but after looking further I found it here: I don’t see anyone else running one, but technically relay operators could run this alongside their relay to service Primal users. Although, it feels like a fork of nostr. Users can’t connect to normal nostr relays — therefore it isn’t backwards-compatible. The way we built Nestr was: 1) You can pull notes from normal relays 2) You can only pull the Merkle trees and blossom blobs from blossom servers and HORNET Storage servers We preserved backwards-compatibility. Primal compromised on backwards-compatibility. And there’s literally no documentation on how to change which relays the cache pulls from. 🤦‍♂️ It wasn’t built with other people easily running it in mind.
Any of the clients, which users trust to serve them relay content, an censor anytime they want.
Even if I had documentation to point the primal cache to a relay I host, it would just duplicate a ton of the data.. so inefficient. The goal is to have many relay operators to choose from. Otherwise, we’re all just playing pretend here. LARPing…
It’s just dumb that a technical tradeoff discussion between me and laser launched into a full blown campaign from odell and miljan to call it fud and odell to call me a liar. Apparently you can’t criticize them. Where are the developers saying i’m wrong? So far it has only been investors and influencers. Most people *dont* understand that its only reading from a off-protocol server, the relay list is super deceptive, i’m also tired of explaining this to people and people saying im making it up. I’m talking about *facts about how things actually work*. its important for people to know this so that they can make informed decisions. Its not really fair to compare a real nostr clients to a client-single-server model, they are completely different systems with different properties and security models. Can we not talk about this? Noone cares? Ok great, im talking to people who do.
people care. and you’re not wrong about Primal. Or that it IS misrepresented. But if you actually want to know why they are responding this way, it has to do with who you are, and the weight your voice carries. IMO, you spoke like you would to a friend about something that bothers you. Buy there is an unspoken expectation that you become much more measured and diplomacy in how you speak about these kinds of things, to preserve others reputations. It isn’t fair, or even right, but it is what it is.
I'm not a developer and I'm not very technical with how all the moving parts work. What I know is mostly from my own experience. I was here from the beginning, and I remember how it was. Things barely worked at all. Censorship is, to a large extent, part of the fuel that feeds all of our passion for building on and using Nostr. Not only do I disagree that @miljan was shadow-banning anyone, I doubt there was tech available to do that in a Nostr environment (if it can even be done at all), and he certainly wouldn't have wasted his time singling people out with so many far more important things to work on. Sorry, that bucket doesn't hold water on any level. These kinds of accusations being thrown around makes Nostr weaker, not stronger; makes you less credible and the developers you support less likeable. Something was obviously broken - like a relay that was hosting their content, or one of many other things - than from anything @miljan would have done on his own. Please be thoughtful and cautious with accusations. I don't see any devils running around in this space. Let's not create any. Okay? 🤝
Engineering trust-minimized, distributed systems is guided by principles beyond mere social consensus/politics. Just like how the properties of money aren’t arbitrary (despite what fiat institutions say) — if you studied the history of money you’d see that principle applies to both in the same way here.
There is always a wild reaction whenever engineering discussions come up. “Nostr wars”. i don’t think people realize this is how engineers naturally are.
very true. always thinking about how someone might feel, or interpret something takes all the brain power needed to solve the actual engineering problem.🤷
if hornets are symbolic of principal conviction in this analogy, sugar catches more hornets than fire. diplomacy has a more efficient outcome. it has always been thus. especially for a generation prone to conflict.
With respect Anyone who works with engineers at arms length knows this is exactly how they naturally are. High precision high compulsion unwilling to budge a micrometer if doing so could lead to error or harm or embarrassment. In short high signal and noise intolerant. But sometimes stubborn for lack of a better word. Then of course there are physicists….
I said it 6 months ago… specifying the risk of their giant cache layer. It’s clear what their philosophy is. Shortcuts are quick to ship, but ultimately fragile “I should be able to go to your profile, open your list of relays, and tap on the new relays I want to connect to. The relays in the list I’m already connected to can be present too, but with a different icon beside them, just like on Damus. Preventing users from being able to discover the relays of people they follow is antithetical to nostr’s philosophy of data portability. We should make moving relays as easy as possible rather than relying on Primal’s giant cache layer.” View quoted note →
Well container images are by definition immutable since you know what hash you are running on, if you pair that with remote attestation you get crypographically provable environment which is also the fundamental part of confidential computing
Primal including other reactions would also make nostr's network effect less biased in favor of centralization-minded people. Right now, Primal's trending feeds are basically nostr's biggest content discovery system, and the trending system is biased to favor the opinions of people who use Primal instead of apps that support emoji reactions, since Primal doesn't count those reactions.
This meme I posted a little while ago is a good example. It currently has no engagement according to Primal, but nostrudel shows 2 reactions from 2 different npubs, which would generally be enough to get into the 1h Trending feed these days, possibly attracting more engagement. It's a subtle bias with a strong effect.
🇵🇸 whoever loves Digit's avatar 🇵🇸 whoever loves Digit
image
View quoted note →
Important caveat: it's possible that if these reactions were counted, then 2 wouldn't be enough to get into Primal's trending feed anymore. But it often only takes 1 reaction, so it couldn't be too far off.
No disrespect meant. Two observations: In my experience physicists interactions with one another can be easily mis interpreted by outsiders (and I am one). Eg hyper aggressive attempts to root out errors can appear as mean infighting and egomania or toxicity. And there is meanness and egomania present in physics of course, it’s just been my experience that outsiders looking in often just don’t have the training / exposure / mathematical chops to discern which is which. To make a terrible analogy- if I am not actually on the team, and I was never actually in the game, then I am not in a position to judge the locker room talk afterwards. I also find physicists get so sharpened by the empiriometric precision required by (and successful in) their field they can get frustrated when that tool does not work well in other areas. They sometimes default to assuming sloppiness in applying the tool rather than realizing it just does not work well everywhere. And if they cannot shake that assumption you get a physicist thinking “find and root out the error” and a non physicist thinking “you are totally using the wrong tool” and they talk past one another- sometimes unpleasantly.
Primal still does t have amber login when the feature was requested a year ago and many smaller clients have that feature.... It's improper when key rotation doesn't exist to have users pasting their nsec all over town #nsex
I thought the zap addreses where stored in a local cache. having it in the backend would be innecessesarily wrong, I give you that. Their should be different sources of indexers and should have a Merkel root that contains all events that attestate for each post so u could audit it.
Aeneas's avatar
Aeneas 1 year ago
It was manually done, not something broke, ask everyone who was here what happened and you'll find out.
People get confused by the mere presence of server and think centrization, not connecting that censorship can be performed directly on any #Nostr client itself. Full stack clients like #Primal are going to leave UI-only clients in the dust. nevent1qqsdxjenj5fp5rr0k28ntuyzwugeuw62a6h8hmy8zkn7wu7a5nhqmhcpr9mhxue69uhhyetvv9ujuam9d3kx7unyv4ezumn9wspzqdtgwhlaw2dsdm45c8t6wzslw5qyt5r8waxjrs86llj272ledghgqvzqqqqqqy2guuqc