-
Notifications
You must be signed in to change notification settings - Fork 33
ZEP9 (phase 1): add clarifications for extension naming #330
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
Conversation
@joshmoore - really glad you got this started! 🙌 My feedback is that the PR is hard to review. It touches 15 files, including a ton of minor, unrelated formatting changes to the core spec document. If we want folks to engage and give meaningful feedback, we need to make it easier to review. I'd recommend starting fresh with a minimal PR in which the diffs are reflective exclusively of the actual proposed changes. |
Remaining text blocks are likely to be re-used under the more general "Extension points" section. see: zarr-developers#312
549cc16
to
454faaf
Compare
👍
You're right. I've extracted out #331.
I disagree that they are unrelated. Take a look. The sections I've modified were basically already un-parseable. Since I was adding sections, the outline was getting more convoluted.
👍 Give it a look and let me know what you think. |
Thanks for all of your work on this! My current understanding of the practical effect of proposal is as follows: -raw names will be granted fairly easily, e.g. zstd, bfloat16, and others I've proposed would be assigned to me, the ones that zarr-python has started using (string, bytes, vlen-utf8, etc.) would be assigned to someone from zarr-python. URL names will be used only for really experimental stuff, all commonly-used extensions will have raw names since they will be minimal effort. Therefore, the verbosity of the URLs is not really a problem in practice.
The lack of basically any review worries me a bit. But ultimately I'm in favor of this proposal because I think it reflects the reality that the ZEP process isn't working for the existing extension points, and it would be better to just rely on a less formal process. |
I share your concerns to some degree. I think we can adapt the governance structure for extensions in the future, if we think that a more thorough review process would be necessary. We are thinking of forming a zarr specs team that could take on that responsibility. |
I wanted to share my thoughts from working on distributed open source projects like As such, I added a "TL;DR" below 💯 "Good artists copy, great artists steal" – PicassoI'll open by saying that in my own experience the wisdom @d-v-b shared here is right 80%-85% of the time:
TL;DR?For the "TL;DR" crowd, every suggestion below comes with lived experience (and what I hope is in turn wisdom) from past work on popular/distributed open source projects & specifications:
Implementing a specification will influence its final formAs mentioned by @jbms (see: 1 2), @normanrz (see: 3), there appear to be material concerns about the current ZEP process as it applies to extensions. I would strongly urge this group to think about and come to a lazy consensus on how to surface to your community – NOT enforce – how "stable" or "mature" a given extension is. Why?: specs that are unimplementable and/or implemented inconsistently are the hardest kind of situation to undo. e.g. ESModules was approved in the ES2015 version of ECMA-262 (aka JavaScript), but required other specifications to be finalized (e.g. WHATWG Module Loader spec) prior to implementation being possible. That was almost TEN YEARS AGO 😳 and the JS ecosystem is still helping the average developer wrap their heads around years of "CJS vs ESM" FUD. After ES2015 shipped, similar process challenges were codified by TC-39 into the current staging process document which now requires that in order to get to Stage 4 a new proposal must be implemented in two runtimes. Investing in a lightweight set of stages that represent MVG (minimum viable guardrails) will pay a much larger dividend than you might think 💡 When it comes to fostering a vibrant ecosystem, "less is more"There is an old proverb that I'm sure many (if not all of you) have heard before:
There is a version of that wisdom for Zarr extensions that I pose as a thought experiment:
I posit this not to undermine the technical merits of any one approach over the other, but to bring to the surface that software is written by people. In fact, this kind of confusion was highlighted in the review of this proposal @d-v-b's comment (4) about ensuring global interoperability a prior rang true to me:
For an example why telling your users – or library implementors – EXACTLY how the world MUST be because you are trying to protect them from making mistakes look no further than
The goal in the original implementation was to ensure correctness. But it turns out that correctness didn't matter all that much for most users. In this context: making decisions based on what other users "might" be doing will generally lead to pain. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thank you Josh for spearheading this revision! ❤️
Also thanks to everyone on the ZSC who participated in the discussion and early drafts of this work 🙏
Think this provides a good path for developers to explore and expand the use cases Zarr can handle. With the work Norman has done on the first extensions, we can set an example future contributors can follow
Co-authored-by: jakirkham <jakirkham@gmail.com>
Thanks, @jakirkham. With that approval, we now have unanimous support from @zarr-developers/steering-council and no major objections since the call on April 3rd. I'll close all remaining comments above (per current GH settings), merge ( Two final points:
|
To clarify, what I mean overall is that we should reserve characters for later potential namespace or unregistered names in lieu of actually specifying that mechanism. That is we should reserve characters. I propose we at least copy the reservations of RFC 3986:
Additionally, we should also reserve This would allow us to adopt some kind of URI or namespace mechanism in the future if we so choose. The propsective idea of a default My proposition today is that we reserve |
I turned my comment into a pull request on zarr-extensions: |
This PR reduces the scope of ZEP0009 to match the decisions made in zarr-developers/zarr-specs#330 and subsequently published as the 3.1 update of the Zarr specification.
This PR clarifies the extension mechanism concept in the v3 specification. Comments on any changes which will break existing implementations are STRONGLY encouraged. Please see zarr-developers/zeps#65 for background material.
TODOs:
Post-merge: