The rule for acceptance currently is that it needs to be implemented in two clients and a relay (if relevant to relays). There are libraries, so of course many aspects are quickly adopted in the libraries, too.

Currently clients support all different sets of features and do things differently. But I would say that's acceptable. Let them experiment and eventually they will converge doing things more similarly.

Reply to this note

Please Login to reply.

Discussion

I'd think a library implementation as requirement for merge isn't a terrible idea.

E.g. "you want your NIP merged?" "Extend nostr-tools lib and mark your the implementation under `expermental`". A timesaver for developers to just care about the doc strings.

It would be a lesser requirement than "client" but what really should be added as a requirement is to provider an **open source** implementation that is being used in production. By changing an existing client's code to include a feature is one thing. To have it being used in production is a much higher hurdle. Here is where it actually gets validated.