Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Create Spec Core Devs / Remove ZIC #44

Draft
wants to merge 3 commits into
base: main
Choose a base branch
from

Conversation

rabernat
Copy link
Contributor

At the latest Zarr Steering Council meeting, we discussed the fact that steering council review has been a bottleneck on development, particularly where evolving the spec is involved. Currently the SC needs to review and approve spec changes, which has been very slow to happen (zarr-developers/zarr-specs#292). There are two ways we intend to fix this:

  • Simplify the overly cumbersome ZEP process (ongoing)
  • Decouple steering council from the spec evolution

This PR addresses the latter by creating "Zarr Spec Core Devs". It also removes the ZIC, which has not turned out to be a particularly useful body.

Here I'm proposing that the spec be run by a group of active core devs, the same way the implementations themselves are run. I think this is the simplest and most effective approach. This will allow us to move faster and get to an up-or-down decision on spec changes within a reasonable timeframe.

This PR needs to be accompanied by a ZEP which changes the spec evolution process. You can expect that soon. In the meantime, I wanted to start the discussion here.

A key question is, who will be the Spec Core Devs. I'd propose the following list to start. After an initial nomination from the SC, the spec core devs are free to evolve their membership according to the CORE_DEV_GUIDE like all other Zarr projects.

cc @zarr-developers/steering-council, @zarr-developers/implementation-council for review.

Overall, the vibe here is that we have created much too much process and governance structure in Zarr, and now it is holding us back. The aim is to simplify and become more agile.

@manzt
Copy link
Member

manzt commented Aug 21, 2024

I’m in support of this. I’d hate my involvement in ZIC to block progress on Zarr. Thanks @rabernat!

@normanrz
Copy link

This sounds like a good plan. Thanks for nominating me.

@constantinpape
Copy link

That is also fine with me.

@joshmoore
Copy link
Member

Thanks for kicking off this discussion, @rabernat. I'm definitely looking forward to getting more feedback on this topic from the wider implementation community.

At the latest Zarr Steering Council meeting, we discussed the fact that steering council review has been a bottleneck on development, particularly where evolving the spec is involved. Currently the SC needs to review and approve spec changes, which has been very slow to happen (zarr-developers/zarr-specs#292).

Seconding this and also where/if necessary, apologies from my side where things haven't been merged quickly enough.

  • Decouple steering council from the spec evolution

This decoupling would certainly be my priority. As we (i.e., @jhamman 🙌🏽) did with the zarr-python core team, we need to clearly be able to move things forward.

This PR addresses the latter by creating "Zarr Spec Core Devs". It also removes the ZIC, which has not turned out to be a particularly useful body.

I'm not immediate on board with this statement. I would definitely agree with "not a particularly active body" and I would suggest we try to fix that in a more incremental way. I'd say one of our (my) mistakes was not to require some form of regular buy in. Let's say I was being overly optimistic.

My concern with not having the explicit involvement of other implementations is that it becomes easy to lose sight of the bigger picture (and the impact of changes). Minimally, I'd suggest that we invite existing ZIC members to the new team with the understanding that there are time requirements. From @manzt and @constantinpape, I'm sensing they would say, "thanks but not thanks" but I'd like to hear that from everyone.

Alternatively, we consider having two bodies -- the core team for moving the day to day work forward and then the ZIC for reviews and general sign offs. (And we can still consider culling the ZIC based on active implementations.)

Here I'm proposing that the spec be run by a group of active core devs, the same way the implementations themselves are run. I think this is the simplest and most effective approach. This will allow us to move faster and get to an up-or-down decision on spec changes within a reasonable timeframe.

I agree that all those statements are true but disagree that it is necessarily the optimal choice for the final sign off on major changes. In my mind, there is an additional burden on spec development that isn't taken into account by this PR, especially if we approach a situation where team(one library) == team(spec), even modulo @jbms.

This PR needs to be accompanied by a ZEP which changes the spec evolution process. You can expect that soon. In the meantime, I wanted to start the discussion here.

💯

A key question is, who will be the Spec Core Devs. I'd propose the following list to start. After an initial nomination from the SC, the spec core devs are free to evolve their membership according to the CORE_DEV_GUIDE like all other Zarr projects.

For me this is conditional on the above. If there's some mechanism for the wider picture in place, then I agree with this wholeheartedly and would encourage anyone who is interested to get involved and get added! 🎉

Overall, the vibe here is that we have created much too much process and governance structure in Zarr, and now it is holding us back. The aim is to simplify and become more agile.

Agreed, but I'd push for more of a compromise for the first iteration of improvements.

@d-v-b
Copy link

d-v-b commented Aug 24, 2024

Thanks for this @rabernat. I find the recent lack of movement on spec changes concerning, and agree that we a fix for that.

Regarding the ZIC, it seems as though the majority of the members of the ZIC do not participate in zarr spec decision making. I think the list of spec maintainers should be drawn from the set of people motivated to maintain the spec, not from a list of zarr implementation authors. If we follow the proposal in this PR and get an active collection of spec maintainers, i.e. people with review / commit privileges to zarr-specs, then I don't see what role the ZIC has. To be clear, it's important that spec decisions be made with input from zarr implementers, but I don't think we need a special council for that.

@alimanfoo
Copy link
Member

Hi @rabernat, FWIW I would have no objection to decoupling a group of core spec developers from the implementation council. Having a group of core spec devs able to move forwards more rapidly would be great.

It kind-of goes without saying that the core spec devs should try to maintain interoperability between implementations as much as possible, and so should be consulting with and considering the views of implementers carefully. I think it would be worth stating that explicitly, though, for the record.

I'd also be in favour of keeping the ZIC at least as a group of people who are involved in actively maintaining implementations, and who should be notified and consulted on any new specs or spec changes, and whose views should be carefully considered by the core spec dev group.

@alimanfoo
Copy link
Member

Just to add, it also goes without saying that the core spec devs should be trying to maintain interoperability between data and implementations, i.e., should also be consulting with and carefully considering the views of data producers.

@jhamman
Copy link
Member

jhamman commented Sep 14, 2024

This seems to be stalling. From my perspective, removing the ZIC is a nice simplification but is not required to set up the spec core dev team. Perhaps we separate the two issues and move forward with the core team. Getting the spec moving again is the highest priority at this time.

@rabernat
Copy link
Contributor Author

IIRC, at the last ZSC meeting, @joshmoore volunteered to revise this proposal to remove the changes to the ZIC, in line with what @jhamman has proposed above. Josh, are you still planning to do this? Feel free to push to my branch directly.

@joshmoore
Copy link
Member

@rabernat: "YRC" 😄 Apologies for not having gotten to this sooner. I still intended to push something to your branch. In the way of an outline of the points I remember and would like to work into this text:

  • The ZIC won't be removed but restructured, including that we will:
    • contact all ZIC members to confirm membership;
    • evaluate current active v3 implementations for addition;
    • attempt regular status meetings with active members to communicate status;
    • not require consensus voting for acceptance of changes;
    • prefer, instead, a review-style of major changes.
  • Spec devs as outlined here are responsible for PR merges.

The major piece of the puzzle that I think we haven't clarified (or at least, hasn't been clear enough for me to write up here) is: what is the unit of interaction with the ZIC? i.e. when is the main branch sufficiently different that we should take a step back and confirm with other implementations if developments are going in a mutually beneficial direction or might cause unforeseen issues in a particular implementation.

Ultimately, this may come down to a definition of what future versions of the spec look like.

To @jhamman's point: you are right that separating the two would allow us to more quickly merge this PR, set up the team, and allow PRs to be merged, but it also puts us in a situation where things will be merged without a definition of the release process and versioning scheme.

Thoughts welcome on how we can move both quickly and safely in this regard.

@normanrz
Copy link

The major piece of the puzzle that I think we haven't clarified (or at least, hasn't been clear enough for me to write up here) is: what is the unit of interaction with the ZIC? i.e. when is the main branch sufficiently different that we should take a step back and confirm with other implementations if developments are going in a mutually beneficial direction or might cause unforeseen issues in a particular implementation.

