Replies (72)

For one thing, I did not build this UX. There is always a push and pull between UX, feature-creep, and "invisible" software quality. As far as I can tell, you have a gripe with a few pixels of layout, colors, or button styles. This isn't even UX. You're talking about a few nearly insignificant design and aesthetic preferences.
Had this on my phone for a while but haven’t tested it extensively. Mostly used Damus, Primal and Nostur. I like that both Primal and Nostur have a Media tab in the profile that allows you to curate your content in an Instagram style. Does YakiHonne support such feature? It’s a game changer for photographers that have grown tired of Instagram’s algo rat race. I tried Olas for a while and seemed promising, but the lack of development and broken features killed it for me. image
Design aesthetics are not insignificant. Ask anyone in marketing - there’s an entire science behind why users choose one look and feel over another. If good design doesn’t harm decentralization, there’s absolutely no reason not to optimize for it. The digital experience is largely visual, and visual experience is part of user experience. Building something that simply “works” isn’t enough - unless you’re shipping for other devs who live in terminal windows and think usability is optional. For everyone else, design is the bridge between function and adoption. If you can’t see the difference between these, and decide what feels better from a glance, then you probably wouldn’t understand what I mean.
They're not insignificant, but they're the last mile - and the race has barely kicked off. At every company I've ever worked at, I've been the (often sole) developer who is banging the same drum that you are right now. We just disagree about timing and feature priority given current context. I've seen first-hand how optimizing for "the average user" and "productizing" too early literally buries a business. By that, I mean: I cofounded a company that sought to do exactly that with a tech stack that we thought was ready but simply not user-friendly enough nor product/feature-rich enough. And we went bankrupt because we were wrong; we were catastrophically premature. Even now about a year later it still would have been premature. We might have been maybe 5-10 years too early on that bet. So it's weird to (apparently?) be on _this side_ of the argument. I'm not even sure I deserve to be on this side of it, because I was making kind of a different point: it's my belief that making sure nostr hews to decentralization in its early clients is the most important thing. If it can do that with stellar design and accessible UX, all the better! In the trade-off between "very decentralized and transparent" and "less decentralized, but you don't necessarily know that and the design is great", I would pick the former every time for myself. I don't know what to do with the fact that a very beautiful and performant, but slightly more centralized, client is going to pull in more people than one that is slightly slower, slightly clunkier, slightly uglier. That seems to just be the inevitable pattern of all potential freedom tech projects. Including Bitcoin! People would rather buy an ETF than a seed plate. To me, that indicates that we're letting fiat clown world win, by granting deference to "the average user's" taste for fiat clown world products and experiences, and capitulating on principles in order to cater to that taste before the ecosystem is ready to support it properly ("properly" = without caving on decentralization).
> To me, that indicates that we're letting fiat clown world win That’s exactly what I was getting at. Take Bitcoin Core (or any other full node implementation). Its interface looks straight out of Windows 95. Every screen is confusing for newcomers. The built-in wallet is a joke. You need to run an Electrum server on top just to have proper indexing, and a separate blockchain explorer to see what’s going on. When will this ever be improved for the average user? Probably never. It’s been 17 years. Instead, developers are paid millions to ship controversial changes that introduce new attack surfaces. The whole thing is backwards. The result: people opt out for custodial services and wrappers. The point is simple: if your monetary protocol requires the user to understand how the tech works just to use it, it’s not money yet. And the same logic applies to Nostr imo.
Not bad points, but feels far afield.. this conversation started off with my worry that Primal is harming decentralization, while other clients that are nearly identical to use (like Damus) are not guilt of this. And your response was "but look at the layouts of these screens - one is basically unusable". I don't see the connection between technically buried config options in Core which are difficult for a non-technical person to figure out and meaningfully change their mempool and the potentially the protocol itself, and the minor differences in layout and element sizes between nostr clients. Your argument really loses the thread because Primal ("the pretty one") is the one that has the sneaky, hidden centralizing features that the average non-technical user doesn't understand - the corollary to Core developers being paid to introduce attack surfaces in your argument.
Yeah, you’re missing the point again. The Core example was off topic, sure, but I used an extreme one to make the point clearer. I’ve tried a bunch of Nostr clients, and Damus is by far the most unfriendly to beginners imo. I just don’t see how appealing to decentralisation helps Damus justify its inferior product when users can switch between dozens of other clients without losing any Nostr data. If Primal, for example, decides to fuck their users — leaks my burner email, fake name, or rugs a couple hundred sats in their built-in wallet — what’s really at stake? I can still move to another client that’s just as decentralised, supposedly doesn’t harvest my data, and looks and feels better than Damus in its current state. So when you say Primal is “harming decentralisation,” what exactly is the harm in practice? If a user can migrate instantly without friction or loss, then that’s not centralisation — that’s just bad trust in one interface. Damus being ugly and unusable doesn’t somehow make it more virtuous.
you keep saying inferior but all you have as an example of this is a few pixels different here and here. Is that all there is or is there a bigger issue? We have spent a lot of time to make onboarding as smooth as possible, so this post is confusing to me
Let me take a step back here, maybe we're not on the same page. First, are you aware of and understand the situation I'm referring to (below)? It's not about having your wallet rugged or "losing nostr data". It's about the content you - and thousands of other newly-onboarded users - see being manipulated, re-ordered, hidden, filtered, by a central curator with no way to turn the setting off. Perhaps you want that, and that's fine - but are you aware of it? Talk about Core making changing settings difficult... Primal doesn't even have an "off" switch for this.
vinney...axkl's avatar vinney...axkl
its really simple and not that contentious: Primal connects to their own "caching" server that does some mysterious filtering/hiding, image-swapping and mysterious post-ordering (promotion of content), rather than reading directly from relays. yes, you CAN supply your own caching server, if you happen to run one or know someone who does. but you CANNOT (yet) simply instruct Primal not to do this and read directly from relays. Odell has explained as much, though he makes it sound less nefarious than I am here (which tells you how each of us feel about this "feature"). whether you see this as a good or bad thing is a matter of subjective taste, but the facts are the facts. there is no argument, just preferences.
View quoted note →
weev's avatar
weev 1 month ago
The harm in practice is that they have the ability to censor posts, and eventually they will be forced by EU regulators, among others, to do so, if Nostr ever has significant amount of traction. You are basically saying you want a centralized system. If you like Primal, you should just use X or Bluesky. I agree that Nostr onboarding of new users is atrocious and many of the apps are extremely unappealing to tons of people, but Primal should solve these problems without compromising the integrity of Nostr’s decentralized nature.
They could undo this wrong in a fairly straightforward manner. I'll be happy if they do (just like I was happy when they finally added signer integration) but the longer they don't, the more suspicious i'll become. View quoted note →
vinney...axkl's avatar vinney...axkl
"simply" being able to bypass the caching server would totally solve it (+ some honest explanation in the settings). "simply" in quotes because I'm sure that would be a large refactor to their networking code. But worth it in my opinion, as the guy not paying the bills ;) > "Uncheck this box to bypass the caching server and get content directly from the relays set below. Note: the caching server may filter content and order posts at the discretion of the server operator. You may supply your own caching server, use the Primal default, or bypass the feature altogether" That would clear up user confusion, build trust, and avoid this whole spat we find ourselves participating in.
View quoted note →
I think it would be pretty hard for them, it would be a huge refactor across multiple products
weev's avatar
weev 1 month ago
I disagree further from your position in that if the default allows them to censor posts it is unacceptable. They are claiming to be a Nostr client, but you are really not on Nostr at all. You are on a separate completely different service that happens to pull content from Nostr, but you have no assurance that will remain the case in the future. The default for every client should be to read from relays, and aggressively add new relays. If people don’t want that behavior any alternative should be opt-in and not opt-out, to not defraud and confuse the technically uninclined into believing that they are using Nostr when they are in fact using a completely different thing.
Thanks for this explainer. The answer is no, I didn’t know that, and I only have a surface-level understanding of what you’re describing — which is kind of the issue. As a user, I don’t need or want to understand it. And it’s much easier for me to assess the implications if the actors behind it turn malicious. Most users won’t even think twice about it. If the goal is to protect normies from curated or possibly manipulative content, appealing to their understanding of the risks won’t get you super far. The opportunity cost of trying probably isn’t worth it.
My honest advice: hire a competent designer or marketing expert to review your app - preferably someone with zero engineering or computer science background. Ask them what they think is missing, and maybe have them compare it with other popular apps in the same space. They’ll probably give you insights far more useful than anything I could offer. Your job as engineers is to preserve decentralization and security, not to educate users on what they “should” choose. Don’t assume you understand human behavior or market dynamics. Delegate what you can’t execute properly to those who can. That’s how you build a great product without compromising the integrity of the protocol.
> You are basically saying you want a centralized system. If you like Primal, you should just use X or Bluesky. You assumed I use Primal for their curated content — I don’t. I just found out they even do that, which only proves the point I was making. And you’re not the only one who missed it. It’s funny how often devs, when faced with feedback they don’t like, default to “if you don’t like my toy, go play with the other crappier ones.” The irony is those “crappier” ones usually work better, they simply choose different tradeoffs. Trying to steer user behavior through shaming or condescension rarely works.
Is the implication here basically that "those who are doing real decentralization" can only hope to "protect users" by building a client prettier and slicker than all the other "potentially harmful" clients out there? More or less that users shouldn't be expected to look beyond that veneer, so the best you can do to "protect their interests", as a principled freedom tech developer, is to make sure they're attracted to your product than to the "evil competitor"? I'm not even necessarily disagreeing with that. I'm just trying to get to the last page in the book faster.
Try another then? 🤷‍♂️ Depends what you mean by “specific issue.” I don’t think anything is exactly broken in Damus — I just don’t like how notes are displayed, how links and videos show up, and I miss the media features and reading sections I mentioned before. I’m also not a fan of how the feed refreshes or how there’s no confirmation when a note posts successfully. None of these are dealbreakers on their own, but together they make the overall experience feel worse compared to other apps I’ve used, like Nostur or Primal. I’ll start testing YakiHonne tomorrow to see how it feels in comparison.
If you want wider adoption, yes, more or less it’s what I’m saying. If you’re targeting cypherpunk mentality, you will probably have success appealing to them with technical details and strong code fundamentals, but when it comes to normies (mainstream adoption), priories shift rapidly. You can argue that’s why the “crypto” industry has been successfully attracting dumb people with shiny toys for many years, while Bitcoin is more popular among critical thinkers or people that have the ability to learn from past mistakes. What initially attracted people to Bitcoin wasn’t its solid fundamentals, it was the potential for outsized returns. They only had to learn the fundamentals after some got burned by the shiny alternatives. Nostr users are still early on the journey. Almost no normies use the protocol right now. But if that changes in the future, would you bet that most of them will be onboarded by the cypherpunk clients or with the Primal-likes?
> would you bet that most of them will be onboarded by the cypherpunk clients or with the Primal-likes? I see where you're going with that, but I would go further, sadly... I don't even think the Primal-likes are enough to attract the normie at the moment. Their brains are too fucking cooked with megacorp social media garbage and they are frogs-in-boiling-water wrt realizing how dangerous their situation is. I don't talk about this much.. but I think the most durable - and unfortunately very, very slow - adoption curve is community-specific software (sure, social feeds, but also "Other Stuff" apps that achieve local goals) that serves hyper-local needs, at low-cost, low friction, and while preserving sovereignty (ie. "why should we host our town message board with Zuck or Elon? and while we're at it, lets include community payments and a job board for local babysitters, I can just fork this repo and point it at our relays...!"). That will have to bake-in for a while, and then one day these communities will realize they can actually opt to "federate" with other communities who are doing something slightly similar; communicate and make payments across communities without permission or restriction, etc. Depending on what else is going on in the world at that moment, eyes may finally open. Simply: what normie X user is going to switch off of X for something even 100x prettier than Primal?
It’s crazy that you mention that — just yesterday a colleague of mine (not a Bitcoiner) pitched me basically the *same* app idea. I told her she could build it on Nostr. She had no idea what that was, so I gave her a 15-minute rundown and showed her how it works, lightning payments and all. She got it immediately and was actually excited. Today she told me she slept on it and thinks it’s a genius idea that could totally work. So yeah, normies can figure this stuff out with a bit of direction. We just need to get them into the community using the best tools available and let them take it from there. Freedom doesn’t need coordination — it happens naturally. Normies stick to platforms because their friends and heroes are still there. Once that changes, they’ll move too. They’re followers by nature.
weev's avatar
weev 1 month ago
It is easier to write centralized software than decentralized software. So many services are going to cheat and make a “Nostr” client that is centralized. You say this “usually works better” but it is actually subverting the entire point of Nostr, and delivering it into the hands of the government. Subversive behavior deserves to be treated with contempt. If you aren’t willing to put up with a mild inconvienence for freedom, why not just use Twitter or Facebook at that point? Making a censored and filtered version of “Nostr” is not a tradeoff. At that point, it isn’t Nostr, it is a fraud.
That all sounds true and I don’t generally disagree. It still misses the bigger problem with adoption from the masses. Because this happens when devs leaks implementation details to a non-technical crowd (simply swap core devs with Nostr devs - it’s more or less the same issue). image
weev's avatar
weev 1 month ago
It's not comparable at all. Knots is a joke project made by an obviously incompetent loser, clearly meant to be a social attack upon Bitcoin. Primal is not a joke project, but it is a centralized service. Feeds stopped working in the recent AWS outage. Primal is like if someone was claiming to sell Bitcoin but it was just a ledger held in a MySQL database. It’s more of a deliberate fraud and less of a ridiculous joke.
You should have said sooner that you are mentally challenged. I wouldn’t have wasted my time replying.
> why not just use Twitter or Facebook at that point the trust model of primal is strictly superior to facebook and twitter the primal stack is foss, users broadcast directly to relays, users can change caching server in the gui easily, users can copy/paste their nsec to use any other app > it is a fraud claiming that an app that uses a caching server “is not a nostr app” is similar to claiming that bitcoin wallets that use electrum servers are “not bitcoin apps,” retarded
xenonsky's avatar
xenonsky 1 month ago
somehow I was in settings thinking about the word "enhanced" let me read that Thread if bookmarks go, I disssaaaapooooint :) no. not high
xenonsky's avatar
xenonsky 1 month ago
desssooontRaaaLissssaaationnnn of data cost
the fact that we are having this conversation right now, exchanging signed and verifiable posts, while i am using primal and you presumably are not, is proof alone that primal is significantly better than x and facebook to say otherwise is either ignorant or intentionally misleading
oh i agree about that entirely! 1000%. and it is a beautiful thing. i want to be certain it stays that way - in a "verify, don't trust" sort of way. and i can't verify what that caching server does or be certain (without trusting) what it will do in the future. this "problem" just 100% goes away if there is a setting to connect directly to relays. you and miljan both said that's planned; and i look forward to it, and to having nothing left to be skeptical about.
if there was real censorship on the default primal caching server it would be obvious and most users would either change caching servers or copy/paste their nsec into a different app
xenonsky's avatar
xenonsky 1 month ago
real censorship? that is not a thing.
weev's avatar
weev 1 month ago
How would it be obvious to a normal person? Twitter censorship is rampant but not obvious to the average Twitter user. By the time that regulators get around to ordering compliance it is too late. You will be forced to censor if you make a censorable system.
weev's avatar
weev 1 month ago
Expecting a normal user to notice the differential between Primal’s Nostr feed and the one on the network is not realistic. So is expecting a normal person to tinker with settings, know what a caching server is and knowing how to locate and replace it. Whatever the default is, that’s the setting that is staying for virtually all users except a tiny fringe forever. It seems to me that Primal is repeating the essential problem with federation that Nostr was solving in the first place. In a federated system censorship becomes trivial because ever since conversation goes through gmail.com or bsky.app — the concentration of large numbers of people on a single server creates perverse incentives over time. If Nostr ever becomes popular and the most popular client is reliant on a single caching server, the operator will be ordered by courts, domain registrars and registries, CDNs, BGP peers, and app stores to filter it. Or the board will just elect new people who are censorship friendly because it is the only way to be commercially viable and get ads that pay well.
anyone who runs two different apps will be able to easily verify them against each other literally the only “technical skill” required to do that is copy/paste
it would not be obvious unless they had access to nostr notes directly from relays (on another client, as you say). their Primal-only world would not have that information, so they wouldn't know they were missing it. as i said at the outset, they'd be trusting, not verfying. but their ability to verify is restored with a little toggle that says "bypass caching server". EZ, if you want it.
the caching server setting is Primal's warrant canary. if they add a "bypass caching server, connect directly to relays" setting i'll be much more convinced they are good actors. and if it ever disappears thereafter, i'll know they've been captured. ...if they refuse to add it to begin with, i'll have no way to know which one it is, and i'll have to assume the worst. this is a healthy sort of pressure in a decentralized ecosystem. i was similarly obnoxious about nsec sign-in, and to their credit they did ultimately add Amber login and i give them credit for that. this issue can simply go the same way and everyone will be happy
what are they copy/pasting between? and when did i ever say it doesn't exist? that isn't my argument at all - my premise is a user who is only aware of Primal and uses that single client. if you take issue with that premise, that's fine, but say so and we can adjust. once you suppose additional clients, you concede that you have to use other sources of truth that DO VERIFY, in order to temporarily be safe TRUSTIing Primal. this is my entire point.
it is stupid easy to run multiple apps and verify them against each other - literally just copy/paste a small subset of users doing this protects everyone, they will sound the alarm if any app is malicious
Requiring users to do their verification that "they're still on nostr" using _other , non-Primal clients_ as the source of ultimate truth... That settles it, no?
vinney...axkl's avatar vinney...axkl
what are they copy/pasting between? and when did i ever say it doesn't exist? that isn't my argument at all - my premise is a user who is only aware of Primal and uses that single client. if you take issue with that premise, that's fine, but say so and we can adjust. once you suppose additional clients, you concede that you have to use other sources of truth that DO VERIFY, in order to temporarily be safe TRUSTIing Primal. this is my entire point.
View quoted note →
.....and if an app is truly malicious, then the set of users who _only_ use this app won't ever see the news that their app is malicious - because it is malicious and hides that information. Remember how the rest of the whole internet works?
Countless examples all over legacy social media of people screenshotting and comparing each others' google results, news site promoted content, twitter and facebook feeds and posts - that whole pile of shit is exactly the mess that we're finally able to escape from. Adding potentially-malicious and non-bypassable caching servers in between sources of truth and users eyeballs goes in precisely the opposite direction, right back into that mess.
well now your theoretical escalated significantly this risk is not unique to primal malicious actors could do similar at app or relay level, unless every user is verifying client code and running their own relays honestly this is starting to feel like bad faith from you and it’s disappointing
I completely agree about the app level. Any popular open-source client could quietly add a censorious cache layer and try to sneak it past the eyeballs of reviewers. And any "single client" users would be at risk of never hearing about this news if they've already installed the censorious update. You're correct there that this is a threat to all software everywhere. That's the level playing field of "threat" that everyone tries to rise above. And in my mind, the shared game then is to try and add features and positive user experience above that line **without** adding new threats unique to one client or service. The tradeoff is going to be different for everyone, and given the absolute shit state of the rest of the internet, and the potential for open protocols and censorship avoidance, **my** tolerance in that trade-off is very strict. I've said in almost every note: Primal can completely dissolve even this suspicion, and I do honestly believe they will eventually (I've seen them do similar before!), by allowing the user to bypass the caching server if they desire. I don't actually think Primal (or you) are bad actors, but I do worry that powerful bad incentives are guaranteed to manifest themselves with success and the best way to beat them is to tie your own hands behind your back before they ever appear. Once a project is on the wrong side of that curve (bad incentives accelerate faster than honesty can hold at bay), the game is over and everyone loses (except those with the investment exit). So you have to head it off early. And community pressure can help with that, if done right. I _want_ to be doing that right - so I'm also disappointed to hear that you think this is bad faith from me. I'd like to correct it if possible, for everyone's sake.
> starting to feel like bad faith i take this very seriously and defer to my interlocutor on it generally. i don't mind if you have a negative impression of me personally during this (prefer otherwise, but i'll accept it), but i am very committed to having my argument stand on its own as valid and good-faith. what do you need from me to dissolve the bad faith accusation? i'm motivated to get there and get back to the core of the argument to see where we disagree. my hunch is that we just feel difierently about the tradeoffs and the severity of the risks, and i would be content to let it lie peacefully there, once established. 🤝
casey's avatar
casey 1 month ago
You’re asking the right questions. But I’ve lost faith in getting any valuable answers to your questions. 🫡
> my hunch is that we just feel difierently about the tradeoffs and the severity of the risks, and i would be content to let it lie peacefully there yes 🤝