<rss
      xmlns:atom="http://www.w3.org/2005/Atom"
      xmlns:media="http://search.yahoo.com/mrss/"
      xmlns:content="http://purl.org/rss/1.0/modules/content/"
      xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd"
      xmlns:dc="http://purl.org/dc/elements/1.1/"
      version="2.0"
    >
      <channel>
        <title><![CDATA[hodlbod]]></title>
        <description><![CDATA[Christian Bitcoiner and developer of the coracle.social nostr client.
Learn more at https://coracle.tools]]></description>
        <link>https://hodlbod.npub.pro/tag/protocol/</link>
        <atom:link href="https://hodlbod.npub.pro/tag/protocol/rss/" rel="self" type="application/rss+xml"/>
        <itunes:new-feed-url>https://hodlbod.npub.pro/tag/protocol/rss/</itunes:new-feed-url>
        <itunes:author><![CDATA[ hodlbod]]></itunes:author>
        <itunes:subtitle><![CDATA[Christian Bitcoiner and developer of the coracle.social nostr client.
Learn more at https://coracle.tools]]></itunes:subtitle>
        <itunes:type>episodic</itunes:type>
        <itunes:owner>
          <itunes:name><![CDATA[ hodlbod]]></itunes:name>
          <itunes:email><![CDATA[ hodlbod]]></itunes:email>
        </itunes:owner>
            
      <pubDate>Thu, 09 May 2024 17:24:58 GMT</pubDate>
      <lastBuildDate>Thu, 09 May 2024 17:24:58 GMT</lastBuildDate>
      
      <itunes:image href="https://i.nostr.build/AZ0L.jpg" />
      <image>
        <title><![CDATA[hodlbod]]></title>
        <link>https://hodlbod.npub.pro/tag/protocol/</link>
        <url>https://i.nostr.build/AZ0L.jpg</url>
      </image>
      <item>
      <title><![CDATA[The ethics of nostr]]></title>
      <description><![CDATA[On why ethics is an essential component of software development.]]></description>
             <itunes:subtitle><![CDATA[On why ethics is an essential component of software development.]]></itunes:subtitle>
      <pubDate>Thu, 09 May 2024 17:24:58 GMT</pubDate>
      <link>https://hodlbod.npub.pro/post/1715270020989/</link>
      <comments>https://hodlbod.npub.pro/post/1715270020989/</comments>
      <guid isPermaLink="false">naddr1qqxnzde3x5erwvpsxgcrjwpeqgsf03c2gsmx5ef4c9zmxvlew04gdh7u94afnknp33qvv3c94kvwxgsrqsqqqa28kke9q8</guid>
      <category>nostr</category>
      
        <media:content url="https://image.nostr.build/2be6753dc4db312a3135579ee1de96bfa858f29921700213fe0a4710ba608deb.jpg" medium="image"/>
        <enclosure 
          url="https://image.nostr.build/2be6753dc4db312a3135579ee1de96bfa858f29921700213fe0a4710ba608deb.jpg" length="0" 
          type="image/jpeg" 
        />
      <noteId>naddr1qqxnzde3x5erwvpsxgcrjwpeqgsf03c2gsmx5ef4c9zmxvlew04gdh7u94afnknp33qvv3c94kvwxgsrqsqqqa28kke9q8</noteId>
      <npub>npub1jlrs53pkdfjnts29kveljul2sm0actt6n8dxrrzqcersttvcuv3qdjynqn</npub>
      <dc:creator><![CDATA[ hodlbod]]></dc:creator>
      <content:encoded><![CDATA[<h1><a href='/tag/lastword/'>#lastword</a></h1>
<p>A few weeks ago, Mike proposed the addition of a feature to nostr. The content of the proposal itself isn't important, but the resulting conversation illustrated something important about nostr development that I wanted to draw attention to.</p>
<p>If you're interested, you can find the issue <a href="https://github.com/nostr-protocol/nips/issues/1204">here</a>. The idea was basically a tag that disabled comments to a reply, for when you wanted to gracefully exit a conversation that had outlived its usefulness.</p>
<p>While I definitely sympathize with the experience of getting stuck in an unproductive argument and being unable to leave because you have to have the last word, I do think it's better to take responsibility for leaving the conversation, rather than make other people do it for you. You can either outlast your opponent, let them have the last word, or tell them "I don't want to talk about this any more, I'm not going to reply".</p>
<p>This is just my opinion, and it's really not important whether I'm right or not. What was interesting was how Vitor responded:</p>
<blockquote>
<p>I am not sure if the NIP review process should consider "what's good for the user" in the discussion. That kind of nanny state thinking is what went wrong with regular social media in the first place.</p>
</blockquote>
<h1>Permaculture and Ethics</h1>
<p>What it sounds like (although I have a hard time believing this is actually his position), is that Vitor is dismissing the relevance of an ethical framework in designing a protocol, preferring to stick to the mechanics of what is being suggested. As Vitor says, "Clients can do whatever they want, of course." This is true, but ignores the question of why a client developer might want to do any particular thing.</p>
<p>In a recent <a href="https://fountain.fm/episode/30uEXC25615Ze2ELjY2p">Thank God for Nostr episode</a>, I interviewed Scott Mann of the <a href="https://thepermaculturepodcast.com/">Permaculture Podcast</a>. When I asked him his opinion on how to manage decentralized protocol design and build effective consensus, here's what he had to say:</p>
<blockquote>
<p>[You] don't need to frame it as a software development project, or even a protocol. I would look at it as a distributed community-based and community-supported project, whatever that is. Because permaculture is such a large umbrella, I like to go up to that 50,000 foot view and pull away from what the details are. Because the details are what we're going to build our solutions <em>from</em>.</p>
<p>And that's one of the things I didn't mention earlier — there's kind of a hierarchy within permaculture that goes, at the top are the ethics of permaculture: earth care, people care, fair share. Beneath that are the principles, then usually we have strategies and techniques.</p>
<p>But there's a dividing line between ethics and principles and the strategies and techniques, that we start at that top, and use the ethics to decide whether or not we're even going to launch a project.</p>
</blockquote>
<p>He goes on to say: </p>
<blockquote>
<p>I'm going to use the principles and see how can I apply those principles to my research and original design. To make sure that whatever I'm creating creates some kind of a surplus, to have a refinement process in place before I even launch, like what is that going to look like, even if I have to change it later, just having some of these building blocks in place.</p>
<p>And then once I've done that and have gone deep into my research into what this might look like, how I might launch it, that's where I would start going into strategies and going ok, how do I want to market this? How do I want to get this out to the people who are going to use it, how do I want to maintain this, how do I want to do distributed decision making, and then as I start to think about distributed decision making, looking at what is the form that I want to use for that?</p>
</blockquote>
<p>Scott's thesis is that ethics and principles should be in the front of your mind both as you're considering a project, and as you continue to build it out. This not only makes sense as something to do if you want to succeed, it's categorically true. Action can't happen without agency, and it is your agency that informs what you choose to do, and how you plan to go about it.</p>
<p>The word "ethics" comes from the Greek <em>ēthos</em>, meaning "moral character". In other words, your ethic is <em>who you are</em>. Your values, hopes, preferences, faults all factor in to your actions.</p>
<p>This is not always clear, because in fiat-world, many people suspend their values in order to "get something done". If you want to protect your savings, you invest it in index funds, propping up the stock price of companies that hate you. If you want to make money, you go work at a job where you're berated quarterly for being racist. People think that they can exercise their own values in their private life, while actively undermining those values with the majority of their time and purchasing power.</p>
<p>But this is not how people with integrity act. And I think if you can say one thing about nostr — both its developers and the community at large —&nbsp;is that they have a very high level of integrity. In other words, their actions are clearly informed by their <em>ēthos</em>.</p>
<p>This is a very good thing. What is the point of building an entirely new internet if we're not going to impose our values upon it? What an absolute waste of effort.</p>
<h1>A Nostr Manifesto</h1>
<p>This is not to say that any one developer has the right to imposing his own vision on the protocol because of his own personal values and reasons for contributing, which is what I think Vitor was being cautious about. But there are lines I think we can draw as a community that can't really be crossed without excluding yourself from what I might call the "nostr group ethic".</p>
<p>So what are those boundaries? What <em>is</em> a nostrich? Here are some values I've observed to be generally shared among nostr developers and users. Not everyone would full agree with these (including myself), but I think they're a fair characterization of the community.</p>
<ol>
<li>Free speech absolutism. No central entity should be able to globally censor any content. This comes with the trade-off of objectively evil content continuing to exist. This trade-off is acceptable, both because of the value of free speech, but also because evil will continue to exist regardless of attempts to suppress it.</li>
<li>Empower individuals over institutions. No centralized entity can be trusted to safeguard the interests of the individual. Institutional incentives are asymmetric and easily corrupted. Better to have many subjective views of the world, than a single, centrally managed view of the world.</li>
<li>Advertising-based business models should be viewed with great skepticism and caution. Advertising is a system of incentives that is central to the institutional corruption we see around us. Broadly, this includes paid ads, monetization of engagement, public/private partnerships, and "crypto".</li>
</ol>
<p>There are others that are shared by many within nostr, although not as widely agreed upon. Two I can think of are:</p>
<ul>
<li>Economic activity should be voluntary. Software and content should be free, and creators should be amply rewarded via zaps or other value-for-value models.</li>
<li>Social media should support real life community and relationships, not detract from them. We should all take time to touch grass.</li>
</ul>
<p>I'm personally skeptical of the first of these, and strongly in support of the second. Much of my energy as a nostr developer has gone into attempting to subvert and reform traditional patterns of social media to not only support, but also resemble relationships that exist in the analog world God made, and placed us in.</p>
<p>This particular principle is the one at play in the conversation I linked to at the top of this post. My comments weren't an accusation that anyone was acting "unethically" in a universal sense, only that the proposed feature was incompatible with my vision for what nostr should be.</p>
<p>But of course, my vision is not shared by everyone, and the principle of "support real life" is clearly subservient to core ethic <a href='/tag/2/'>#2</a>, which admits the value of a diverse set of opinions about the world. I have no right (or ability) to invalidate anyone else's core principles. But by the same token I'm free to express my own, and attempt to convince other people to share them. This is the basic value proposition of freedom of speech itself.</p>
<h1>Ethical Cohesion</h1>
<p>I would go further, and say that not only is it permissible to talk about ethical reasons for building one thing or another on nostr, it's essential. By having these conversations we fuse our individual ethics into a shared ethic. By calibrating our moral compasses to point in (roughly) the same direction, we also decrease the friction involved in getting something done.</p>
<p>I think this was a significant part of the idea behind Sovereign Engineering —&nbsp;get a bunch of people in a room together sharing meals and going on hikes, and the work will accelerate! This is also the way a church works. By meeting weekly together we strengthen our shared identity and build one another up through our activity. In fact, this is the basic definition of a community&nbsp;as Scott Mann puts it. In his words, a community can provide:</p>
<blockquote>
<p>a series of connections, and a knowledge base, and a skillset that we can't fulfill as an individual, while having a social relationship with people in such a way that we can call on them for help.</p>
</blockquote>
<p>So maybe, as I've said before, the real protocol is the friends we made along the way. Disagreement and discussion is a healthy thing for a community to have, and we should never stop asking "why?"</p>
]]></content:encoded>
      <itunes:author><![CDATA[ hodlbod]]></itunes:author>
      <itunes:summary><![CDATA[<h1><a href='/tag/lastword/'>#lastword</a></h1>
<p>A few weeks ago, Mike proposed the addition of a feature to nostr. The content of the proposal itself isn't important, but the resulting conversation illustrated something important about nostr development that I wanted to draw attention to.</p>
<p>If you're interested, you can find the issue <a href="https://github.com/nostr-protocol/nips/issues/1204">here</a>. The idea was basically a tag that disabled comments to a reply, for when you wanted to gracefully exit a conversation that had outlived its usefulness.</p>
<p>While I definitely sympathize with the experience of getting stuck in an unproductive argument and being unable to leave because you have to have the last word, I do think it's better to take responsibility for leaving the conversation, rather than make other people do it for you. You can either outlast your opponent, let them have the last word, or tell them "I don't want to talk about this any more, I'm not going to reply".</p>
<p>This is just my opinion, and it's really not important whether I'm right or not. What was interesting was how Vitor responded:</p>
<blockquote>
<p>I am not sure if the NIP review process should consider "what's good for the user" in the discussion. That kind of nanny state thinking is what went wrong with regular social media in the first place.</p>
</blockquote>
<h1>Permaculture and Ethics</h1>
<p>What it sounds like (although I have a hard time believing this is actually his position), is that Vitor is dismissing the relevance of an ethical framework in designing a protocol, preferring to stick to the mechanics of what is being suggested. As Vitor says, "Clients can do whatever they want, of course." This is true, but ignores the question of why a client developer might want to do any particular thing.</p>
<p>In a recent <a href="https://fountain.fm/episode/30uEXC25615Ze2ELjY2p">Thank God for Nostr episode</a>, I interviewed Scott Mann of the <a href="https://thepermaculturepodcast.com/">Permaculture Podcast</a>. When I asked him his opinion on how to manage decentralized protocol design and build effective consensus, here's what he had to say:</p>
<blockquote>
<p>[You] don't need to frame it as a software development project, or even a protocol. I would look at it as a distributed community-based and community-supported project, whatever that is. Because permaculture is such a large umbrella, I like to go up to that 50,000 foot view and pull away from what the details are. Because the details are what we're going to build our solutions <em>from</em>.</p>
<p>And that's one of the things I didn't mention earlier — there's kind of a hierarchy within permaculture that goes, at the top are the ethics of permaculture: earth care, people care, fair share. Beneath that are the principles, then usually we have strategies and techniques.</p>
<p>But there's a dividing line between ethics and principles and the strategies and techniques, that we start at that top, and use the ethics to decide whether or not we're even going to launch a project.</p>
</blockquote>
<p>He goes on to say: </p>
<blockquote>
<p>I'm going to use the principles and see how can I apply those principles to my research and original design. To make sure that whatever I'm creating creates some kind of a surplus, to have a refinement process in place before I even launch, like what is that going to look like, even if I have to change it later, just having some of these building blocks in place.</p>
<p>And then once I've done that and have gone deep into my research into what this might look like, how I might launch it, that's where I would start going into strategies and going ok, how do I want to market this? How do I want to get this out to the people who are going to use it, how do I want to maintain this, how do I want to do distributed decision making, and then as I start to think about distributed decision making, looking at what is the form that I want to use for that?</p>
</blockquote>
<p>Scott's thesis is that ethics and principles should be in the front of your mind both as you're considering a project, and as you continue to build it out. This not only makes sense as something to do if you want to succeed, it's categorically true. Action can't happen without agency, and it is your agency that informs what you choose to do, and how you plan to go about it.</p>
<p>The word "ethics" comes from the Greek <em>ēthos</em>, meaning "moral character". In other words, your ethic is <em>who you are</em>. Your values, hopes, preferences, faults all factor in to your actions.</p>
<p>This is not always clear, because in fiat-world, many people suspend their values in order to "get something done". If you want to protect your savings, you invest it in index funds, propping up the stock price of companies that hate you. If you want to make money, you go work at a job where you're berated quarterly for being racist. People think that they can exercise their own values in their private life, while actively undermining those values with the majority of their time and purchasing power.</p>
<p>But this is not how people with integrity act. And I think if you can say one thing about nostr — both its developers and the community at large —&nbsp;is that they have a very high level of integrity. In other words, their actions are clearly informed by their <em>ēthos</em>.</p>
<p>This is a very good thing. What is the point of building an entirely new internet if we're not going to impose our values upon it? What an absolute waste of effort.</p>
<h1>A Nostr Manifesto</h1>
<p>This is not to say that any one developer has the right to imposing his own vision on the protocol because of his own personal values and reasons for contributing, which is what I think Vitor was being cautious about. But there are lines I think we can draw as a community that can't really be crossed without excluding yourself from what I might call the "nostr group ethic".</p>
<p>So what are those boundaries? What <em>is</em> a nostrich? Here are some values I've observed to be generally shared among nostr developers and users. Not everyone would full agree with these (including myself), but I think they're a fair characterization of the community.</p>
<ol>
<li>Free speech absolutism. No central entity should be able to globally censor any content. This comes with the trade-off of objectively evil content continuing to exist. This trade-off is acceptable, both because of the value of free speech, but also because evil will continue to exist regardless of attempts to suppress it.</li>
<li>Empower individuals over institutions. No centralized entity can be trusted to safeguard the interests of the individual. Institutional incentives are asymmetric and easily corrupted. Better to have many subjective views of the world, than a single, centrally managed view of the world.</li>
<li>Advertising-based business models should be viewed with great skepticism and caution. Advertising is a system of incentives that is central to the institutional corruption we see around us. Broadly, this includes paid ads, monetization of engagement, public/private partnerships, and "crypto".</li>
</ol>
<p>There are others that are shared by many within nostr, although not as widely agreed upon. Two I can think of are:</p>
<ul>
<li>Economic activity should be voluntary. Software and content should be free, and creators should be amply rewarded via zaps or other value-for-value models.</li>
<li>Social media should support real life community and relationships, not detract from them. We should all take time to touch grass.</li>
</ul>
<p>I'm personally skeptical of the first of these, and strongly in support of the second. Much of my energy as a nostr developer has gone into attempting to subvert and reform traditional patterns of social media to not only support, but also resemble relationships that exist in the analog world God made, and placed us in.</p>
<p>This particular principle is the one at play in the conversation I linked to at the top of this post. My comments weren't an accusation that anyone was acting "unethically" in a universal sense, only that the proposed feature was incompatible with my vision for what nostr should be.</p>
<p>But of course, my vision is not shared by everyone, and the principle of "support real life" is clearly subservient to core ethic <a href='/tag/2/'>#2</a>, which admits the value of a diverse set of opinions about the world. I have no right (or ability) to invalidate anyone else's core principles. But by the same token I'm free to express my own, and attempt to convince other people to share them. This is the basic value proposition of freedom of speech itself.</p>
<h1>Ethical Cohesion</h1>
<p>I would go further, and say that not only is it permissible to talk about ethical reasons for building one thing or another on nostr, it's essential. By having these conversations we fuse our individual ethics into a shared ethic. By calibrating our moral compasses to point in (roughly) the same direction, we also decrease the friction involved in getting something done.</p>
<p>I think this was a significant part of the idea behind Sovereign Engineering —&nbsp;get a bunch of people in a room together sharing meals and going on hikes, and the work will accelerate! This is also the way a church works. By meeting weekly together we strengthen our shared identity and build one another up through our activity. In fact, this is the basic definition of a community&nbsp;as Scott Mann puts it. In his words, a community can provide:</p>
<blockquote>
<p>a series of connections, and a knowledge base, and a skillset that we can't fulfill as an individual, while having a social relationship with people in such a way that we can call on them for help.</p>
</blockquote>
<p>So maybe, as I've said before, the real protocol is the friends we made along the way. Disagreement and discussion is a healthy thing for a community to have, and we should never stop asking "why?"</p>
]]></itunes:summary>
      <itunes:image href="https://image.nostr.build/2be6753dc4db312a3135579ee1de96bfa858f29921700213fe0a4710ba608deb.jpg"/>
      </item>
      
      <item>
      <title><![CDATA[Square peg, round hole]]></title>
      <description><![CDATA[A brief ramble on where the protocol is going, and how we might use it more effectively.]]></description>
             <itunes:subtitle><![CDATA[A brief ramble on where the protocol is going, and how we might use it more effectively.]]></itunes:subtitle>
      <pubDate>Wed, 08 May 2024 16:52:44 GMT</pubDate>
      <link>https://hodlbod.npub.pro/post/1715011564140/</link>
      <comments>https://hodlbod.npub.pro/post/1715011564140/</comments>
      <guid isPermaLink="false">naddr1qqxnzde3x5crzvf4xc6rzdpsqgsf03c2gsmx5ef4c9zmxvlew04gdh7u94afnknp33qvv3c94kvwxgsrqsqqqa28628gnd</guid>
      <category>nostr</category>
      
        <media:content url="https://image.nostr.build/df75d22cce68a797b6fd3351ec7eb61cba4cbf53d253b8dfc651bfc36bcb5d21.jpg" medium="image"/>
        <enclosure 
          url="https://image.nostr.build/df75d22cce68a797b6fd3351ec7eb61cba4cbf53d253b8dfc651bfc36bcb5d21.jpg" length="0" 
          type="image/jpeg" 
        />
      <noteId>naddr1qqxnzde3x5crzvf4xc6rzdpsqgsf03c2gsmx5ef4c9zmxvlew04gdh7u94afnknp33qvv3c94kvwxgsrqsqqqa28628gnd</noteId>
      <npub>npub1jlrs53pkdfjnts29kveljul2sm0actt6n8dxrrzqcersttvcuv3qdjynqn</npub>
      <dc:creator><![CDATA[ hodlbod]]></dc:creator>
      <content:encoded><![CDATA[<p>I think there's been an inflection point recently in NIPs that are being proposed. Some examples: </p>
<ul>
<li>Products with pubkeys: <np-embed url="https://github.com/nostr-protocol/nips/pull/1225"><a href="https://github.com/nostr-protocol/nips/pull/1225">https://github.com/nostr-protocol/nips/pull/1225</a></np-embed></li>
<li>Shared-ownership events: <np-embed url="https://github.com/nostr-protocol/nips/pull/1192"><a href="https://github.com/nostr-protocol/nips/pull/1192">https://github.com/nostr-protocol/nips/pull/1192</a></np-embed> and <np-embed url="https://github.com/nostr-protocol/nips/pull/1015"><a href="https://github.com/nostr-protocol/nips/pull/1015">https://github.com/nostr-protocol/nips/pull/1015</a></np-embed></li>
<li>Spreadsheets: <np-embed url="https://github.com/nostr-protocol/nips/pull/1189"><a href="https://github.com/nostr-protocol/nips/pull/1189">https://github.com/nostr-protocol/nips/pull/1189</a></np-embed></li>
<li>Relational databases: <np-embed url="https://github.com/nostr-protocol/nips/pull/1168"><a href="https://github.com/nostr-protocol/nips/pull/1168">https://github.com/nostr-protocol/nips/pull/1168</a></np-embed></li>
<li>Relay-specific notes: <np-embed url="https://github.com/nostr-protocol/nips/pull/1146"><a href="https://github.com/nostr-protocol/nips/pull/1146">https://github.com/nostr-protocol/nips/pull/1146</a></np-embed></li>
<li>Editable notes: <np-embed url="https://github.com/nostr-protocol/nips/pull/1090"><a href="https://github.com/nostr-protocol/nips/pull/1090">https://github.com/nostr-protocol/nips/pull/1090</a></np-embed></li>
<li>Restricted events: <np-embed url="https://github.com/nostr-protocol/nips/pull/1083"><a href="https://github.com/nostr-protocol/nips/pull/1083">https://github.com/nostr-protocol/nips/pull/1083</a></np-embed></li>
<li>Relay-based access control: <np-embed url="https://github.com/nostr-protocol/nips/pull/1030"><a href="https://github.com/nostr-protocol/nips/pull/1030">https://github.com/nostr-protocol/nips/pull/1030</a></np-embed></li>
<li>Protected events: <np-embed url="https://github.com/nostr-protocol/nips/pull/1029"><a href="https://github.com/nostr-protocol/nips/pull/1029">https://github.com/nostr-protocol/nips/pull/1029</a></np-embed></li>
<li>Closed groups: <np-embed url="https://github.com/nostr-protocol/nips/pull/875"><a href="https://github.com/nostr-protocol/nips/pull/875">https://github.com/nostr-protocol/nips/pull/875</a></np-embed></li>
</ul>
<p>Some of these I like, some I don't. But most of them go beyond adding new features to nostr (for example audio, video, speedruns, resumes, etc), and begin to change how nostr actually works.</p>
<p>Nostr can be an everything app, but I think that means something very specific. Nostr can represent data types from pretty much any domain, but it can't actually support all the semantics needed to build any arbitrary system.</p>
<p>I would suggest conservatism in what we build on nostr, but of course anyone can build whatever they want. But I do think it's possible to identify things that nostr is good at, and things it's bad at, and play to nostr's strengths.</p>
<p>Nostr's strengths:</p>
<ul>
<li>Being able to model any data type orthogonally to the rest</li>
<li>Single-owner, self-authenticating, atomic data types</li>
<li>Potential for robust content dispersal and retrieval if we can flesh out NIP 65 etc.</li>
</ul>
<p>Nostr's weaknesses:</p>
<ul>
<li>Mutable state, non-atomic state</li>
<li>Shared ownership, key delegation/rotation</li>
<li>Privacy — metadata will always leak, lack of consistency makes key rotation harder</li>
<li>Consistency — not everyone has the same view of the world</li>
<li>Transactionality — nostr isn't good for updating multiple pieces of data in lockstep</li>
</ul>
<p>It happens that the original use case of nostr — public broadcast social media — benefits greatly from nostr's strengths, and isn't bothered by any of nostr's weaknesses. Blob storage like what blossom is building also works well in this paradigm. A lot of the use cases @PABLOF7z​ has identified work beautifully well because of the single-owner public-read nature of nostr, which makes forks easy to model.</p>
<p>But things like access control, relational data, collaborative document creation, heavier datasets, or anything that requires a solution to the double-spend problem become very awkward (or impossible) to model on pure nostr. A simple example of this is lists. Not only is it common for a single user to mess up his follow lists because of a lack of consistency between clients or devices, but commonly requested features like shared ownership lists immediately result in a huge increase of complexity, either on the key management side or on the data structure side. Both of these problems are difficult to solve on nostr due to lack of consistency —&nbsp;keys can't always be reliably or safely shared, and linked data structures spanning multiple events by different authors can be hard to assemble reliably.</p>
<p>I think the danger here is that if we as a developer community fail to realize the limitations of nostr and try to adapt the protocol to fit every possible use case, on an ad-hoc basis, we're going to end up with a tragedy of the commons, where no developer can comprehend what must be done to get his work done, and all kinds of weird artifacts appear for end users that no one can explain.</p>
<p>Here are some suggestions I have for preventing this from happening. I realize no one is going to follow them. But maybe they can be helpful for avoidance of wasted time.</p>
<ul>
<li>Don't overload event kinds. Many people (including myself) have tried to extend kind 0 with attributes for forms, products, and groups, but that leads to madness. Instead, create a new metadata event signifying a different kind of agent.</li>
<li>Don't model things as replaceable events if you can avoid it. This creates the problem of shared mutable state, which nostr doesn't have a good story for resolving. They also have a hard limit on how big they can be.</li>
<li>Use different keys for different things. For domains where some kind of access control needs to be implemented, not tying everything to your main pubkey makes it possible to create and burn keys as needed. Incidentally, this can help users maintain better privacy. An example of this is private groups, which have a dedicated key separate from the group creator's own key.</li>
<li>Event ownership should always be (is) single-key. If you need shared ownership, figure out a way to share keys. More work needs to go into key invalidation and rotation for this to really work.</li>
<li>Explore the fork model — this is "my" version of the same thing, and coexists with rather than supersedes the original. This has potential not just for groups or wiki entries.</li>
<li>Distinguish between different ways to use relays. Relays may be used as indexers (holding specific event types or supporting different features like search/count), repositories (holding many diverse events, to be used with filters), or curated feeds (to be used without filters, or with only a few filters).</li>
</ul>
<p>These are just suggestions, and many of them may be wrong. Nostr development is hard, and getting harder. Keep it simple.</p>
]]></content:encoded>
      <itunes:author><![CDATA[ hodlbod]]></itunes:author>
      <itunes:summary><![CDATA[<p>I think there's been an inflection point recently in NIPs that are being proposed. Some examples: </p>
<ul>
<li>Products with pubkeys: <np-embed url="https://github.com/nostr-protocol/nips/pull/1225"><a href="https://github.com/nostr-protocol/nips/pull/1225">https://github.com/nostr-protocol/nips/pull/1225</a></np-embed></li>
<li>Shared-ownership events: <np-embed url="https://github.com/nostr-protocol/nips/pull/1192"><a href="https://github.com/nostr-protocol/nips/pull/1192">https://github.com/nostr-protocol/nips/pull/1192</a></np-embed> and <np-embed url="https://github.com/nostr-protocol/nips/pull/1015"><a href="https://github.com/nostr-protocol/nips/pull/1015">https://github.com/nostr-protocol/nips/pull/1015</a></np-embed></li>
<li>Spreadsheets: <np-embed url="https://github.com/nostr-protocol/nips/pull/1189"><a href="https://github.com/nostr-protocol/nips/pull/1189">https://github.com/nostr-protocol/nips/pull/1189</a></np-embed></li>
<li>Relational databases: <np-embed url="https://github.com/nostr-protocol/nips/pull/1168"><a href="https://github.com/nostr-protocol/nips/pull/1168">https://github.com/nostr-protocol/nips/pull/1168</a></np-embed></li>
<li>Relay-specific notes: <np-embed url="https://github.com/nostr-protocol/nips/pull/1146"><a href="https://github.com/nostr-protocol/nips/pull/1146">https://github.com/nostr-protocol/nips/pull/1146</a></np-embed></li>
<li>Editable notes: <np-embed url="https://github.com/nostr-protocol/nips/pull/1090"><a href="https://github.com/nostr-protocol/nips/pull/1090">https://github.com/nostr-protocol/nips/pull/1090</a></np-embed></li>
<li>Restricted events: <np-embed url="https://github.com/nostr-protocol/nips/pull/1083"><a href="https://github.com/nostr-protocol/nips/pull/1083">https://github.com/nostr-protocol/nips/pull/1083</a></np-embed></li>
<li>Relay-based access control: <np-embed url="https://github.com/nostr-protocol/nips/pull/1030"><a href="https://github.com/nostr-protocol/nips/pull/1030">https://github.com/nostr-protocol/nips/pull/1030</a></np-embed></li>
<li>Protected events: <np-embed url="https://github.com/nostr-protocol/nips/pull/1029"><a href="https://github.com/nostr-protocol/nips/pull/1029">https://github.com/nostr-protocol/nips/pull/1029</a></np-embed></li>
<li>Closed groups: <np-embed url="https://github.com/nostr-protocol/nips/pull/875"><a href="https://github.com/nostr-protocol/nips/pull/875">https://github.com/nostr-protocol/nips/pull/875</a></np-embed></li>
</ul>
<p>Some of these I like, some I don't. But most of them go beyond adding new features to nostr (for example audio, video, speedruns, resumes, etc), and begin to change how nostr actually works.</p>
<p>Nostr can be an everything app, but I think that means something very specific. Nostr can represent data types from pretty much any domain, but it can't actually support all the semantics needed to build any arbitrary system.</p>
<p>I would suggest conservatism in what we build on nostr, but of course anyone can build whatever they want. But I do think it's possible to identify things that nostr is good at, and things it's bad at, and play to nostr's strengths.</p>
<p>Nostr's strengths:</p>
<ul>
<li>Being able to model any data type orthogonally to the rest</li>
<li>Single-owner, self-authenticating, atomic data types</li>
<li>Potential for robust content dispersal and retrieval if we can flesh out NIP 65 etc.</li>
</ul>
<p>Nostr's weaknesses:</p>
<ul>
<li>Mutable state, non-atomic state</li>
<li>Shared ownership, key delegation/rotation</li>
<li>Privacy — metadata will always leak, lack of consistency makes key rotation harder</li>
<li>Consistency — not everyone has the same view of the world</li>
<li>Transactionality — nostr isn't good for updating multiple pieces of data in lockstep</li>
</ul>
<p>It happens that the original use case of nostr — public broadcast social media — benefits greatly from nostr's strengths, and isn't bothered by any of nostr's weaknesses. Blob storage like what blossom is building also works well in this paradigm. A lot of the use cases @PABLOF7z​ has identified work beautifully well because of the single-owner public-read nature of nostr, which makes forks easy to model.</p>
<p>But things like access control, relational data, collaborative document creation, heavier datasets, or anything that requires a solution to the double-spend problem become very awkward (or impossible) to model on pure nostr. A simple example of this is lists. Not only is it common for a single user to mess up his follow lists because of a lack of consistency between clients or devices, but commonly requested features like shared ownership lists immediately result in a huge increase of complexity, either on the key management side or on the data structure side. Both of these problems are difficult to solve on nostr due to lack of consistency —&nbsp;keys can't always be reliably or safely shared, and linked data structures spanning multiple events by different authors can be hard to assemble reliably.</p>
<p>I think the danger here is that if we as a developer community fail to realize the limitations of nostr and try to adapt the protocol to fit every possible use case, on an ad-hoc basis, we're going to end up with a tragedy of the commons, where no developer can comprehend what must be done to get his work done, and all kinds of weird artifacts appear for end users that no one can explain.</p>
<p>Here are some suggestions I have for preventing this from happening. I realize no one is going to follow them. But maybe they can be helpful for avoidance of wasted time.</p>
<ul>
<li>Don't overload event kinds. Many people (including myself) have tried to extend kind 0 with attributes for forms, products, and groups, but that leads to madness. Instead, create a new metadata event signifying a different kind of agent.</li>
<li>Don't model things as replaceable events if you can avoid it. This creates the problem of shared mutable state, which nostr doesn't have a good story for resolving. They also have a hard limit on how big they can be.</li>
<li>Use different keys for different things. For domains where some kind of access control needs to be implemented, not tying everything to your main pubkey makes it possible to create and burn keys as needed. Incidentally, this can help users maintain better privacy. An example of this is private groups, which have a dedicated key separate from the group creator's own key.</li>
<li>Event ownership should always be (is) single-key. If you need shared ownership, figure out a way to share keys. More work needs to go into key invalidation and rotation for this to really work.</li>
<li>Explore the fork model — this is "my" version of the same thing, and coexists with rather than supersedes the original. This has potential not just for groups or wiki entries.</li>
<li>Distinguish between different ways to use relays. Relays may be used as indexers (holding specific event types or supporting different features like search/count), repositories (holding many diverse events, to be used with filters), or curated feeds (to be used without filters, or with only a few filters).</li>
</ul>
<p>These are just suggestions, and many of them may be wrong. Nostr development is hard, and getting harder. Keep it simple.</p>
]]></itunes:summary>
      <itunes:image href="https://image.nostr.build/df75d22cce68a797b6fd3351ec7eb61cba4cbf53d253b8dfc651bfc36bcb5d21.jpg"/>
      </item>
      
      <item>
      <title><![CDATA[A Proposal for Private Groups]]></title>
      <description><![CDATA[An elegant approach to private groups - access control based on a shared, hosted private key, rather than cooperative relays.]]></description>
             <itunes:subtitle><![CDATA[An elegant approach to private groups - access control based on a shared, hosted private key, rather than cooperative relays.]]></itunes:subtitle>
      <pubDate>Thu, 01 Jun 2023 13:46:54 GMT</pubDate>
      <link>https://hodlbod.npub.pro/post/a-proposal-for-private-groups/</link>
      <comments>https://hodlbod.npub.pro/post/a-proposal-for-private-groups/</comments>
      <guid isPermaLink="false">naddr1qqwkzttswfhhqmmnv9kz6en0wgkhqunfweshgefdvaex7atswvpzp978pfzrv6n9xhq5tvenl9e74pklmskh4xw6vxxyp3j8qkke3cezqvzqqqr4guuvl8xr</guid>
      <category>groups</category>
      
        <media:content url="https://coracle.us-southeast-1.linodeobjects.com/juniperphoton-SED5Y1u1ws4-unsplash.jpeg" medium="image"/>
        <enclosure 
          url="https://coracle.us-southeast-1.linodeobjects.com/juniperphoton-SED5Y1u1ws4-unsplash.jpeg" length="0" 
          type="image/jpeg" 
        />
      <noteId>naddr1qqwkzttswfhhqmmnv9kz6en0wgkhqunfweshgefdvaex7atswvpzp978pfzrv6n9xhq5tvenl9e74pklmskh4xw6vxxyp3j8qkke3cezqvzqqqr4guuvl8xr</noteId>
      <npub>npub1jlrs53pkdfjnts29kveljul2sm0actt6n8dxrrzqcersttvcuv3qdjynqn</npub>
      <dc:creator><![CDATA[ hodlbod]]></dc:creator>
      <content:encoded><![CDATA[<p>I think I cracked the code on private groups.</p>
<p>Instead of relying on relays to implement access control as in <a href="https://github.com/nostr-protocol/nips/pull/566">this PR</a>, we could combine the <a href="https://github.com/nostr-protocol/nips/pull/468">Gift Wrap proposal</a> with @PABLOF7z​'s nsec bunker to create private groups with easy administration and moderation!</p>
<p>Gift wrap fixes DM metadata leakage by using a temporary private key to send a DM to a recipient. The recipient decrypts the wrapper to find a regular nostr event inside. This could be another kind 4 as in the proposal, or anything else. Which means you can send kind 1's or anything else in a wrapped event.</p>
<p>Now suppose you had a pubkey that you wanted to represent a group instead of a person. Put its nsec in a (modified) nsec bunker, and now you can allow other people than yourself to request signatures. A shared private key! Anyone who has access to this nsec bunker could also de-crypt any gift wrapped note sent to it. Relay-free read access control!</p>
<p>There are lots of ways you could manage this access list, but I think a compelling one would be to create a NIP 51 list (public or private!) of group members and set up the nsec bunker to authenticate using that list. Boom, dynamic member lists!</p>
<p>You could also create a NIP 51 list for admins, and pre-configure which event kinds each list is allowed to post using the group's nsec. So maybe members could only publish wrapped kind-1's, but admins could publish wrapped kind-0's (you can now zap a group!), kind 9's for moderation, updated member and moderator lists, normal kind 1's for public information about the group, etc.</p>
<p>Gift wrap would support:</p>
<ul>
<li>Leak-free DMs</li>
<li>Fully private groups</li>
<li>Public-read groups (nsec bunker would allow for admin, but everyone would publish regular instead of wrapped events).</li>
<li>Organizations and other shared accounts, with role-based authorization (list/kind mappings)!</li>
</ul>
<p>Of course, no clients currently support this kind of thing, but support would not be hard to add, and it creates an entirely new set of affordances with two very simple applications of the core protocol.</p>
<p>There are a few drawbacks I can think of, of course. Gift wrap makes it harder to search notes by tag. You could:</p>
<ul>
<li>Leave all tags off (other than for DM recipient as in the proposal)</li>
<li>Selectively keep tags that aren't revealing of identity</li>
<li>Encrypt tag values. When a client wants to query a tag, it must encrypt the value using the same pubkey and include that in the filter. This, I think, is ok for the group use case above.</li>
</ul>
<p>There are also a number of proposals in the works to fix NIP 04 DMs which are apparently broken from a cryptographic standpoint, so implementing this should probably wait until that stuff is sorted out. But it should be possible however that ends up materializing.</p>
<p>So am I nuts? Or is this a galaxy brain solution?</p>
]]></content:encoded>
      <itunes:author><![CDATA[ hodlbod]]></itunes:author>
      <itunes:summary><![CDATA[<p>I think I cracked the code on private groups.</p>
<p>Instead of relying on relays to implement access control as in <a href="https://github.com/nostr-protocol/nips/pull/566">this PR</a>, we could combine the <a href="https://github.com/nostr-protocol/nips/pull/468">Gift Wrap proposal</a> with @PABLOF7z​'s nsec bunker to create private groups with easy administration and moderation!</p>
<p>Gift wrap fixes DM metadata leakage by using a temporary private key to send a DM to a recipient. The recipient decrypts the wrapper to find a regular nostr event inside. This could be another kind 4 as in the proposal, or anything else. Which means you can send kind 1's or anything else in a wrapped event.</p>
<p>Now suppose you had a pubkey that you wanted to represent a group instead of a person. Put its nsec in a (modified) nsec bunker, and now you can allow other people than yourself to request signatures. A shared private key! Anyone who has access to this nsec bunker could also de-crypt any gift wrapped note sent to it. Relay-free read access control!</p>
<p>There are lots of ways you could manage this access list, but I think a compelling one would be to create a NIP 51 list (public or private!) of group members and set up the nsec bunker to authenticate using that list. Boom, dynamic member lists!</p>
<p>You could also create a NIP 51 list for admins, and pre-configure which event kinds each list is allowed to post using the group's nsec. So maybe members could only publish wrapped kind-1's, but admins could publish wrapped kind-0's (you can now zap a group!), kind 9's for moderation, updated member and moderator lists, normal kind 1's for public information about the group, etc.</p>
<p>Gift wrap would support:</p>
<ul>
<li>Leak-free DMs</li>
<li>Fully private groups</li>
<li>Public-read groups (nsec bunker would allow for admin, but everyone would publish regular instead of wrapped events).</li>
<li>Organizations and other shared accounts, with role-based authorization (list/kind mappings)!</li>
</ul>
<p>Of course, no clients currently support this kind of thing, but support would not be hard to add, and it creates an entirely new set of affordances with two very simple applications of the core protocol.</p>
<p>There are a few drawbacks I can think of, of course. Gift wrap makes it harder to search notes by tag. You could:</p>
<ul>
<li>Leave all tags off (other than for DM recipient as in the proposal)</li>
<li>Selectively keep tags that aren't revealing of identity</li>
<li>Encrypt tag values. When a client wants to query a tag, it must encrypt the value using the same pubkey and include that in the filter. This, I think, is ok for the group use case above.</li>
</ul>
<p>There are also a number of proposals in the works to fix NIP 04 DMs which are apparently broken from a cryptographic standpoint, so implementing this should probably wait until that stuff is sorted out. But it should be possible however that ends up materializing.</p>
<p>So am I nuts? Or is this a galaxy brain solution?</p>
]]></itunes:summary>
      <itunes:image href="https://coracle.us-southeast-1.linodeobjects.com/juniperphoton-SED5Y1u1ws4-unsplash.jpeg"/>
      </item>
      
      <item>
      <title><![CDATA[A Vision for Nostr]]></title>
      <description><![CDATA[What Mastodon got wrong, and what I hope Nostr gets right]]></description>
             <itunes:subtitle><![CDATA[What Mastodon got wrong, and what I hope Nostr gets right]]></itunes:subtitle>
      <pubDate>Wed, 29 Mar 2023 19:55:14 GMT</pubDate>
      <link>https://hodlbod.npub.pro/post/a-vision-for-nostr/</link>
      <comments>https://hodlbod.npub.pro/post/a-vision-for-nostr/</comments>
      <guid isPermaLink="false">naddr1qqfxzttkd9ekjmmw94nx7u3ddehhxarjqgsf03c2gsmx5ef4c9zmxvlew04gdh7u94afnknp33qvv3c94kvwxgsrqsqqqa2807nk73</guid>
      <category>nostr</category>
      
        <media:content url="https://coracle.us-southeast-1.linodeobjects.com/juniperphoton-_lwLalY6Yzg-unsplash.jpeg" medium="image"/>
        <enclosure 
          url="https://coracle.us-southeast-1.linodeobjects.com/juniperphoton-_lwLalY6Yzg-unsplash.jpeg" length="0" 
          type="image/jpeg" 
        />
      <noteId>naddr1qqfxzttkd9ekjmmw94nx7u3ddehhxarjqgsf03c2gsmx5ef4c9zmxvlew04gdh7u94afnknp33qvv3c94kvwxgsrqsqqqa2807nk73</noteId>
      <npub>npub1jlrs53pkdfjnts29kveljul2sm0actt6n8dxrrzqcersttvcuv3qdjynqn</npub>
      <dc:creator><![CDATA[ hodlbod]]></dc:creator>
      <content:encoded><![CDATA[<p>"What is Nostr?" is a hard question to answer. But an even more difficult one is "what should Nostr be?" Set aside the fact that "other stuff" is making up an ever-growing share of Nostr applications, even the social media use case on its own is a fractal of a problem.</p>
<p>What's encouraging though, is that despite the complexity of "social media", there is a surprising level of consensus on what needs to be done - within the Nostr developer community, differences are characterized more by emphasis than by direction.</p>
<h1>Staying on mission</h1>
<p>Instead of focusing on "problems to be solved" within the current system (e.g. content monetization or data harvesting), people who "get" nostr have made its core principles their own. Because these principles radically differ from the way things are done in centralized systems, they spawn a complex system of new affordances and limitations.</p>
<p>If I had to sum up what the core principle of Nostr is, I would say "individual sovereignty". Nostr is a social experiment that asks people to take responsibility for what they say (and sell, host, publish, promote). This topic has been explored ad nauseum by <a href="https://dergigi.com/2019/08/22/the-rise-of-the-sovereign-individual/">better writers than I</a> using Bitcoin as a vehicle, so I'll avoid re-treading the same ground if I can, except to point out that the two key design decisions of the Nostr protocol, self-custody of keys and hosting spread across multiple relays, simultaneously entrust control to users and revoke certain entitlements users are accustomed to.</p>
<p>It's well- (maybe even over-) understood what the risks and benefits are of holding your own keys. And being able to either select or host your own relays, each with different purposes and characteristics, gives individuals a level of control over his own publishing platform precedented only by the World Wide Web itself.</p>
<h1>Lies they tell</h1>
<p>But there are a lot of things users lose when moving away from a centralized platform. The ability to edit, delete, block, and promote content are not what I'm talking about - the guarantees for being able to do these things on Nostr are weaker, but as long as someone can take a screenshot of your Tweet, or block Google's ads, or log in with a different account, the affordances provided by centralized platforms are conveniences at best, and illusory at worst - that is, unless we go full digital panopticon, with universal biometric authentication and DRM for our brains.</p>
<p>What is more interesting to me is how centralized social media platforms lie about what they essentially are. Twitter's motto is "what’s happening", and their <a href="https://about.twitter.com/en">about page</a> features a tweet encouraging others to "Speak the truth, even if your voice shakes." And yet over the last several years they have censored real news, promoted propaganda, and shadow banned those whose "voice shakes". Musk's desperate claims that "we'll stop, I promise" don't negate the fact that Twitter retains control over users' speech in a way that is inherently in conflict with their stated mission.</p>
<p>This is true even of non-political speech, because it is in Twitter's interest to promote content that drives engagement, because engagement is what in turn drives advertising profits. This undermines their claim of user enfranchisement - they exercise partiality in choosing whose voice gets a megaphone.</p>
<p>Users of Nostr know the feeling of this weight being lifted. Nostr is anything but polished, but that's part of the charm - you know there is no one scanning your content, deciding who sees what and with what "added context". Many users including myself have experienced a 10x or more increase in engagement, despite a much smaller number of people on the platform. This is of course likely due not only to the lack of an algorithm, but also to the lack of celebrities, which tend to absorb attention, leaving little for the rest of us. But for now, Nostr is for the plebs.</p>
<h1>Cutting the Gordian Knot</h1>
<p>And I hope, and have reason, that it will continue to be so. When I spoke to my pastor prior to moving to Austin to work on Coracle full-time, I asked him what problems related to social media he would like to see solved. He said that he would like to see a solution that puts users in control of their algorithm, and allows individuals to broadcast their content to as wide an audience as possible.</p>
<p>There is a contradiction here, and the claim that it can be solved is one of the main lies that centralized platforms like to tell. You are free to broadcast your data as widely as you want, but no one is obligated to read it. Twitter tries to square the circle by artificially reversing this trade-off, resulting in a system where "you can't broadcast your data unless we want to force people to read it." But even they can't give their users control while simultaneously taking it away.</p>
<p>There is a path forward though, and now we finally get to the point of this post. Nostr is so revolutionary because it puts "digital localism" within reach. I had better define my terms here, since "digital localism" is used to describe a lot of dystopian ideas I'm not very excited about. What I mean by the term is something like "social relevance". Contra the egalitarians, there are real differences that exist to set groups of people apart. Things like topical interest, physical geography, professional network, religious belief, and yes, ethnicity and sex.</p>
<h1>What is a community anyway</h1>
<p>The fact that digital "communties" exist is something that to their credit Mastodon recognized, and sought to accommodate. But they missed the fact that humanity is partitioned into a nearly infinite number of overlapping sub-groups based on a nearly infinite number of dimensions. Yes, maybe I should be friends with you because you also like cats, but let's refine this further, do you think cilantro tastes like soap, are you a member of the Church of Satan, are you Italian, have you been reading Hayak lately, do you like watching Hallmark movies, English, do you speak it? Partitioning people into groups based on a single dimension is an exercise in futility, and is the reason Mastodon instances are either ghost towns or home to millions of users.</p>
<p>By allowing users to download/host their own data and join as many and whichever relays they choose based on arbitrary criteria, people are now able to co-locate in digital space, and interact with each instance in a different way. This is why I'm not excited about tools that spray your data to as many relays as possible. This only serves to maintain the illusion that replicating all content across every instance can scale, and it can't.</p>
<p>Instead, relays should differentiate, both in terms of function and membership. In the future (and even now) there will be closed archival relays that scrape the network and provide a backup of user data for a fee; public-read, private-write relays that allow members to participate in an exclusive group with greater reach; private-read, private-write closed community relays; public "town square" relays, paid relays that provide indexes, full-text search, or content recommendations for the wider network (or a relevant subset of it); and relays that provide oracles for data external to nostr. The ability of users to pick and choose which relays to connect to (and to multiplex those connections through yet another proxy/aggregator relay) allows them to define their own low-granularity social graph, refining it further with follows, mutes, and other "algorithmic" tools.</p>
<p>The same is true of client implementations. Many people building social media platforms want to "fix Twitter". But that vision of digital society is amazingly narrow (luckily, Nostr developers don't seem to suffer from the same kind of myopia). <em>Most</em> people I know don't have Twitter accounts, or use them. For them, Twitter is about as relevant to their lives as CNN. Instead, they use private Facebook groups to arrange babysitters for their kids, or Cragislist to buy and sell local goods. They use Google maps to find reviews for nearby businesses, and the church email list to keep up with prayer requests. They subscribe to newsletters their friends publish, and spend their days at work sending memes over Slack. The common theme here is that all these platforms connect "us" with "mine", not with "them". And yes, journalism and topical interest ala Reddit is a part of this, but for normal people, a vanishingly small part. But let's stop squawking about "echo chambers".</p>
<p>And Nostr, <a href="https://blog.coracle.social/what-nostr-is-bad-at.html">despite its limitations</a>, can be applied to every use case enumerated above. In so doing, it will free regular people from the constraining force of opinionated, artificial, centralized communication platforms, and allow them to build a digital social network that complements real life.</p>
<h1>Conclusion</h1>
<p>The driving force, for me, is not to erase our differences and create an egalitarian utopia, or stick it to big tech, or to make money, but to see the people I love, who belong to me, and to whom I belong, flourish by being connected with the people who belong to them, and to whom they belong. The resulting network will be characterized by high trust and high cohesion, laying a solid foundation for content and ideas to efficiently propagate across the distributed social graph, similar to how the lightning network routes transactions. But the key to making this work is to rise to the occasion, and take back our digital sovereignty by making it as easy for the average person to navigate the digital social landscape as they do in real life.</p>
]]></content:encoded>
      <itunes:author><![CDATA[ hodlbod]]></itunes:author>
      <itunes:summary><![CDATA[<p>"What is Nostr?" is a hard question to answer. But an even more difficult one is "what should Nostr be?" Set aside the fact that "other stuff" is making up an ever-growing share of Nostr applications, even the social media use case on its own is a fractal of a problem.</p>
<p>What's encouraging though, is that despite the complexity of "social media", there is a surprising level of consensus on what needs to be done - within the Nostr developer community, differences are characterized more by emphasis than by direction.</p>
<h1>Staying on mission</h1>
<p>Instead of focusing on "problems to be solved" within the current system (e.g. content monetization or data harvesting), people who "get" nostr have made its core principles their own. Because these principles radically differ from the way things are done in centralized systems, they spawn a complex system of new affordances and limitations.</p>
<p>If I had to sum up what the core principle of Nostr is, I would say "individual sovereignty". Nostr is a social experiment that asks people to take responsibility for what they say (and sell, host, publish, promote). This topic has been explored ad nauseum by <a href="https://dergigi.com/2019/08/22/the-rise-of-the-sovereign-individual/">better writers than I</a> using Bitcoin as a vehicle, so I'll avoid re-treading the same ground if I can, except to point out that the two key design decisions of the Nostr protocol, self-custody of keys and hosting spread across multiple relays, simultaneously entrust control to users and revoke certain entitlements users are accustomed to.</p>
<p>It's well- (maybe even over-) understood what the risks and benefits are of holding your own keys. And being able to either select or host your own relays, each with different purposes and characteristics, gives individuals a level of control over his own publishing platform precedented only by the World Wide Web itself.</p>
<h1>Lies they tell</h1>
<p>But there are a lot of things users lose when moving away from a centralized platform. The ability to edit, delete, block, and promote content are not what I'm talking about - the guarantees for being able to do these things on Nostr are weaker, but as long as someone can take a screenshot of your Tweet, or block Google's ads, or log in with a different account, the affordances provided by centralized platforms are conveniences at best, and illusory at worst - that is, unless we go full digital panopticon, with universal biometric authentication and DRM for our brains.</p>
<p>What is more interesting to me is how centralized social media platforms lie about what they essentially are. Twitter's motto is "what’s happening", and their <a href="https://about.twitter.com/en">about page</a> features a tweet encouraging others to "Speak the truth, even if your voice shakes." And yet over the last several years they have censored real news, promoted propaganda, and shadow banned those whose "voice shakes". Musk's desperate claims that "we'll stop, I promise" don't negate the fact that Twitter retains control over users' speech in a way that is inherently in conflict with their stated mission.</p>
<p>This is true even of non-political speech, because it is in Twitter's interest to promote content that drives engagement, because engagement is what in turn drives advertising profits. This undermines their claim of user enfranchisement - they exercise partiality in choosing whose voice gets a megaphone.</p>
<p>Users of Nostr know the feeling of this weight being lifted. Nostr is anything but polished, but that's part of the charm - you know there is no one scanning your content, deciding who sees what and with what "added context". Many users including myself have experienced a 10x or more increase in engagement, despite a much smaller number of people on the platform. This is of course likely due not only to the lack of an algorithm, but also to the lack of celebrities, which tend to absorb attention, leaving little for the rest of us. But for now, Nostr is for the plebs.</p>
<h1>Cutting the Gordian Knot</h1>
<p>And I hope, and have reason, that it will continue to be so. When I spoke to my pastor prior to moving to Austin to work on Coracle full-time, I asked him what problems related to social media he would like to see solved. He said that he would like to see a solution that puts users in control of their algorithm, and allows individuals to broadcast their content to as wide an audience as possible.</p>
<p>There is a contradiction here, and the claim that it can be solved is one of the main lies that centralized platforms like to tell. You are free to broadcast your data as widely as you want, but no one is obligated to read it. Twitter tries to square the circle by artificially reversing this trade-off, resulting in a system where "you can't broadcast your data unless we want to force people to read it." But even they can't give their users control while simultaneously taking it away.</p>
<p>There is a path forward though, and now we finally get to the point of this post. Nostr is so revolutionary because it puts "digital localism" within reach. I had better define my terms here, since "digital localism" is used to describe a lot of dystopian ideas I'm not very excited about. What I mean by the term is something like "social relevance". Contra the egalitarians, there are real differences that exist to set groups of people apart. Things like topical interest, physical geography, professional network, religious belief, and yes, ethnicity and sex.</p>
<h1>What is a community anyway</h1>
<p>The fact that digital "communties" exist is something that to their credit Mastodon recognized, and sought to accommodate. But they missed the fact that humanity is partitioned into a nearly infinite number of overlapping sub-groups based on a nearly infinite number of dimensions. Yes, maybe I should be friends with you because you also like cats, but let's refine this further, do you think cilantro tastes like soap, are you a member of the Church of Satan, are you Italian, have you been reading Hayak lately, do you like watching Hallmark movies, English, do you speak it? Partitioning people into groups based on a single dimension is an exercise in futility, and is the reason Mastodon instances are either ghost towns or home to millions of users.</p>
<p>By allowing users to download/host their own data and join as many and whichever relays they choose based on arbitrary criteria, people are now able to co-locate in digital space, and interact with each instance in a different way. This is why I'm not excited about tools that spray your data to as many relays as possible. This only serves to maintain the illusion that replicating all content across every instance can scale, and it can't.</p>
<p>Instead, relays should differentiate, both in terms of function and membership. In the future (and even now) there will be closed archival relays that scrape the network and provide a backup of user data for a fee; public-read, private-write relays that allow members to participate in an exclusive group with greater reach; private-read, private-write closed community relays; public "town square" relays, paid relays that provide indexes, full-text search, or content recommendations for the wider network (or a relevant subset of it); and relays that provide oracles for data external to nostr. The ability of users to pick and choose which relays to connect to (and to multiplex those connections through yet another proxy/aggregator relay) allows them to define their own low-granularity social graph, refining it further with follows, mutes, and other "algorithmic" tools.</p>
<p>The same is true of client implementations. Many people building social media platforms want to "fix Twitter". But that vision of digital society is amazingly narrow (luckily, Nostr developers don't seem to suffer from the same kind of myopia). <em>Most</em> people I know don't have Twitter accounts, or use them. For them, Twitter is about as relevant to their lives as CNN. Instead, they use private Facebook groups to arrange babysitters for their kids, or Cragislist to buy and sell local goods. They use Google maps to find reviews for nearby businesses, and the church email list to keep up with prayer requests. They subscribe to newsletters their friends publish, and spend their days at work sending memes over Slack. The common theme here is that all these platforms connect "us" with "mine", not with "them". And yes, journalism and topical interest ala Reddit is a part of this, but for normal people, a vanishingly small part. But let's stop squawking about "echo chambers".</p>
<p>And Nostr, <a href="https://blog.coracle.social/what-nostr-is-bad-at.html">despite its limitations</a>, can be applied to every use case enumerated above. In so doing, it will free regular people from the constraining force of opinionated, artificial, centralized communication platforms, and allow them to build a digital social network that complements real life.</p>
<h1>Conclusion</h1>
<p>The driving force, for me, is not to erase our differences and create an egalitarian utopia, or stick it to big tech, or to make money, but to see the people I love, who belong to me, and to whom I belong, flourish by being connected with the people who belong to them, and to whom they belong. The resulting network will be characterized by high trust and high cohesion, laying a solid foundation for content and ideas to efficiently propagate across the distributed social graph, similar to how the lightning network routes transactions. But the key to making this work is to rise to the occasion, and take back our digital sovereignty by making it as easy for the average person to navigate the digital social landscape as they do in real life.</p>
]]></itunes:summary>
      <itunes:image href="https://coracle.us-southeast-1.linodeobjects.com/juniperphoton-_lwLalY6Yzg-unsplash.jpeg"/>
      </item>
      
      </channel>
      </rss>
    