@@ -10,16 +10,20 @@ parent: active ZEPs
1010nav_order : 1
1111---
1212
13- ## ZEP 0 — Purpose and process
13+ # ZEP 0 — Purpose and process
1414
15- Author: Sanket Verma
< [email protected] > 15+ Author: Sanket Verma [ (@MSanKeys963 )] ( https://github.com/msankeys963 ) , Zarr
16+
17+ Email address:
< [email protected] > 1618
1719Status: Active
1820
1921Type: Process
2022
2123Created: 2022-14-03
2224
25+ Discussion: < https://github.com/zarr-developers/governance/pull/16 >
26+
2327## What is ZEP?
2428
2529ZEP stands for Zarr Enhancement Proposal. A ZEP is a design document providing
@@ -54,40 +58,40 @@ that require collaboration across multiple projects.
5458
5559## ZEP types
5660
57- - Specification ZEP
61+ - ** Specification ZEP**
5862
5963Specification ZEPs deal with the changes related to [ Zarr Specifications] .
6064The SPEC ZEP (abbreviation of Specification ZEP) for now introduces changes in
6165the core specification of Zarr. The changes related to core specification follow a
6266strict and thorough review process and should be adopted by everyone in the
6367Zarr community.
6468
65- - Core protocol ZEP
69+ - ** Core protocol ZEP**
6670
6771Describes a ZEP which involves changes in the core specification of Zarr. Core
68- protocol ZEPs (commonly known as Core ZEPs) are a part of SPEC ZEPs and apply to
69- [ Zarr Specifications] and its various implementations under the
70- [ zarr_implementations] GitHub repo. The core protocol ZEPs should be adopted by
71- every implementation of Zarr and, in general, the overall Zarr community. Core
72- ZEPs must go through a thorough review process, including involvement,
73- discussion, and voting from the author of the proposed ZEP, Zarr Steering
74- Council, author(s) of various Zarr implementations, and open-source
75- projects/research groups using Zarr and the general Zarr community. The general
76- advice is that everyone should be made aware of changes introduced by core
77- ZEPs. Core protocol ZEPs require community consensus, and developers or users
78- are typically not free to ignore them.
72+ protocol ZEPs (commonly known as Core ZEPs) are a part of SPEC ZEPs and apply
73+ to [ Zarr Specifications] and its various implementations under the
74+ [ zarr-developers/ zarr_implementations] GitHub repo. The core protocol ZEPs
75+ should be adopted by every implementation of Zarr and, in general, the overall
76+ Zarr community. Core ZEPs must go through a thorough review process, including
77+ involvement, discussion, and voting from the author of the proposed ZEP, Zarr
78+ Steering Council, author(s) of various Zarr implementations (ZIC) , and
79+ open-source projects/research groups using Zarr and the general Zarr community.
80+ The general advice is that everyone should be made aware of changes introduced
81+ by core ZEPs. Core protocol ZEPs require community consensus, and developers or
82+ users are typically not free to ignore them.
7983
8084Note: Currently, Specification ZEPs only deal with the core specification of Zarr.
8185The scope of SPEC ZEPs will be extended in the future.
8286
83- - Informational ZEP
87+ - ** Informational ZEP**
8488
8589Describes a ZEP design issue or provides general guidelines or information to
8690the Zarr community but does not propose a new feature. Informational ZEPs do
8791not necessarily represent Zarr community consensus or recommendation, so users
8892and implementers are free to ignore informational ZEPS or follow their advice.
8993
90- - Process ZEP
94+ - ** Process ZEP**
9195
9296Describes a new process around Zarr and its implementations or proposes a
9397change to (or an event in) a process. They may propose an implementation, but
@@ -100,19 +104,22 @@ is also considered a Process ZEP.
100104
101105## ZEP Workflow
102106
103- The ZEP process begins with a new idea for Zarr. It is highly recommended that
104- a single ZEP contain a single key proposal or new idea. Small enhancements or
107+ The ZEP process begins with a new idea for Zarr. It is highly recommended that a
108+ single ZEP contain a single key proposal or new idea. Small enhancements or
105109patches often don’t need a ZEP and can be injected into the Zarr development
106- workflow with a pull request to the Zarr ZEP repo. The more focused the ZEP,
107- the more successful it tends to be. If in doubt, split your ZEP into several
108- well-focused ones.
110+ workflow with a pull request to the [ ZEPs ] or [ zarr-specs ] repo. The more
111+ focused the ZEP, the more successful it tends to be. If in doubt, split your
112+ ZEP into several well-focused ones.
109113
110114Each ZEP must have a champion -- someone who writes the ZEP using the style and
111115format described below, shepherds the discussions in the appropriate forums,
112116and attempts to build community consensus around the idea. The ZEP champion
113117(a.k.a. Author) should first attempt to ascertain whether the idea is suitable
114- for a ZEP. Posting to [ Gitter] or creating an issue on the [ community] repository
115- or posting on the organization [ discussions] are the best ways to go about doing this.
118+ for a ZEP.
119+
120+ ** Asking around during the [ ZEPs meetings] /creating an issue in the
121+ [ ZEPs] repository/posting to [ Gitter] /posting on the organization [ discussions]
122+ are the best ways to do this.**
116123
117124The ZEP champion is the lead author of the ZEP. A ZEP should have a lead
118125author and can have multiple co-author(s).
@@ -130,33 +137,29 @@ mentioned below. This allows the author to flesh out the draft ZEP to make it
130137properly formatted, of high quality, and address initial concerns about the
131138proposal.
132139
133- After the PR for the ZEP is in place, a post should be made on the GitHub
134- organisation [ discussions] , containing the sections up to “Backward
135- compatibility” to limit discussion there to usage and impact. Discussion on the
136- pull request will have a broader scope, including details of implementation.
137-
138140Spec ZEPs consist of two parts, a PR to the [ zarr-specs] repository containing
139- changes to the spec and a narrative document explaining the need, importance and
140- use-case for the change. It is also highly recommended that the specification
141- ZEP be accompanied by an implementation PR in at least one of the repositories
142- represented in the [ zarr_implementations] .
141+ changes to the spec and a PR to the [ ZEPs] repository containing a narrative
142+ document explaining the need, importance and use-case for the change. It is
143+ also highly recommended that the specification ZEP be accompanied by an
144+ implementation PR in at least one of the repositories represented in the
145+ [ zarr-developers/zarr_implementations] .
143146
144- ### Submitting a ZEP
147+ ## Submitting a ZEP
145148
146- For Spec ZEPs, the proposal should be submitted as a draft ZEP via two GitHub
149+ For SPEC ZEPs, the proposal should be submitted as a draft ZEP via two GitHub
147150pull requests, one to the [ ZEPs] repo and the other to the [ zarr-specs] repository.
148151
149152The first PR should contain the narrative text of the ZEP and should be
150- submitted in the zep repository with the name ` zep-<n>.md ` under /zeps/draft/
153+ submitted in the zep repository with the name ` zep-<n>.md ` under [ /zeps/draft/]
151154where ` <n> ` is an appropriately assigned four-digit number. The draft ZEP must
152155use the [ ZEP X - Template and Instructions] [ template.md ] file.
153156
154157The second PR should contain actual changes and should be submitted in the
155- [ zarr-specs] repository. That PR repository should mention the assigned
156- four-digit ZEP number from the zarr-developers/zep repository.
158+ [ zarr-specs] repository. The PR should mention the assigned four-digit ZEP
159+ number from the [ zarr-developers/zeps ] repository.
157160
158- For ZEPs other than spec , the proposal should be submitted as a draft ZEP via a
159- GitHub pull request to the zarr-developers/zep repository with the name
161+ For ZEPs other than SPEC , the proposal should be submitted as a draft ZEP via a
162+ GitHub pull request to the [ zarr-developers/zeps ] repository with the name
160163` zep-<n>.md ` where ` <n> ` is an appropriately assigned four-digit number (e.g.,
161164zep-0000.md). The draft ZEP must use the
162165[ ZEP X - Template and Instructions] [ template.md ] file.
@@ -167,21 +170,26 @@ A few points to consider while submitting your ZEP:
167170- The title should accurately describe the content.
168171- The ZEP’s language (spelling, grammar, sentence structure etc.) and code style should be correct and conformant.
169172
170- The [ Zarr Steering Council]
171- and the Zarr Implementations Council will not unreasonably deny publication of
172- a ZEP. Reasons for denying ZEP include duplication of effort, being technically
173- unsound, not providing proper motivation or addressing backwards compatibility,
174- or not taking care of Zarr [ CODE OF CONDUCT] .
175-
176- ### Discussing a ZEP
177-
178- As soon as the draft ZEP is committed to the ZEP repository, the author(s)
179- should create a discussion thread for the ZEP to provide a central place to
180- discuss and review its contents. The ZEP author(s) may select the GitHub
181- discussion feature in the organisation [ discussions] or the ZEP repository and
182- similarly use the discussion feature in the [ zarr-specs] repository for
183- specification ZEPs. Alternatively, the author(s) may open a new issue in the
184- Zarr [ community] repository or start the discussion in the Zarr [ Gitter] channel.
173+ The [ Zarr Steering Council] and the [ Zarr Implementations Council] will not
174+ unreasonably deny publication of a ZEP. Reasons for denying ZEP include
175+ duplication of effort, being technically unsound, not providing proper
176+ motivation or addressing backwards compatibility, or not taking care of Zarr
177+ [ CODE OF CONDUCT] .
178+
179+ → ** In conclusion: The submission of SPEC ZEPs needs two PRs, and other ZEPs need one PR.**
180+
181+ ## Discussing a ZEP
182+
183+ As soon as the draft ZEP is committed to the ZEP repository, the author
184+ (s) should create a discussion thread for the ZEP to provide a central place to
185+ discuss and review its contents. The ZEP author(s) may create an issue in
186+ [ ZEPs] repository for informational and process ZEPs and or similarly create an
187+ issue in [ zarr-specs] repository for specifications ZEPs.
188+
189+ If the author prefers to hold the discussion for SPEC ZEPs in the second PR
190+ submitted in the [ zarr-specs] repository (as mentioned above), there's no need
191+ to create an issue.
192+
185193The discussion regarding the ZEP should follow Zarr’s [ CODE OF CONDUCT] at all
186194times.
187195
@@ -199,7 +207,7 @@ avoids fragmenting the discussion, and makes sure it is fully considered as
199207part of the ZEP review process. Comments, support, concerns and other feedback
200208on this designated thread are a critical part when reviewing the ZEP.
201209
202- ### Review and Resolution
210+ ## Review and Resolution
203211
204212The possible paths of the status of ZEPs are as follows:
205213
@@ -211,10 +219,14 @@ Eventually, after the discussion, there may be a consensus that the ZEP should
211219be accepted - see the next section for details. At this point, the status
212220becomes ` Accepted ` .
213221
214- Once a Specification ZEP has been Accepted, the second PR which was submitted in
222+ ** Once a Specification ZEP has been Accepted** , the second PR which was submitted in
215223the [ zarr-specs] repository must be merged. After that, the status will be
216224changed to ` Final ` .
217225
226+ ** Once an informational or process ZEP has been Accepted** , the author should
227+ implement changes in the procedure, guidelines, decision-making process, etc.
228+ ASAP.
229+
218230To allow the gathering of additional design and interface feedback before
219231committing to long term stability for specification change or standard library
220232API, ZEP may also be marked as ` “Provisional” ` . This is short for
@@ -250,25 +262,26 @@ obsolete. The `Replaced-By` and `Replaces` headers should be added to the
250262original and new ZEPs respectively. Process ZEPs may also have a status of
251263` Active ` if they are never meant to be completed, e.g. ZEP 0 (this ZEP).
252264
253- ### How does a ZEP become accepted?
265+ ## How does a ZEP become accepted?
254266
255267A ZEP is ` Accepted ` by the consensus of all interested contributors. We need a
256268concrete way to tell whether the agreement has been reached.
257269
258- > For Core ZEPs:
270+ → ** For Core ZEPs**
259271
260272We believe Core ZEPs are of utmost importance and should follow a thorough
261273review before acceptance. Core ZEPs introduce changes in the core
262274specification, which are necessary for every other implementation and everyone
263- in the general community to follow. The [ Zarr Steering Council] and
264- Implementations Council closely review the Core ZEPs, while the author(s) should
265- simultaneously engage the community in their ZEP at several discussion forums
266- mentioned previously. The ZSC and ZIC would take community consensus into account
267- while taking the final decision on the Core ZEPs. Author(s) should ensure that
268- the involvement and discussion form the consensus on the ZEP from the author of
269- various Zarr implementations, open-source projects/research groups using Zarr,
270- the general Zarr community, and anyone else they, ZSC and ZIC think should be
271- included in the discussions. The Core ZEPs are accepted by:
275+ in the general community to follow. The [ Zarr Steering Council] (ZSC) and
276+ [ Zarr Implementations Council] (ZIC) closely review the Core ZEPs, while the
277+ author(s) should simultaneously engage the community in their ZEP at several
278+ discussion forums mentioned previously. The ZSC and ZIC would take community
279+ consensus into account while taking the final decision on the Core ZEPs. Author
280+ (s) should ensure that the involvement and discussion form the consensus on the
281+ ZEP from the author of various Zarr implementations, open-source
282+ projects/research groups using Zarr, the general Zarr community, and anyone
283+ else they, ZSC and ZIC think should be included in the discussions. The Core
284+ ZEPs are accepted by:
272285
273286- Unanimous approval of the [ Zarr Steering Council]
274287
@@ -286,26 +299,25 @@ included in the discussions. The Core ZEPs are accepted by:
286299Read more about [ Zarr Implementations Council] .
287300
288301
289- > For other ZEPs
302+ → ** For other ZEPs**
290303
291304For ZEPs, other than specifications, the author(s) must form a consensus around
292305their proposal. They may refer to [ Discussing a ZEP] ( #discussing-a-zep ) section to pick an avenue
293306for discussion and engaging the community.
294307
295- When you think ZEP is ready to accept, create a new discussion in [ zarr-specs]
296- for Specifications ZEPs using ‘General’ and in zarr-developers/zep for other
297- ZEPs and as the category with a subject like:
308+ ** When you think ZEP is ready to accept** , create a new issue in [ zarr-developers/zeps]
309+ with a subject like:
298310
299311> ` Proposal to accept ZEP <number>: <title> `
300312
301- In the body of your discussion, you should:
313+ ** In the body of your discussion** , you should:
302314
303315- Link to the latest version of ZEP,
304316- Briefly describe any major points of contention and how they were resolved,
305- - Include a sentence like: “If there are no substantive objections within 7 days
306- from this post, then the ZEP will be accepted;
317+ - Include a sentence like: ** “If there are no substantive objections within 7 days
318+ from this post, then the ZEP will be accepted** ;
307319
308- After you create the discussion , you should make sure to link the newly created
320+ After you create the issue , you should make sure to link the newly created
309321thread in the ` Discussion ` section of the ZEP, so that people can find it later.
310322
311323Generally, the ZEP author will be the one to create this post, but anyone can
@@ -320,10 +332,10 @@ There may be a case that a ZEP didn’t attract needed attention towards it, the
320332engagement from the community is low, and ` 7 days ` pass by. In this case,
321333the author(s) of the ZEP must make necessary efforts to spread the word about
322334the ZEP through [ Gitter] or using the organisation [ discussions] feature of
323- GitHub or, if needed, creating an additional PR in the [ community] repository.
324- In addition, the author(s) should get in touch with the [ Zarr Steering Council ]
325- to prevent the case that the ZEP was accepted due to less participation from the
326- community.
335+ GitHub or, if needed, creating an additional issue in the [ community] or [ ZEPs ]
336+ repository. In addition, the author(s) should get in touch with the
337+ [ Zarr Steering Council ] to prevent the case that the ZEP was accepted due to
338+ less participation from the community.
327339
328340If all the above options are exhausted by the author(s), then it’s the
329341responsibility of the [ Zarr Steering Council] to take the final decision on the
@@ -335,10 +347,10 @@ side of asking for more feedback and looking for opportunities to compromise.
335347
336348If the final comment period passes without any substantive objections, then the
337349ZEP can officially be marked ` Accepted ` . You should create a follow-up
338- discussion thread in zarr-developers/zep repository notifying everyone
350+ issue in [ zarr-developers/zeps ] repository notifying everyone
339351(celebratory emoji optional but encouraged 🎉✨), and then update the ZEP by
340352setting its ` :Status: ` to ` Accepted ` , and it's ` :Resolution: ` header to a link
341- to your follow-up discussion thread.
353+ to your follow-up discussion (the last issue created) thread.
342354
343355If there are substantive objections, then the ZEP remains in ` Draft ` state,
344356discussion continues as normal, and it can be proposed for acceptance again
@@ -347,7 +359,7 @@ later once the objections are resolved.
347359In unusual cases, the [ Zarr Steering Council] may be asked to decide whether a
348360controversial ZEP is ` Accepted ` .
349361
350- ### Maintenance
362+ ## Maintenance
351363
352364In general, SPEC ZEPs are no longer modified after they have reached the Final
353365state. The changes made to the Zarr’s core specification in the
@@ -364,7 +376,7 @@ ZEPs are UTF-8 encoded text files using the [GitHub flavoured markdown] format.
364376Please see the [ ZEP X - Template and Instructions] [ template.md ] file and the
365377[ GitHub Markdown Spec] for more information.
366378
367- ### Header Preamble
379+ ## Header Preamble
368380
369381```
370382Author: <list of authors’ real names and email addresses>
@@ -400,16 +412,19 @@ This document has been placed in the public domain.
400412[ GitHub flavoured markdown ] : https://docs.github.com/en/get-started/writing-on-github/getting-started-with-writing-and-formatting-on-github/basic-writing-and-formatting-syntax
401413[ GitHub Markdown Spec ] : https://github.github.com/gfm/
402414[ template.md ] : https://zarr.dev/zeps/template/template.html
415+ [ ZEPs meetings ] : https://zarr.dev/zeps/meetings/
403416
404417<!-- governance specific links -->
405418[ CODE OF CONDUCT ] : https://github.com/zarr-developers/.github/blob/main/CODE_OF_CONDUCT.md
406419[ Zarr Steering Council ] : https://github.com/zarr-developers/governance/blob/main/GOVERNANCE.md#zarr-steering-council
407- [ Zarr Implementations Council ] : https://github.com/zarr-developers/governance/blob/main/GOVERNANCE.md#zarr-implementation-council- zic
420+ [ Zarr Implementations Council ] : https://zarr.dev/zeps/ zic/
408421
409422<!-- github links: capitalization matches that of the repo -->
410423[ community ] : https://github.com/zarr-developers/community
411424[ discussions ] : https://github.com/orgs/zarr-developers/discussions
412- [ zarr_implementations ] : https://github.com/zarr-developers/zarr_implementations
425+ [ zarr-developers/ zarr_implementations] : https://github.com/zarr-developers/zarr_implementations
413426[ zarr-specs ] : https://github.com/zarr-developers/zarr-specs
414427[ ZEPs ] : https://github.com/zarr-developers/zeps
415428[ https://github.com/zarr-developers/governance/pull/16 ] : https://github.com/zarr-developers/governance/pull/16
429+ [ zarr-developers/zeps ] : https://github.com/zarr-developers/zeps
430+ [ /zeps/draft/ ] : https://github.com/zarr-developers/zeps/tree/main/draft
0 commit comments