Oddbean new post about | logout
 I'll put it back into gossip if people start using it. I took it out because it created a lot of edge cases that were hard to manage. But the git commits can be resurrected.

IMHO the "delegation" tag should be changed to an unused single letter, then relays would all support it (at least for queries, not for deletes) without doing anything. 
 shame that d has been abused to mean "human readable identifier" then... maybe use D? 
 What else is d for? I find d confusing  
 really there just needs to be a clear index of kinds and the indexable single letter parameter meanings, the overlap between semantics isn't otherwise easily clarified 
 @PABLOF7z innit 
 Bad idea to deprecate stuff like this.  Firstly it sends a loud signal to devs that they are building on quicksand.  Second, centralized politics or flexes makes nostr more proprietary.  Thirdly, it could be used, and probably is, a centralized committee cant know, google pulls this stuff all the time.  Fourthly, there's absolutely nothing on the radar that is significantly better.  And there wont be for 1-2 years.    Nostr NIPs were designed to let people try stuff and experiment, it's quite often that things get rebooted in new ways like with ngit.  Delegation is actually a pretty decent spec, and useful as hell in the right environment.  If the politics is just to kill somoene esle's work to rail road them onto something else, it's bad politics. 
 NIP-26 is not deprecated.  It hasn't been edited in 8 months (and that was just to remove authors).

So why did I remove it from gossip?

All I was hearing from EVERY VOICE for months was that it was dead, minds never used it, nobody used it, that nobody wants to use it, and it was entirely a bad idea.  Because I am very reticent to break things, I investigated usage first. I looked on all the big relays for ANY event with a deprecation tag.  None.  Could not find a single use of this NIP.  And AFAIK no other client supports it.  No relays ever seemed to support it.  It was like this for OVER A YEAR before I decided to remove that clearly unused and complicated code that was not simple to maintain.

BUT ALSO I knew I could put it right back as soon as people started to actually use this NIP.  And I will.

Just like Murphy's law would predict, after I removed it, everybody piled on me and complained. Just because of the idea, not because anything broke.

To be clear, I really do wish for a secure offline master key and online per-device subkeys.  And having thought about it a lot, I think the right path is to do something like NIP-26 but with a single-letter tag, or to have a key schedule event where you publish your subkeys and their revocation status.  The problem is that nobody can start using it effectively until everybody has it implemented... until then nobody is going to find and follow your new subkeys.  So it's just as impossible to get there as the ipv4-to-ipv6 transition was. That is sad and unfortunate, but it is reality, and reality must be looked at square in the face.

If wishes were horses, beggars would ride. 
 It’s because it’s non-trivial and is going to take some time to implement and optimize it in relays. I wanted to take a stab at it in nostrdb. It will use a few more lookups for sure, but lmdb is crazy fast so i didn’t think it would be a huge issue.

Our roadmap is planned for a few quarters in advance and delegation is not even on it, people are busy with lots of different issues. The idea that it’s not implemented immediately therefore is bad is crazy to me. 
 Centralized and wrong, on so many levels 
 Two genuine questions

1. Define "EVERY VOICE"
2. Why did you write it in all caps?

Can you not see any centralization here? 
 Where is the center?  Point to the center.  Is it github (which still has NIP-26 in all its glory)?  Is it fiatjaf?  Is it the gossip client, a client that seems to never show up on anybody's lists of nostr clients?  Is it Damus? Where do you think the center is that compels us all to follow and fall in line?

I don't think there is anything that demands anybody do anything any particular way... but nevertheless there is a common desire among all of us to be compatible somehow.  So there will be communication and attempts to align.  And there will be push and pull. And some issues will probably never be agreed among all the developers.

I prefer to think of us all on the surface of a sphere.  There is no center to the surface of a sphere.  But some of us align more closely with some people than we do with others.  (strictly speaking for highly technical people, especially AI people: the sphere has many more than 3 dimensions... perhaps 1536).

Nobody told me to remove this feature from gossip. And I am not taking orders from anybody. I am funded by OpenSats but they accepted my proposal and never gave me any feedback or suggestions or direction at all, other than bitcoin.

There is no secret cabal controlling nostr. There are just a bunch of different people with different opinions who want our shit to basically be compatible.  New people show up all the time and by their work alone they become prominent nostr people. For example, the 2nd biggest contributor to the nips repo is Asai Toshiya, someone I know almost zilch about (I barely recognize the name).  By this person's work he became prominent.  That is all that matters to me.  If you do good work, create good shit, you become valuable and listened to by a higher proportion of other devs, which makes your work become the accepted thing which appears centralized but isn't at all centralized. Getting other devs to accept your idea is a prize that is up for grabs all of the time and requires the work not just of inventing something good, but all the free speech that goes into explaining it and selling it. And if you convince a lot of other devs you get more compabitility. If you don't you look towards someone else's solution that did gain more ground and maybe choose it instead. Win some, lose some.

This is an entirely distributed process.

Don't forget to take your medicine. 
 Leaving the personal attacks to one side, I'll ask you a simple question.

Who controls the protocol? 
 Write a client and send any stream of bytes you wish to any machine you wish.  Now ask yourself the question, who controlled you?  Whatever the answer to that question is, that is the answer to your question. 
 Deprecating optional features centralizes power by reducing choices, increasing control, and enforcing uniformity, making users dependent on the central authority.  
 Apparently you want to control the protocol.  But no, you cannot tell me what to do with my client.  GFY. 
 There are zero logical connections between each step in your thinking.  This is a sign of psychosis or mania.  I'm serious:  take your medicine. 
 You used the term "EVERY VOICE" (all caps yours) meaning you speak for every voice.  You dont.  And in fact there was dissent.  So we can agree to differ, you are never going to get me to believe an untruth. 
 EVERY VOICE means every voice that I was hearing about this topic.  All conversations I had encountered about this topic led me to believe nobody supported it except gossip and nobody planned to support it.  So because all I ever heard was negative, and it was hard to maintain, I took it out.

Every voice most definitely does not mean I speak for every voice.

Please take your medicine.