upleb.uk

Public git repos — served from a NIP-34 GRASP relay at git.upleb.uk

summaryrefslogtreecommitdiff
path: root/README.md
diff options
context:
space:
mode:
authorPablo Fernandez <p@f7z.io>2023-11-23 17:52:48 +0200
committerGitHub <noreply@github.com>2023-11-23 17:52:48 +0200
commit60256a62675a165c4d4fd9811a19a9cbf6a9e7fd (patch)
tree5c450154d373caafc37f324dd01e20338308c9d6 /README.md
parent43d50ee42409252a1313928cd437d55fd7bf7bf4 (diff)
parent7822a8b12670312aff104ddc03066425882f739d (diff)
Merge branch 'master' into nip88
Diffstat (limited to 'README.md')
-rw-r--r--README.md167
1 files changed, 96 insertions, 71 deletions
diff --git a/README.md b/README.md
index 86af5de..bf58538 100644
--- a/README.md
+++ b/README.md
@@ -1,18 +1,20 @@
1# NIPs 1# NIPs
2 2
3NIPs stand for **Nostr Implementation Possibilities**. 3NIPs stand for **Nostr Implementation Possibilities**.
4
4They exist to document what may be implemented by [Nostr](https://github.com/nostr-protocol/nostr)-compatible _relay_ and _client_ software. 5They exist to document what may be implemented by [Nostr](https://github.com/nostr-protocol/nostr)-compatible _relay_ and _client_ software.
5 6
6--- 7---
7 8
8- [List](#list) 9- [List](#list)
9- [Event Kinds](#event-kinds) 10- [Event Kinds](#event-kinds)
10 - [Event Kind Ranges](#event-kind-ranges)
11- [Message Types](#message-types) 11- [Message Types](#message-types)
12 - [Client to Relay](#client-to-relay) 12 - [Client to Relay](#client-to-relay)
13 - [Relay to Client](#relay-to-client) 13 - [Relay to Client](#relay-to-client)
14- [Standardized Tags](#standardized-tags) 14- [Standardized Tags](#standardized-tags)
15- [Criteria for acceptance of NIPs](#criteria-for-acceptance-of-nips) 15- [Criteria for acceptance of NIPs](#criteria-for-acceptance-of-nips)
16- [Is this repository a centralizing factor?](#is-this-repository-a-centralizing-factor)
17- [How this repository works](#how-this-repository-works)
16- [License](#license) 18- [License](#license)
17 19
18--- 20---
@@ -66,6 +68,7 @@ They exist to document what may be implemented by [Nostr](https://github.com/nos
66- [NIP-72: Moderated Communities](72.md) 68- [NIP-72: Moderated Communities](72.md)
67- [NIP-75: Zap Goals](75.md) 69- [NIP-75: Zap Goals](75.md)
68- [NIP-78: Application-specific data](78.md) 70- [NIP-78: Application-specific data](78.md)
71- [NIP-84: Highlights](84.md)
69- [NIP-89: Recommended Application Handlers](89.md) 72- [NIP-89: Recommended Application Handlers](89.md)
70- [NIP-90: Data Vending Machines](90.md) 73- [NIP-90: Data Vending Machines](90.md)
71- [NIP-94: File Metadata](94.md) 74- [NIP-94: File Metadata](94.md)
@@ -73,66 +76,83 @@ They exist to document what may be implemented by [Nostr](https://github.com/nos
73- [NIP-99: Classified Listings](99.md) 76- [NIP-99: Classified Listings](99.md)
74 77
75## Event Kinds 78## Event Kinds
79| kind | description | NIP |
80| ------------- | -------------------------- | ----------- |
81| `0` | Metadata | [1](01.md) |
82| `1` | Short Text Note | [1](01.md) |
83| `2` | Recommend Relay | |
84| `3` | Contacts | [2](02.md) |
85| `4` | Encrypted Direct Messages | [4](04.md) |
86| `5` | Event Deletion | [9](09.md) |
87| `6` | Repost | [18](18.md) |
88| `7` | Reaction | [25](25.md) |
89| `8` | Badge Award | [58](58.md) |
90| `16` | Generic Repost | [18](18.md) |
91| `40` | Channel Creation | [28](28.md) |
92| `41` | Channel Metadata | [28](28.md) |
93| `42` | Channel Message | [28](28.md) |
94| `43` | Channel Hide Message | [28](28.md) |
95| `44` | Channel Mute User | [28](28.md) |
96| `1063` | File Metadata | [94](94.md) |
97| `1311` | Live Chat Message | [53](53.md) |
98| `1040` | OpenTimestamps | [03](03.md) |
99| `1971` | Problem Tracker | [nostrocket-1971][nostrocket-1971] |
100| `1984` | Reporting | [56](56.md) |
101| `1985` | Label | [32](32.md) |
102| `4550` | Community Post Approval | [72](72.md) |
103| `5000`-`5999` | Job Request | [90](90.md) |
104| `6000`-`6999` | Job Result | [90](90.md) |
105| `7000` | Job Feedback | [90](90.md) |
106| `7001` | Subscription Start | [88](88.md) |
107| `7002` | Subscription Stop | [88](88.md) |
108| `9041` | Zap Goal | [75](75.md) |
109| `9734` | Zap Request | [57](57.md) |
110| `9735` | Zap | [57](57.md) |
111| `9802` | Highlights | [84](84.md) |
112| `10000` | Mute list | [51](51.md) |
113| `10001` | Pin list | [51](51.md) |
114| `10002` | Relay List Metadata | [65](65.md) |
115| `10003` | Bookmark list | [51](51.md) |
116| `10004` | Communities list | [51](51.md) |
117| `10005` | Public chats list | [51](51.md) |
118| `10006` | Blocked relays list | [51](51.md) |
119| `10007` | Search relays list | [51](51.md) |
120| `10015` | Interests list | [51](51.md) |
121| `10030` | User emoji list | [51](51.md) |
122| `13194` | Wallet Info | [47](47.md) |
123| `22242` | Client Authentication | [42](42.md) |
124| `23194` | Wallet Request | [47](47.md) |
125| `23195` | Wallet Response | [47](47.md) |
126| `24133` | Nostr Connect | [46](46.md) |
127| `27235` | HTTP Auth | [98](98.md) |
128| `30000` | Follow sets | [51](51.md) |
129| `30001` | Generic lists | [51](51.md) |
130| `30002` | Relay sets | [51](51.md) |
131| `30003` | Bookmark sets | [51](51.md) |
132| `30004` | Curation sets | [51](51.md) |
133| `30008` | Profile Badges | [58](58.md) |
134| `30009` | Badge Definition | [58](58.md) |
135| `30015` | Interest sets | [51](51.md) |
136| `30030` | Emoji sets | [51](51.md) |
137| `30017` | Create or update a stall | [15](15.md) |
138| `30018` | Create or update a product | [15](15.md) |
139| `30023` | Long-form Content | [23](23.md) |
140| `30024` | Draft Long-form Content | [23](23.md) |
141| `30078` | Application-specific Data | [78](78.md) |
142| `30311` | Live Event | [53](53.md) |
143| `30315` | User Statuses | [38](38.md) |
144| `30402` | Classified Listing | [99](99.md) |
145| `30403` | Draft Classified Listing | [99](99.md) |
146| `31922` | Date-Based Calendar Event | [52](52.md) |
147| `31923` | Time-Based Calendar Event | [52](52.md) |
148| `31924` | Calendar | [52](52.md) |
149| `31925` | Calendar Event RSVP | [52](52.md) |
150| `31989` | Handler recommendation | [89](89.md) |
151| `31990` | Handler information | [89](89.md) |
152| `34550` | Community Definition | [72](72.md) |
153| `37001` | Subscription Tier | [88](88.md) |
76 154
77| kind | description | NIP | 155[nostrocket-1971]: https://github.com/nostrocket/NIPS/blob/main/Problems.md
78| ------- | -------------------------- | ----------- |
79| `0` | Metadata | [1](01.md) |
80| `1` | Short Text Note | [1](01.md) |
81| `2` | Recommend Relay | |
82| `3` | Contacts | [2](02.md) |
83| `4` | Encrypted Direct Messages | [4](04.md) |
84| `5` | Event Deletion | [9](09.md) |
85| `6` | Repost | [18](18.md) |
86| `7` | Reaction | [25](25.md) |
87| `8` | Badge Award | [58](58.md) |
88| `16` | Generic Repost | [18](18.md) |
89| `40` | Channel Creation | [28](28.md) |
90| `41` | Channel Metadata | [28](28.md) |
91| `42` | Channel Message | [28](28.md) |
92| `43` | Channel Hide Message | [28](28.md) |
93| `44` | Channel Mute User | [28](28.md) |
94| `1063` | File Metadata | [94](94.md) |
95| `1311` | Live Chat Message | [53](53.md) |
96| `1040` | OpenTimestamps | [03](03.md) |
97| `1984` | Reporting | [56](56.md) |
98| `1985` | Label | [32](32.md) |
99| `4550` | Community Post Approval | [72](72.md) |
100| `7000` | Job Feedback | [90](90.md) |
101| `7001` | Subscription Start | [88](88.md) |
102| `7002` | Subscription Stop | [88](88.md) |
103| `9041` | Zap Goal | [75](75.md) |
104| `9734` | Zap Request | [57](57.md) |
105| `9735` | Zap | [57](57.md) |
106| `10000` | Mute List | [51](51.md) |
107| `10001` | Pin List | [51](51.md) |
108| `10002` | Relay List Metadata | [65](65.md) |
109| `13194` | Wallet Info | [47](47.md) |
110| `22242` | Client Authentication | [42](42.md) |
111| `23194` | Wallet Request | [47](47.md) |
112| `23195` | Wallet Response | [47](47.md) |
113| `24133` | Nostr Connect | [46](46.md) |
114| `27235` | HTTP Auth | [98](98.md) |
115| `30000` | Categorized People List | [51](51.md) |
116| `30001` | Categorized Bookmark List | [51](51.md) |
117| `30008` | Profile Badges | [58](58.md) |
118| `30009` | Badge Definition | [58](58.md) |
119| `30017` | Create or update a stall | [15](15.md) |
120| `30018` | Create or update a product | [15](15.md) |
121| `30023` | Long-form Content | [23](23.md) |
122| `30024` | Draft Long-form Content | [23](23.md) |
123| `30078` | Application-specific Data | [78](78.md) |
124| `30311` | Live Event | [53](53.md) |
125| `30315` | User Statuses | [38](38.md) |
126| `30402` | Classified Listing | [99](99.md) |
127| `30403` | Draft Classified Listing | [99](99.md) |
128| `31922` | Date-Based Calendar Event | [52](52.md) |
129| `31923` | Time-Based Calendar Event | [52](52.md) |
130| `31924` | Calendar | [52](52.md) |
131| `31925` | Calendar Event RSVP | [52](52.md) |
132| `31989` | Handler recommendation | [89](89.md) |
133| `31990` | Handler information | [89](89.md) |
134| `34550` | Community Definition | [72](72.md) |
135| `37001` | Subscription Tier | [88](88.md) |
136 156
137## Message types 157## Message types
138 158
@@ -211,21 +231,26 @@ Please update these lists when proposing NIPs introducing new event kinds.
2114. There should be no more than one way of doing the same thing. 2314. There should be no more than one way of doing the same thing.
2125. Other rules will be made up when necessary. 2325. Other rules will be made up when necessary.
213 233
214## Mailing Lists 234## Is this repository a centralizing factor?
235
236To promote interoperability, we standards that everybody can follow, and we need them to define a **single way of doing each thing** without ever hurting **backwards-compatibility**, and for that purpose there is no way around getting everybody to agree on the same thing and keep a centralized index of these standards. However the fact that such index exists doesn't hurt the decentralization of Nostr. _At any point the central index can be challenged if it is failing to fulfill the needs of the protocol_ and it can migrate to other places and be maintained by other people.
237
238It can even fork into multiple and then some clients would go one way, others would go another way, and some clients would adhere to both competing standards. This would hurt the simplicity, openness and interoperability of Nostr a little, but everything would still work in the short term.
215 239
216The nostr ecosystem is getting large with many different organizations, relays 240There is a list of notable Nostr software developers who have commit access to this repository, but that exists mostly for practical reasons, as by the nature of the thing we're dealing with the repository owner can revoke membership and rewrite history as they want -- and if these actions are unjustified or perceived as bad or evil the community must react.
217and clients. Following the nips repo on github is becoming more difficult and
218noisy. To coordinate on protocol development outside of github, there are
219mailing lists where you can work on NIPs before submitting them here:
220 241
221* [w3c nostr community group][w3-nostr] - [public-nostr@w3.org][mailto-w3] - requires signup 242## How this repository works
222* [nostr-protocol google group][nostr-google-group] - [nostr-protocol@googlegroups.com][mailto-google] - no signup required
223 243
224[w3-nostr]: https://www.w3.org/community/nostr/ 244Standards may emerge in two ways: the first way is that someone starts doing something, then others copy it; the second way is that someone has an idea of a new standard that could benefit multiple clients and the protocol in general without breaking **backwards-compatibility** and the principle of having **a single way of doing things**, then they write that idea and submit it to this repository, other interested parties read it and give their feedback, then once most people reasonably agree we codify that in a NIP which client and relay developers that are interested in the feature can proceed to implement.
225[mailto-w3]: mailto:public-nostr@w3.org 245
226[nostr-google-group]: https://groups.google.com/g/nostr-protocol 246These two ways of standardizing things are supported by this repository. Although the second is preferred, an effort will be made to codify standards emerged outside this repository into NIPs that can be later referenced and easily understood and implemented by others -- but obviously as in any human system discretion may be applied when standards are considered harmful.
227[mailto-google]: mailto:nostr-protocol@googlegroups.com
228 247
229## License 248## License
230 249
231All NIPs are public domain. 250All NIPs are public domain.
251
252## Contributors
253
254<a align="center" href="https://github.com/nostr-protocol/nips/graphs/contributors">
255 <img src="https://contrib.rocks/image?repo=nostr-protocol/nips" />
256</a>