Skip to content

docs: add roadmap page outlining future plans#4149

Draft
d-v-b wants to merge 9 commits into
zarr-developers:mainfrom
d-v-b:docs/roadmap
Draft

docs: add roadmap page outlining future plans#4149
d-v-b wants to merge 9 commits into
zarr-developers:mainfrom
d-v-b:docs/roadmap

Conversation

@d-v-b

@d-v-b d-v-b commented Jul 15, 2026

Copy link
Copy Markdown
Contributor

Adds a Roadmap page to the documentation describing the goals for the
next major cycle of work ("v4"), the intended changes per theme, and
the three-stream release model (additive minors, deprecations, one
minimal removals-only major), with an option for a legacy module.

Assisted-by: ClaudeCode:claude-fable-5

Author attestation

  • I am a human, these are my changes, and I have reviewed and understood every change and can explain why each is correct.

d-v-b added 2 commits July 15, 2026 09:56
Adds a Roadmap page to the documentation describing the goals for the
next major cycle of work ("v4"), the intended changes per theme, and
the three-stream release model (additive minors, deprecations, one
minimal removals-only major).

Assisted-by: ClaudeCode:claude-fable-5
@d-v-b

d-v-b commented Jul 15, 2026

Copy link
Copy Markdown
Contributor Author

cc @ilan-gold @maxrjones, opening this as a draft for visibility. lmk if there's anything more or less we should say here

@ilan-gold

ilan-gold commented Jul 16, 2026

Copy link
Copy Markdown
Contributor
Screenshot 2026-07-16 at 17 06 53

This doesn't lead me where I thought it would, somehow linking to an old page

Comment thread docs/roadmap.md
Zarr-Python around the stack, so that each level is something you can depend
on, conform to, or replace, without buying every other level:

- **A focused package per level** — `zarr-metadata`, `zarr-store`,

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Would maybe note the zarrs example here

Comment thread docs/roadmap.md
Comment on lines +58 to +60
complementary rather than competitive: Zarr-Python aims to be the best
pure-Python Zarr implementation *and* the best wrapper around the
compiled-language implementations, so that users who need native throughput can

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm really conflicted on this, because I think baking fragmentation into the ecosystem is not great, but the flipside is that languages may have different features/advantages. It would be great to have a concrete reason (or list of reasons) as to why we would design around this level of extensibility

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

good points, I'd say we want the backend to be an extension point for a few reasons:

  • we always want a traditional python impl. IMO it's our job as the python implementation, and it keeps the ecosystem healthy to have multiple implementations
  • we can't guarantee uniform, complete feature support across all implementations. As long as we allow people to hack on stuff in python, there will be things the python impl does that e.g. a rust impl doesn't support, and that's OK. For now, a compiled backend is effectively an external dep, and we simply can't promise what external deps will do in perpetuity.
  • IMO a full backend is just an refined version of our current model, which requires extenders manage buffer prototypes, data type implementations, codec implementations, and store implementations. Consolidating all of this pluggability on a single surface should make extending Zarr Python easier even for other python backends (like a cupy backend, or a pysparse backend)

Comment thread docs/roadmap.md

### Codecs

The current codec API wraps every codec in an unnecessary async layer (a

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Not anymore!

@maxrjones maxrjones left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is awesome! thanks so much for your work on this @d-v-b! 🚀

Comment thread docs/roadmap.md Outdated
Comment thread docs/roadmap.md Outdated
Comment thread docs/roadmap.md Outdated
Comment thread docs/roadmap.md
Comment on lines +96 to +98
- **Engine pluggability at the chunk-decoding level** — alternative engines
(zarrs, TensorStore) can take over IO without re-implementing hierarchy
traversal, indexing, or metadata handling.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

this seems a bit misaligned with other statements that imply pluggabillity at each level

Comment thread docs/roadmap.md
Comment on lines +102 to +103
Each theme below is backed by a detailed technical proposal; the summaries
here describe the intended end state.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

as we discussed at the dev meeting, if the idea is to reference zarr-python-planning for detailed technical proposals, we should move it to the zarr-developers github organization

Comment thread docs/roadmap.md
Comment on lines +180 to +186
Make Zarr-Python's IO surfaces device-agnostic rather than adding GPU support
as a bolted-on feature: stores and codecs grow APIs for writing into a
caller-provided buffer (`read_into`, `decode_into`), and the `Array` facade
returns array-like objects in the user's chosen Array API namespace. GPU
support falls out once the assumption of CPU destinations is removed, and CPU
paths get faster too, because pre-allocated output buffers eliminate per-chunk
allocation.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@TomAugspurger it'd be great to get your thoughts on this component in particular.

Comment thread docs/roadmap.md Outdated
Comment thread docs/roadmap.md
Comment on lines +280 to +289
### Decision points

Flipping the default of bare `array[...]` from eager to lazy is the single
highest-migration-cost item in the plan, so it is handled as an explicit
decision, not bundled into the additive work. The opt-in `array.lazy[...]`
accessor ships first, with no default change. Whether the default ever flips
hinges on whether Array API conformance at the bare-`__getitem__` surface turns
out to be a hard requirement; if it does, the flip happens as a long-window
deprecation with an explicit eager escape hatch and downstream coordination —
never as a reason to adopt a major version.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

To some extent, I think it would be better to separate this from the roadmap. Include the commitment to delivering lazy indexing, leave the how to the detailed documents and reference zarr-python-planning.

@maxrjones

Copy link
Copy Markdown
Member

This doesn't lead me where I thought it would, somehow linking to an old page

fyi @d-v-b this can be fixed by removing this redirect:

'roadmap.md': 'https://zarr.readthedocs.io/en/v3.0.8/developers/roadmap.html'

d-v-b and others added 3 commits July 17, 2026 17:26
Co-authored-by: Max Jones <14077947+maxrjones@users.noreply.github.com>
Co-authored-by: Max Jones <14077947+maxrjones@users.noreply.github.com>
Co-authored-by: Max Jones <14077947+maxrjones@users.noreply.github.com>
@codecov

codecov Bot commented Jul 17, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 93.84%. Comparing base (ecc2d77) to head (e0623e1).

Additional details and impacted files
@@           Coverage Diff           @@
##             main    #4149   +/-   ##
=======================================
  Coverage   93.84%   93.84%           
=======================================
  Files          91       91           
  Lines       12549    12549           
=======================================
  Hits        11777    11777           
  Misses        772      772           
🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

d-v-b and others added 3 commits July 21, 2026 20:31
Co-authored-by: Max Jones <14077947+maxrjones@users.noreply.github.com>
The mkdocs-redirects plugin was generating a redirect stub for
roadmap.md pointing at the old v3.0.8 docs, which clobbered the new
roadmap page added in this PR. The developers/roadmap.html redirect is
kept so old links to the historical v3 design roadmap still resolve.

Assisted-by: ClaudeCode:claude-fable-5
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.

3 participants