"There are some seven hundred million non-Russian non-Communists now living daily lives of virtual slavery behind the Iron Curtain, some forty million of them in the actual slave labor camps of Russia and Red China, who only a dozen years ago, or much less, enjoyed practically the same personal freedoms as do you and I today. These people now say to each other, but above all to themselves: 'If I had only known! If I had only believed! There is no amount of work and sacrifice and suffering I would not have given, if I had only realized the necessity, the danger, in time. Now it is too late, and any amount of struggle and of sacrifice, even of life itself, is all in vain.'"
- Robert Welch, 1959
one point oh only, I have some beautiful parsing logic to try to guess at 1.0 support since the nip hasn't been merged yet:
```
export const hasNegentropy = (url: string) => {
const p = relaysByUrl.get().get(url)?.profile
if (p?.supported_nips?.includes(77)) return true
if (p?.software?.includes('strfry') && !p?.version?.match(/^0\./)) return true
return false
}
```
New minor release of Coracle is out, now with NIP 55 (Amber) support! Thanks to nostr:nprofile1qy2hwumn8ghj7un9d3shjtnyv9kh2uewd9hj7qg3waehxw309ahx7um5wgh8w6twv5hszrnhwden5te0dehhxtnvdakz7qgewaehxw309aex2mrp0yh8x6rpwfjkwcts9ehx2ap0qy88wumn8ghj77tpvf6jumt99uqzpn0wjs7tkxw9r2uy0fndt4m5xua2na3a9peydw6ekzp8lf0xxaqqc2ztx7 for doing what was (for me) impossible.
The updated APK is not yet on nostr:nprofile1qydhwumn8ghj7emvv4shxmmwv96x7u3wv3jhvtmjv4kxz7gppemhxue69uhkummn9ekx7mp0qythwumn8ghj7un9d3shjtnnw3hkuetj9e3k7mf0qyw8wumn8ghj76r0v3kxymmy9e3k7unpvdkx2tn5dahkcue0qyjhwumn8ghj7en9v4j8xtnwdaehgu3wvfskuep0dakku62ltamx2mn5w4ex2ucqypuvuma2wgny8pegfej8hf5n3x2hxhkgcl2utfjhxlj4zv8sycc86trxjy7 , but is available on the releases page:
https://github.com/coracle-social/coracle/releases/tag/0.4.11
# 0.4.11
- [x] Add NIP 55 support to Android
- [x] Add negentropy support
- [x] Simplify sync for messages, groups, and notifications
- [x] Small UI fixes
nostr:nprofile1qy2hwumn8ghj7un9d3shjtnyv9kh2uewd9hj7qgwwaehxw309ahx7uewd3hkctcpzamhxue69uhhyetvv9ujumn0wd68ytnzv9hxgtcpzamhxue69uhhyetvv9ujuurjd9kkzmpwdejhgtcpzemhxue69uhhyetvv9ujumn0wd68ytnwv46z7qpqwf4pufsucer5va8g9p0rj5dnhvfeh6d8w0g6eayaep5dhps6rsgs5cank3 I'm having some trouble publishing again:
https://image.nostr.build/9f403e8be9c91562965e5f94d672e5bc0589163dd52cad3daf0e45cffa84dbe2.png
Yes, if censorship resistance is an anti-feature for a community organizer, they won't use nostr. That's ok, centralized use cases can use centralized solutions (although integrating nostr would still have benefits, if only for portable identity). This is a question I've been mulling over for a long time now. Nostr is really only useful for open and semi-permeable groups.
You could make exclusive content work, either with encrypted groups or some other method of signature stripping, but you'd be cutting against the grain. Still, this is something I'm very interested in experimenting with on nostr.
I've removed the numbers (a future release will add them back in to the popover), so that's working as intended. For the follow issue, my best guess is that you've denied your signer access to sign follow events. Go ahead and clear your signer preferences that and let me know if that fixes it.
Attempted to build this with coracle.tools. It's mostly a proof-of-concept at this point, although I think what it's proven is that the approach needs to be slightly different, hence flotilla.coracle.social (WIP). I think chat over forums is probably a better emphasis, but agree with much of what you're saying.
I don't understand what I'm doing at all, but onosendai.tech is SO COOL. Definitely listen to your favorite synthwave playlist while you build your pow chain and deploy shards. And always make sure to remove your neuroactive interfaces before derezzing.
nostr:nevent1qyghwumn8ghj7mn0wd68ytnhd9hx2tcpzdmhxue69uhhwmm59e6hg7r09ehkuef0qyt8wumn8ghj7mn0wd68yetvd96x2uewdaexwtcpz4mhxue69uhhyetvv9ujuerpd46hxtnfduhszrnhwden5te0dehhxtnvdakz7qpq976defxuz4m7567yv4wqjqh5z68m85jafxzygmm7ghhumvqsf6lq2utxpc
I've spent over two years studying social media for communities, but nostr:nprofile1qyvhwumn8ghj7un9d3shjtnndehhyapwwdhkx6tpdshsz9nhwden5te0wfjkccte9ekk7um5wgh8qatz9uq3wamnwvaz7tmjv4kxz7fwdehhxtnnda3kjctv9uq3uamnwvaz7tmnda3kjctv9ec8ymm5v4ehgtnwv46z7un9d3shjqg4waehxw309aex2mrp0yhxgctdw4eju6t09uqzqak8r2hr5jglrk0wc37t59lz98x6gyf6pwaku6hpwakhvslznjh6ydpa6p has spent two decades on it. I will struggle to find words for some ill-defined idea I'm grasping for, and he'll just come out with a pithy encapsulation of it that makes things crystal clear. He is an amazingly effective communicator, I'm glad we have him on our team.
Judging just from the readme, this is exactly how @welshman/app works. I found indexeddb way too slow to use interactively, so I hydrate once at page load and batch writes to it. I then use "repository" to store all my events, and "relay" to wrap in a "executor target" (see @welshman/net) so that I can use it like a normal relay. I then have some utilities in @welshman/store that wrap the repository in svelte stores so that I can reactively update my app. It works really well.
I used liveQuery for a while, and maybe I was holding it wrong but it seemed slow and sort of unreliable. Which client are you building? I could have something to do with data model, or just how much data is getting pulled in
I'm of two minds about push notifications. On the one hand, they're probably the best lever for growth. On the other hand, the constant drive for engagement is one of the main things that makes social media toxic. Daily/weekly digests might be a good way to thread the needle.
The error is coming from nos2x:
https://github.com/fiatjaf/nos2x/blob/b1c543ba62caea495e65df8e3a08917ead5b938c/extension/nostr-provider.js#L81
This might be nostr:nprofile1qydhwumn8ghj7un9d3shjtnhv4ehgetjde38gcewvdhk6tcpzdmhxue69uhhwmm59e6hg7r09ehkuef0qythwumn8ghj7enjv4h8xtnwdaehgu339e3k7mf0qyd8wumn8ghj7mn0wd68ytn5dpjhxctdv43kzapwd9hj7qgcwaehxw309ahx7um5wgh8x6tydekxzcnn9ehxctcqyqalp33lewf5vdq847t6te0wvnags0gs0mu72kz8938tn24wlfze65qkltc 's problem, at least because the error message is undefined. But I wouldn't rule out coracle passing something broken to nos2x.
Can you believe I've been just raw dogging REQ this entire time? SMH
nostr:nevent1qyw8wumn8ghj76r0v3kxymmy9e3k7unpvdkx2tn5dahkcue0qy2hwumn8ghj7un9d3shjtnyv9kh2uewd9hj7qgmwaehxw309aex2mrp0yh8wetnw3jhymnzw33jucm0d5hszxnhwden5te0wpuhyctdd9jzuenfv96x5ctx9e3k7mf0qyg8wumn8ghj7cfwdehhxtnvdakz7qpqdzqt8py8sy8r02hx3gpqa5ptknqpkwmrwgmnr50504grd8dhv69sl7lmm0
I'm trying to integrate negentropy into coracle and running into some mysterious errors. I'm sending the following message to relay.damus.io:
```
["NEG-OPEN","NEG-78170247",{"kinds":[1],"authors":["97c70a44366a6535c145b333f973ea86dfdc2d7a99da618c40c64705ad98e322"]},"6100000216bbca77492e78267aea99c68a7d307ec0dd2b63c419e0be8611a3a669f3db908bf45ea7eee4cada66562498f2c226803c4e9f40161d4d3e33d624a08bbea4197fe00a3eb601abd0931fc2fbd37c21e866b992266deda52d9b50edf0a528a6f89cc53ab8ca7154c92c583071bcd9d96035c5c6c30c1b14015df8d3267ea29e12b8586142c8d0221f8840fa596b033c904bf0e6c37c00b6353acc4e47bba06ab60f94f556fb35469728719cd41a535d84ebf7a89a8a9d396d75ca40fba052401b95ec4470f5b85dc6d52f7fbd703d8fe22d5bd5284262908247f682c6096f6448c7588b5d394b5192b42570122c419a4d30f87efd3a8b9d1f0b26bcfc88f9b26c8e7555dab12c1db5ac948591075fd21005408ec8b6e20b9a92a59d7d80cb733bf32d44eaef840a596c354d2876534f7827c4e1e2c73c6be0372d2b34c7424d8e8d4448ddf614f95acca0e44f4f2403b136b9da6aeed86b8d00befd2c9dd8129ab45cca91f819cd665f0b2d4652ba74c34b223fd0b4c9838da43d157db8929d4a009ffa472b4554c3f57a7b64a65d40003b0c093b52cd84b2e2c9b5ab61f8c37fa37ce3710ccb936bd9776892dc5024ebb9557ef55b060f456852725e47f58743f703f02408373b59d3706a7c8b24f20746eff68626e47b75bd5dbeff429eaba2b1899301206ba198f0f3084b35fe30b3c64d21c42e93b8387a13fc7f063af5fca393e1998424d037c603f823ef8b87794fdca778f31dbd9b5752b0685deadbd5a52506094195e0017c1fefc20eb2d361db0a19f7b75782410360c27224059df257846d13ebdefcafc047706f0e631d25af70288685a6e4b24d69674dd527df9e592f9c41d6bdc8adeea672b588c0f4546615d0b611e1dd6bba9b62c61a27a1b2dac06b885269484114741b471da4c085bd7c1d6028ed7bca7d4a31b787ce802381de6f246e3352078ef1c21522ac628da87521d0e83ffdf1bf562079d2b7ebb0fa"]
```
Damus responds with:
```
["NOTICE","ERROR: negentropy error: negentropy query missing elements"]
```
You can find the bulk of my code below. I'm relying on the latest version of Negentropy.js
https://github.com/coracle-social/welshman/blob/master/packages/net/src/Executor.ts#L94
Any hints? Is it a protocol mismatch? nostr:nprofile1qy88wumn8ghj7mn0wvhxcmmv9uq32amnwvaz7tmjv4kxz7fwv3sk6atn9e5k7tcpremhxue69uhkummnw3ez6ur4vgh8wetvd3hhyer9wghxuet59uq3wamnwvaz7tmrvyh8yetvv9ukzcnvv5hx7un89uq3gamnwvaz7tmjv4kxz7tpvfkx2tn0wfnj7qpqyxprsscnjw2e6myxz73mmzvnqw5kvzd5ffjya9ecjypc5l0gvgkskcrj9w nostr:nprofile1qyghwumn8ghj7mn0wd68ytnhd9hx2tcpz4mhxue69uhhyetvv9ujuerpd46hxtnfduhsz9nhwden5te0wfjkccte9ekk7um5wgh8qatz9uqsuamnwvaz7tmwdaejumr0dshszxnhwden5te0v9e8gtnwdaehgunxwfjkz6mn9e3k7mf0qqsr9cvzwc652r4m83d86ykplrnm9dg5gwdvzzn8ameanlvut35wy3gwau2us nostr:nprofile1qyd8wumn8ghj7urewfsk66ty9enxjct5dfskvtnrdakj7qg3waehxw309ahx7um5wgh8w6twv5hszynhwden5te0dehhxarjw4jjucm0d5hsz8rhwden5te0wdshgetvd35hgefwdpa8yep3xsujucm0d5hsz3thwden5te0xaehyu3hvd58jcekwekxs7nsvvexsmpkd3uh2mn8wek82mmg0fex6aphxe4kyue5ddkhjergwfux7cttdd38zatpvshxcmmrv9kz7qpqye5ptcxfyyxl5vjvdjar2ua3f0hynkjzpx552mu5snj3qmx5pzjstgenpa
nostr:nprofile1qyd8wumn8ghj7cnvdamkzar9wghxummnw3erztnrdakj7qgwwaehxw309ahx7uewd3hkctcpz4mhxue69uhhyetvv9ujuerpd46hxtnfduhszvrhwden5te0xgurwctkw4sksem8v9j8xepjxyehyee38pskwcfn09nnxamgvuuxwwrpvenju7re0ghsz9rhwden5te0dahxc7twda6x2uewd3hkctcqyp4em2fqcjmwe0evzgqc573dzsa5ml0es7xrh6kxncumkktcg8xxue4uszk would you mind updating your negentropy npm package? https://www.npmjs.com/package/negentropy
It's a proxy for how many people/groups/feeds the user wants notes from use the relay. If it's used a lot, it might be worth adding the relay as inbox/outbox. Or, if the quality of the notes coming from it is low, blocking the relay (not yet implemented).
I think (as usual) that more relay de-commodification will help with this. This is counter-intuitive, because it means that for each use case there are one or two choke points that handle most traffic.
- Looking for a profile? Use purplepag.es or relay.nostr.band
- Searching? Nostr.land or relay.nostr.band
- Looking for safe notes from your network? Use a wot relay
A new category of relay might be "newcomers welcome, spam managed by heuristics". A relay that's really good at assessing whether notes by a fresh pubkey are worth showing. Clients then would hard-code this relay when publishing notes from newcomers or fetching notes from new accounts, just like they already do for search/indexer relays.
Obviously, it would be ideal for many instances of each relay type to exist, and for discovery of these relays to be automatic rather than hard-coded, and I think we can get there, but it will probably require defining these use cases and advertising support for them via nip 11 or something.
nostr:nevent1qyw8wumn8ghj76r0v3kxymmy9e3k7unpvdkx2tn5dahkcue0qy2hwumn8ghj7un9d3shjtnyv9kh2uewd9hj7qg6waehxw309ac8junpd45kgtnxd9shg6npvchxxmmd9uq3gamnwvaz7tm0dek8jmn0w3jhxtnvdakz7qfqwaehxw309ashqmrpvdjkjmn5dpjhxatw9ehx7um5wgcjucm0d5hsqgruudcsejund0vhw6yjm3gzf6ae24l02kcxpazks5njterltp6r7u98pp3z
A new user who is getting shadow-banned from nostr:
nostr:nevent1qy2hwumn8ghj7am0deejucmpd3mxztnyv4mz7qg4waehxw309aex2mrp0yhxgctdw4eju6t09uq3wamnwvaz7tmjv4kxz7fwwpexjmtpdshxuet59uq35amnwvaz7tmsw4exzanfv3sjumn0wd68ytnvv9hxgtcppemhxue69uhkummn9ekx7mp0qqsv749n98jytusc545usuky5p9h8xzyl605rys9mpelyfre0yn4j3qd5kvzh
How can we improve this? I think the main fault is with primal here (just because nostr:nprofile1qy2hwumn8ghj7un9d3shjtnyv9kh2uewd9hj7qghwaehxw309aex2mrp0yh8qunfd4skctnwv46z7qgwwaehxw309ahx7uewd3hkctcpr9mhxue69uhhyetvv9ujuumwdae8gtnnda3kjctv9uq3zamnwvaz7tmwdaehgu3wwa5kuef0qqs92xycp9kys8cqyx09e9pfnggaj9prjjwd67t6t7zs3ra4fyh2u4gv4c4d0 is using it), for blocking notes from its own users, and not showing relay publish failures (maybe?). But the criticisms apply to all clients.
Probably the root issue is that relay policy is hard to infer via nip 11 and notice/ok messages. It's also one of those unglamorous chores like error handling that no devs (except go devs) enjoy.
Yeah, and compiling all this to a human-readable summary will definitely be impossible in all circumstances. I think policy might be best indicated by a combination of common, standard limitations (or rules, sure), and a human-readable description. Eventually, common configurations might be compiled into simple tags, like "paid inbox" or "fresh pubkeys". If a relay advertises that it's good for a given use case, they don't have to prove it and might not work well, but users and clients could at least make more intellligent guesses.
Does it? The client tag just helps people know what client published the note, which is a different thing from knowing how best to read the note, which is what handlers are for.
Coracle looks for recommendations from people you follow, and surfaces any handlers that are recommended. This is all automatic, and shows up at the bottom of a note in a drop down you can use to open any recommended handler. It is an extra step, but I'm not sure how you could get it shorter.
Great questions, relays can get complicated, especially since relay policy isn't surfaced super well. To get some hints on what a particular relay may or may not accept, you can look at the NIP 11 relay document and watch for error messages contained in NOTICE or OK messages. This may help explain why your notes are being rejected.
It's odd that primal would reject notes from their own users. For most of the rejections, I doubt that WoT would be the reason, since wot filtering is a relatively new thing on the relay side and not supported by a lot of relay implementations. My best guess would be rate limiting, or over-zealous spam filtering after the last few weeks of ReplyGuy.
"groups" are a rorschach test, everyone has a different referent in mind when they use the word. Some people even have a different referent in mind every time they use the word 😂
I pretty much agree with everything you say there. I am also building a non-nip29 app based on some of these ideas. Would you be interested in coming on the tgfn podcast to talk about communities?
If anyone out there is currently dissatisfied with their nostr client, may I humbly suggest Coracle. It is stable, reasonably fast, and has better feed customization than anyone else. It also now comes in "android" flavor as well.
Notes by hodlbod | export