I see the mandate of the new spec dev team to sustainably evolve the spec with an emphasis on interoperability. As part of that mandate, the ZIC would morph into an advisory board to the spec dev team. For major changes, the ZIC would be asked to provide feedback (review-style). It would be up to the spec dev team to decide what warrants a major change. I think this would work quite naturally if representatives of the major implementations are in the spec dev team already.
Of course, members of the ZIC (anyone from the community, really) can also pitch in and provide feedback anytime they want to.

@d-v-b
Copy link

d-v-b commented Sep 16, 2024

The major piece of the puzzle that I think we haven't clarified (or at least, hasn't been clear enough for me to write up here) is: what is the unit of interaction with the ZIC? i.e. when is the main branch sufficiently different that we should take a step back and confirm with other implementations if developments are going in a mutually beneficial direction or might cause unforeseen issues in a particular implementation.

Speaking for myself (as a ZIC member), I think the spec core dev team should be responsible for listening to the voices of all implementation developers (and implementation users), whether they are on some list or not. This seems like part of the definition of "core spec dev" -- It's hard to imagine spec maintenance and development proceeding sustainably without looping in implementations.

Implementation developers should also probably keep notified of changes in the zarr-specs repository via the various mechanism provided by github, but if people have other communication preferences we should adapt spec development accordingly.

I don't see any problem with this PR as-is, and even if this PR is amended to preserve the ZIC I still don't see the question "how should members of the ZIC learn about spec changes" as a blocker for the central content of this PR.

It would be helpful to hear from the other members of the ZIC: @zarr-developers/implementation-council any thoughts here?

GOVERNANCE.md Outdated Show resolved Hide resolved
@jhamman
Copy link
Member

jhamman commented Oct 7, 2024

It would be helpful to hear from the other members of the ZIC: @zarr-developers/implementation-council any thoughts here?

Noting that this call did not generate any response from anyone on Implementation Council. 🦗


Alas, I am the Zarr-Python rep on the implementation council and will therefore share my perspective. I am much more excited about having a functioning spec process than maintaining my membership on the implementation council. No surprise here but I would be in favor of doing away with the ZIC.

@d-v-b
Copy link

d-v-b commented Oct 8, 2024

Just to add, it also goes without saying that the core spec devs should be trying to maintain interoperability between data and implementations, i.e., should also be consulting with and carefully considering the views of data producers.

I completely agree with this statement from @alimanfoo. However, to make this more explicit I have proposed additions to this PR. @joshmoore do those proposed changes assuage your concerns? If not, could you explain in concrete terms how we can unblock this PR?

And to your concern that we do not have a well-defined versioning scheme for the zarr specifications: I agree that this is an important issue, but in my mind resolving such issues is exactly the job of the proposed spec dev team.

@rabernat
Copy link
Contributor Author

rabernat commented Oct 9, 2024

As a member of the Zarr Steering Council, I approve these proposed changes (with the additions proposed by @d-v-b):

@joshmoore
Copy link
Member

Sorry, @rabernat, quick question, are you asking about #44 (comment) or the PR as it currently stands?

@rabernat
Copy link
Contributor Author

rabernat commented Oct 9, 2024

Either one.

As for what I'm asking, here are some options:

  • I approve the PR as is (with @d-v-b's proposed changes)
  • I have other changes to suggest: here they are
  • I am opposed to this completely

(edit: I just merged @d-v-b's changes into this PR)

Co-authored-by: Davis Bennett <davis.v.bennett@gmail.com>
@joshmoore
Copy link
Member

So for some background, we had about 2 hours of chatting over this at some of last week's meetings (community & ZEP). Thanks to @d-v-b for writing up his summary and @rabernat for adding it in here. I definitely believe it's an improvement over the simple deletion.

As it now stands my largest question is likely the definition of "stakeholders" along with specifics about timelines for feedback, etc. If we slightly update it to kick off these processes when there's a major change, then essentially we're saying "zarr-spec devs will follow ZEP0 for major changes".

This brings us to @normanrz's version in #44 (comment) which I also liked:

For major changes, the ZIC would be asked to provide feedback (review-style). It would be up to the spec dev team to decide what warrants a major change.

Here, though, I would appreciate a definition of "major" (especially in the absence of a well-defined versioning mechanism). My working definition is something like: "anything that changes the on-disk format OR anything that requires an implementation to be modified".

Ultimately, my primary goal is to make sure that even those who are not actively watching this repo (and certainly, GitHub mentions are not doing the trick as things stand) still have a stake in this, in my opinion, most critical of Zarr assets.

I agree (from the meeting's last week) that if we had a wider zarr-spec core dev team that that would largely achieve the same thing the ZIC is intended for, but I assume there will remain a set of people who's input we value who will not be able to keep up with the day-to-day GitHub communication. For them, I expect that clearly documented decision points, communicated by whatever means reliably works would be worth our time.

To move iteratively (so I'm not further blocking things), I'd propose:

  • for this PR
    • rollback the deletion of the ZIC
    • find a common definition of "major" that we can begin with
    • specify the core-devs will send ZEPs (following ZEP0) to the ZIC for the time being if major
  • after this PR
    • attempt to bring all interested ZICs to the spec
    • if not, review ZIC, ZEP0, etc. and discuss with the community (i.e. redefine "stakeholders") options include:
    • address the versioning issue, integrating it with the concept of "major"

@normanrz
Copy link

normanrz commented Oct 9, 2024

  • find a common definition of "major" that we can begin with

My proposal was that the zarr-spec core dev team decides what a "major" change is on a case-by-case basis instead of preformulating a formal definition.

@joshmoore
Copy link
Member

Sorry, @normanrz, I understood that and was trying to say that's how I would alter your recommendation.

@joshmoore
Copy link
Member

While we wait on responses, a few additional thoughts from a recent chat with @normanrz. He mentioned the idea of a "release train" for zarr-specs on a monthly or quarterly releases.

This resonated with me since it addresses one of the biggest issues I see is the need to balance development speed and long-term stability. There are groups around the world who care about the stability and are failing to keep up with the speed (of conversations, minimally).

I could imagine including here in the spec-team definition something like the following:

  • The spec team will merge to an integration branch proactively changes that aren't to be ZEP'd.
  • Once a quarter (?), an agenda will be sent out to a list[1] inviting to the regular meeting(s).
  • The agenda will include the decisions that are up for discussion and any material that needs reading.[2]
  • Meetings[3] will work towards consensus, reverting any changes that need further work. Otherwise the change will be made public.
  • Concerns can be be addressed if attendance is not possible ... (Not sure how to handle this.)

Honestly, if we could make something like this work, I'd be happy to skip many of the other meetings (ZEP, community) to make more time for this.

There are a couple of huge decisions coming out of recent, hard discussions[4] like:

  • What is the actual state of v3? (ACCEPTED, FINAL, REOPENED)
  • What version are we on and will we put out point releases for the work above?
  • What are extensions? How are they named? Is there a difference between an external extension (URI) and an internal one?
  • Do the core groups prefer external extensions or PRs against zarr-specs?

[1] "ZIC" but with a wider definition?
[2] I'll point out, since it's kinda obvious, this is awfully like ZEPs. I believe there is some cost wider communication that is worth it to the Zarr community.
[3] Perhaps based on https://github.com/WebAssembly/meetings
[4] zarr-developers/zarr-specs#312 and zarr-developers/zarr-specs#309

@d-v-b
Copy link

d-v-b commented Oct 12, 2024

There are groups around the world who care about the stability and are failing to keep up with the speed (of conversations, minimally).

Who exactly are these groups? If we are going to shape our development cadence around their needs, we have to know who they are, and ideally hear from them. Otherwise it's unclear what development style would work.

@joshmoore
Copy link
Member

The most recent conversations with implementers that I've had are with:

especially regarding the versioning issue(s) I've mentioned. But I think it holds for several of the other "active" implementations:

With his schedule @jbms might benefit at the moment as well. I'd be interested to hear what @meggart says, as well.

Thinking more widely & outside the specific implementer group, I could imagine interest/benefit for:

Obviously, then questions about voting rights (if there's even a vote), etc. would need answering. I would hope though that that regular communication channels could even help find new people. (e.g., depending on what we choose, I could see posting the invitations/summaries on image.sc each quarter.)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

8 participants