Extract ome module - #78

Open
konstibob wants to merge 6 commits into
zarr-developers:mainfrom
konstibob:extract-ome-module
Open

Extract ome module#78
konstibob wants to merge 6 commits into
zarr-developers:mainfrom
konstibob:extract-ome-module

Conversation

@konstibob

Copy link
Copy Markdown
Contributor

Restructured zarr-java into two Maven submodules, zarr-java-core and
zarr-java-ome, making OME-Zarr an optional import.

Also adds Jupyter notebooks under notebooks/ for exploring the library
locally without having to publish changes to Maven Central. Run with
./notebooks/start.sh.

Naming convention change: the OME package moved from
dev.zarr.zarrjava.experimental.ome to dev.zarr.omezarr.

Updated USERGUIDE.md and USERGUIDE-OME-ZARR.md for the new module layout,
package names, and dependency coordinates.

konstiboband others added 6 commits June 24, 2026 15:29
- Replace experimental.ome package refs with dev.zarr.omezarr
- Add zarr-java-ome as separate Maven/Gradle dependency
- Fix write example syntax and imports
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

@normanrznormanrz 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.

Very high-level feedback. I would rename the modules:

  • zarr-java-core -> zarr-java
  • zarr-java-ome -> omezarr-java

I don't think the notebooks need to be in the repository. Please remove.

@sbesson@melissalinkert Do you have some feedback on splitting up into 2 modules/jars?

@melissalinkert

Copy link
Copy Markdown
Member

I don't have a problem in general with splitting into separate submodules, though it would be useful to know why this is necessary.

I'm not yet using dev.zarr.zarrjava.experimental.ome, so the package rename to dev.zarr.omezarr isn't breaking right now (but it might be for anyone else who is using zarr-java). I would strongly suggest against any further package renames though.

I think my main concern is with artifact IDs. All of the pom.xml suggest that we can continue to use dev.zarr:zarr-java:<version> to get both modules (and that is my preference), but the user guide only mentions using the individual artifact IDs for the new modules. Since that would be a breaking change for everyone who uses zarr-java, it would be good to clarify what is expected for the zarr-java artifact ID.

@normanrz

Copy link
Copy Markdown
Member

@joshmoore Can you please elaborate the motivation for splitting up the jars?
Personally, I would also be fine with keeping everything in one jar.

@joshmoore

Copy link
Copy Markdown
Member

I'm running short on time so a immediate few thoughts:

  • From the OME perspective
    • I don't particularly want to be blocked on a release by Zarr-level things
    • (which goes to say, I see there as being more than one version number here)
  • From the Zarr perspective:
    • I don't immediately understand why this is here.
    • However, if this is something that we want to do/explain, it should be clear how others join.

In terms of existing models, I was largely thinking about https://github.com/zarrs/ome_zarr_metadata . That being said, I think there's definitely more than one way to do it, I would just make it feel intentionally to members of both communities.

@normanrz

Copy link
Copy Markdown
Member

Thanks @joshmoore. I think this comes down to whether it confuses people that the OME-Zarr metadata is in the zarr-java artifact or not. From the pov of an OME-Zarr implementation it is of course more convenient to have it in a single artifact; I got that feedback a couple of times now.

I don't particularly want to be blocked on a release by Zarr-level things

I don't think the release numbers of zarr-java have to correlate with either the zarr format nor OME-Zarr versions. Why would there be any blocking?

I don't immediately understand why this is here.

Fair enough. But it doesn't hurt unless it requires additional dependencies.

However, if this is something that we want to do/explain, it should be clear how others join.

Maybe it should move under dev.zarr.conventions.ome? Someone else could open a PR to add dev.zarr.conventions.geo when it exists.

@sbesson

sbesson commented Jul 27, 2026

Copy link
Copy Markdown
Contributor

Echoing @melissalinkert's comments above, my biggest piece of feedback is "let's not rename things (package, artifacts....) unless we have identified a clear rationale and well-identified benefit for users". The zarr-java -> zarr-java-core in particular is not something I find useful.

The biggest point of discussion started by this contribution is whether zarr-java should only be focused about the low-level Zarr implementation or also include an OME-Zarr implementation. My understanding is that OME-Zarr is not a primary citizen of this library with the OME-Zarr support introduced in an experimental package and OME-Zarr being absent from the primary README.

The most essential requirement from our side is to ensure we can maintain and rely upon a robust reference Zarr library for the JVM, as was originally discussed during the [2022 OME community meeting] (https://www.openmicroscopy.org/events/ome-community-meeting-2022/). When it comes to adding OME-Zarr support, using either one artifact with multiple packages or having multiple artifacts are both fine strategies for which we are working precedents. If we decide to use multiple artifacts, I have a preference for splitting the OME Zarr implementation in a separate downstream repository and versioning it separately instead of using a multi-module project.

Sign up for freeto 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.

5 participants

@konstibob@melissalinkert@normanrz@joshmoore@sbesson
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Extract ome module - #78

Open
konstibob wants to merge 6 commits into
zarr-developers:mainfrom
konstibob:extract-ome-module
Open

Extract ome module#78
konstibob wants to merge 6 commits into
zarr-developers:mainfrom
konstibob:extract-ome-module

Conversation

@konstibob

Copy link
Copy Markdown
Contributor

Restructured zarr-java into two Maven submodules, zarr-java-core and
zarr-java-ome, making OME-Zarr an optional import.

Also adds Jupyter notebooks under notebooks/ for exploring the library
locally without having to publish changes to Maven Central. Run with
./notebooks/start.sh.

Naming convention change: the OME package moved from
dev.zarr.zarrjava.experimental.ome to dev.zarr.omezarr.

Updated USERGUIDE.md and USERGUIDE-OME-ZARR.md for the new module layout,
package names, and dependency coordinates.

konstiboband others added 6 commits June 24, 2026 15:29
- Replace experimental.ome package refs with dev.zarr.omezarr
- Add zarr-java-ome as separate Maven/Gradle dependency
- Fix write example syntax and imports
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

@normanrznormanrz 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.

Very high-level feedback. I would rename the modules:

  • zarr-java-core -> zarr-java
  • zarr-java-ome -> omezarr-java

I don't think the notebooks need to be in the repository. Please remove.

@sbesson@melissalinkert Do you have some feedback on splitting up into 2 modules/jars?

@melissalinkert

Copy link
Copy Markdown
Member

I don't have a problem in general with splitting into separate submodules, though it would be useful to know why this is necessary.

I'm not yet using dev.zarr.zarrjava.experimental.ome, so the package rename to dev.zarr.omezarr isn't breaking right now (but it might be for anyone else who is using zarr-java). I would strongly suggest against any further package renames though.

I think my main concern is with artifact IDs. All of the pom.xml suggest that we can continue to use dev.zarr:zarr-java:<version> to get both modules (and that is my preference), but the user guide only mentions using the individual artifact IDs for the new modules. Since that would be a breaking change for everyone who uses zarr-java, it would be good to clarify what is expected for the zarr-java artifact ID.

@normanrz

Copy link
Copy Markdown
Member

@joshmoore Can you please elaborate the motivation for splitting up the jars?
Personally, I would also be fine with keeping everything in one jar.

@joshmoore

Copy link
Copy Markdown
Member

I'm running short on time so a immediate few thoughts:

  • From the OME perspective
    • I don't particularly want to be blocked on a release by Zarr-level things
    • (which goes to say, I see there as being more than one version number here)
  • From the Zarr perspective:
    • I don't immediately understand why this is here.
    • However, if this is something that we want to do/explain, it should be clear how others join.

In terms of existing models, I was largely thinking about https://github.com/zarrs/ome_zarr_metadata . That being said, I think there's definitely more than one way to do it, I would just make it feel intentionally to members of both communities.

@normanrz

Copy link
Copy Markdown
Member

Thanks @joshmoore. I think this comes down to whether it confuses people that the OME-Zarr metadata is in the zarr-java artifact or not. From the pov of an OME-Zarr implementation it is of course more convenient to have it in a single artifact; I got that feedback a couple of times now.

I don't particularly want to be blocked on a release by Zarr-level things

I don't think the release numbers of zarr-java have to correlate with either the zarr format nor OME-Zarr versions. Why would there be any blocking?

I don't immediately understand why this is here.

Fair enough. But it doesn't hurt unless it requires additional dependencies.

However, if this is something that we want to do/explain, it should be clear how others join.

Maybe it should move under dev.zarr.conventions.ome? Someone else could open a PR to add dev.zarr.conventions.geo when it exists.

@sbesson

sbesson commented Jul 27, 2026

Copy link
Copy Markdown
Contributor

Echoing @melissalinkert's comments above, my biggest piece of feedback is "let's not rename things (package, artifacts....) unless we have identified a clear rationale and well-identified benefit for users". The zarr-java -> zarr-java-core in particular is not something I find useful.

The biggest point of discussion started by this contribution is whether zarr-java should only be focused about the low-level Zarr implementation or also include an OME-Zarr implementation. My understanding is that OME-Zarr is not a primary citizen of this library with the OME-Zarr support introduced in an experimental package and OME-Zarr being absent from the primary README.

The most essential requirement from our side is to ensure we can maintain and rely upon a robust reference Zarr library for the JVM, as was originally discussed during the [2022 OME community meeting] (https://www.openmicroscopy.org/events/ome-community-meeting-2022/). When it comes to adding OME-Zarr support, using either one artifact with multiple packages or having multiple artifacts are both fine strategies for which we are working precedents. If we decide to use multiple artifacts, I have a preference for splitting the OME Zarr implementation in a separate downstream repository and versioning it separately instead of using a multi-module project.

Sign up for freeto 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.

5 participants

@konstibob@melissalinkert@normanrz@joshmoore@sbesson
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Extract ome module - #78

Open
konstibob wants to merge 6 commits into
zarr-developers:mainfrom
konstibob:extract-ome-module
Open

Extract ome module#78
konstibob wants to merge 6 commits into
zarr-developers:mainfrom
konstibob:extract-ome-module

Conversation

@konstibob

Copy link
Copy Markdown
Contributor

Restructured zarr-java into two Maven submodules, zarr-java-core and
zarr-java-ome, making OME-Zarr an optional import.

Also adds Jupyter notebooks under notebooks/ for exploring the library
locally without having to publish changes to Maven Central. Run with
./notebooks/start.sh.

Naming convention change: the OME package moved from
dev.zarr.zarrjava.experimental.ome to dev.zarr.omezarr.

Updated USERGUIDE.md and USERGUIDE-OME-ZARR.md for the new module layout,
package names, and dependency coordinates.

konstiboband others added 6 commits June 24, 2026 15:29
- Replace experimental.ome package refs with dev.zarr.omezarr
- Add zarr-java-ome as separate Maven/Gradle dependency
- Fix write example syntax and imports
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

@normanrznormanrz 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.

Very high-level feedback. I would rename the modules:

  • zarr-java-core -> zarr-java
  • zarr-java-ome -> omezarr-java

I don't think the notebooks need to be in the repository. Please remove.

@sbesson@melissalinkert Do you have some feedback on splitting up into 2 modules/jars?

@melissalinkert

Copy link
Copy Markdown
Member

I don't have a problem in general with splitting into separate submodules, though it would be useful to know why this is necessary.

I'm not yet using dev.zarr.zarrjava.experimental.ome, so the package rename to dev.zarr.omezarr isn't breaking right now (but it might be for anyone else who is using zarr-java). I would strongly suggest against any further package renames though.

I think my main concern is with artifact IDs. All of the pom.xml suggest that we can continue to use dev.zarr:zarr-java:<version> to get both modules (and that is my preference), but the user guide only mentions using the individual artifact IDs for the new modules. Since that would be a breaking change for everyone who uses zarr-java, it would be good to clarify what is expected for the zarr-java artifact ID.

@normanrz

Copy link
Copy Markdown
Member

@joshmoore Can you please elaborate the motivation for splitting up the jars?
Personally, I would also be fine with keeping everything in one jar.

@joshmoore

Copy link
Copy Markdown
Member

I'm running short on time so a immediate few thoughts:

  • From the OME perspective
    • I don't particularly want to be blocked on a release by Zarr-level things
    • (which goes to say, I see there as being more than one version number here)
  • From the Zarr perspective:
    • I don't immediately understand why this is here.
    • However, if this is something that we want to do/explain, it should be clear how others join.

In terms of existing models, I was largely thinking about https://github.com/zarrs/ome_zarr_metadata . That being said, I think there's definitely more than one way to do it, I would just make it feel intentionally to members of both communities.

@normanrz

Copy link
Copy Markdown
Member

Thanks @joshmoore. I think this comes down to whether it confuses people that the OME-Zarr metadata is in the zarr-java artifact or not. From the pov of an OME-Zarr implementation it is of course more convenient to have it in a single artifact; I got that feedback a couple of times now.

I don't particularly want to be blocked on a release by Zarr-level things

I don't think the release numbers of zarr-java have to correlate with either the zarr format nor OME-Zarr versions. Why would there be any blocking?

I don't immediately understand why this is here.

Fair enough. But it doesn't hurt unless it requires additional dependencies.

However, if this is something that we want to do/explain, it should be clear how others join.

Maybe it should move under dev.zarr.conventions.ome? Someone else could open a PR to add dev.zarr.conventions.geo when it exists.

@sbesson

sbesson commented Jul 27, 2026

Copy link
Copy Markdown
Contributor

Echoing @melissalinkert's comments above, my biggest piece of feedback is "let's not rename things (package, artifacts....) unless we have identified a clear rationale and well-identified benefit for users". The zarr-java -> zarr-java-core in particular is not something I find useful.

The biggest point of discussion started by this contribution is whether zarr-java should only be focused about the low-level Zarr implementation or also include an OME-Zarr implementation. My understanding is that OME-Zarr is not a primary citizen of this library with the OME-Zarr support introduced in an experimental package and OME-Zarr being absent from the primary README.

The most essential requirement from our side is to ensure we can maintain and rely upon a robust reference Zarr library for the JVM, as was originally discussed during the [2022 OME community meeting] (https://www.openmicroscopy.org/events/ome-community-meeting-2022/). When it comes to adding OME-Zarr support, using either one artifact with multiple packages or having multiple artifacts are both fine strategies for which we are working precedents. If we decide to use multiple artifacts, I have a preference for splitting the OME Zarr implementation in a separate downstream repository and versioning it separately instead of using a multi-module project.

Sign up for freeto 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.

5 participants

@konstibob@melissalinkert@normanrz@joshmoore@sbesson
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Extract ome module - #78

Open
konstibob wants to merge 6 commits into
zarr-developers:mainfrom
konstibob:extract-ome-module
Open

Extract ome module#78
konstibob wants to merge 6 commits into
zarr-developers:mainfrom
konstibob:extract-ome-module

Conversation

@konstibob

Copy link
Copy Markdown
Contributor

Restructured zarr-java into two Maven submodules, zarr-java-core and
zarr-java-ome, making OME-Zarr an optional import.

Also adds Jupyter notebooks under notebooks/ for exploring the library
locally without having to publish changes to Maven Central. Run with
./notebooks/start.sh.

Naming convention change: the OME package moved from
dev.zarr.zarrjava.experimental.ome to dev.zarr.omezarr.

Updated USERGUIDE.md and USERGUIDE-OME-ZARR.md for the new module layout,
package names, and dependency coordinates.

konstiboband others added 6 commits June 24, 2026 15:29
- Replace experimental.ome package refs with dev.zarr.omezarr
- Add zarr-java-ome as separate Maven/Gradle dependency
- Fix write example syntax and imports
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

@normanrznormanrz 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.

Very high-level feedback. I would rename the modules:

  • zarr-java-core -> zarr-java
  • zarr-java-ome -> omezarr-java

I don't think the notebooks need to be in the repository. Please remove.

@sbesson@melissalinkert Do you have some feedback on splitting up into 2 modules/jars?

@melissalinkert

Copy link
Copy Markdown
Member

I don't have a problem in general with splitting into separate submodules, though it would be useful to know why this is necessary.

I'm not yet using dev.zarr.zarrjava.experimental.ome, so the package rename to dev.zarr.omezarr isn't breaking right now (but it might be for anyone else who is using zarr-java). I would strongly suggest against any further package renames though.

I think my main concern is with artifact IDs. All of the pom.xml suggest that we can continue to use dev.zarr:zarr-java:<version> to get both modules (and that is my preference), but the user guide only mentions using the individual artifact IDs for the new modules. Since that would be a breaking change for everyone who uses zarr-java, it would be good to clarify what is expected for the zarr-java artifact ID.

@normanrz

Copy link
Copy Markdown
Member

@joshmoore Can you please elaborate the motivation for splitting up the jars?
Personally, I would also be fine with keeping everything in one jar.

@joshmoore

Copy link
Copy Markdown
Member

I'm running short on time so a immediate few thoughts:

  • From the OME perspective
    • I don't particularly want to be blocked on a release by Zarr-level things
    • (which goes to say, I see there as being more than one version number here)
  • From the Zarr perspective:
    • I don't immediately understand why this is here.
    • However, if this is something that we want to do/explain, it should be clear how others join.

In terms of existing models, I was largely thinking about https://github.com/zarrs/ome_zarr_metadata . That being said, I think there's definitely more than one way to do it, I would just make it feel intentionally to members of both communities.

@normanrz

Copy link
Copy Markdown
Member

Thanks @joshmoore. I think this comes down to whether it confuses people that the OME-Zarr metadata is in the zarr-java artifact or not. From the pov of an OME-Zarr implementation it is of course more convenient to have it in a single artifact; I got that feedback a couple of times now.

I don't particularly want to be blocked on a release by Zarr-level things

I don't think the release numbers of zarr-java have to correlate with either the zarr format nor OME-Zarr versions. Why would there be any blocking?

I don't immediately understand why this is here.

Fair enough. But it doesn't hurt unless it requires additional dependencies.

However, if this is something that we want to do/explain, it should be clear how others join.

Maybe it should move under dev.zarr.conventions.ome? Someone else could open a PR to add dev.zarr.conventions.geo when it exists.

@sbesson

sbesson commented Jul 27, 2026

Copy link
Copy Markdown
Contributor

Echoing @melissalinkert's comments above, my biggest piece of feedback is "let's not rename things (package, artifacts....) unless we have identified a clear rationale and well-identified benefit for users". The zarr-java -> zarr-java-core in particular is not something I find useful.

The biggest point of discussion started by this contribution is whether zarr-java should only be focused about the low-level Zarr implementation or also include an OME-Zarr implementation. My understanding is that OME-Zarr is not a primary citizen of this library with the OME-Zarr support introduced in an experimental package and OME-Zarr being absent from the primary README.

The most essential requirement from our side is to ensure we can maintain and rely upon a robust reference Zarr library for the JVM, as was originally discussed during the [2022 OME community meeting] (https://www.openmicroscopy.org/events/ome-community-meeting-2022/). When it comes to adding OME-Zarr support, using either one artifact with multiple packages or having multiple artifacts are both fine strategies for which we are working precedents. If we decide to use multiple artifacts, I have a preference for splitting the OME Zarr implementation in a separate downstream repository and versioning it separately instead of using a multi-module project.

Sign up for freeto 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.

5 participants

@konstibob@melissalinkert@normanrz@joshmoore@sbesson
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Extract ome module - #78

Open
konstibob wants to merge 6 commits into
zarr-developers:mainfrom
konstibob:extract-ome-module
Open

Extract ome module#78
konstibob wants to merge 6 commits into
zarr-developers:mainfrom
konstibob:extract-ome-module

Conversation

@konstibob

Copy link
Copy Markdown
Contributor

Restructured zarr-java into two Maven submodules, zarr-java-core and
zarr-java-ome, making OME-Zarr an optional import.

Also adds Jupyter notebooks under notebooks/ for exploring the library
locally without having to publish changes to Maven Central. Run with
./notebooks/start.sh.

Naming convention change: the OME package moved from
dev.zarr.zarrjava.experimental.ome to dev.zarr.omezarr.

Updated USERGUIDE.md and USERGUIDE-OME-ZARR.md for the new module layout,
package names, and dependency coordinates.

konstiboband others added 6 commits June 24, 2026 15:29
- Replace experimental.ome package refs with dev.zarr.omezarr
- Add zarr-java-ome as separate Maven/Gradle dependency
- Fix write example syntax and imports
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

@normanrznormanrz 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.

Very high-level feedback. I would rename the modules:

  • zarr-java-core -> zarr-java
  • zarr-java-ome -> omezarr-java

I don't think the notebooks need to be in the repository. Please remove.

@sbesson@melissalinkert Do you have some feedback on splitting up into 2 modules/jars?

@melissalinkert

Copy link
Copy Markdown
Member

I don't have a problem in general with splitting into separate submodules, though it would be useful to know why this is necessary.

I'm not yet using dev.zarr.zarrjava.experimental.ome, so the package rename to dev.zarr.omezarr isn't breaking right now (but it might be for anyone else who is using zarr-java). I would strongly suggest against any further package renames though.

I think my main concern is with artifact IDs. All of the pom.xml suggest that we can continue to use dev.zarr:zarr-java:<version> to get both modules (and that is my preference), but the user guide only mentions using the individual artifact IDs for the new modules. Since that would be a breaking change for everyone who uses zarr-java, it would be good to clarify what is expected for the zarr-java artifact ID.

@normanrz

Copy link
Copy Markdown
Member

@joshmoore Can you please elaborate the motivation for splitting up the jars?
Personally, I would also be fine with keeping everything in one jar.

@joshmoore

Copy link
Copy Markdown
Member

I'm running short on time so a immediate few thoughts:

  • From the OME perspective
    • I don't particularly want to be blocked on a release by Zarr-level things
    • (which goes to say, I see there as being more than one version number here)
  • From the Zarr perspective:
    • I don't immediately understand why this is here.
    • However, if this is something that we want to do/explain, it should be clear how others join.

In terms of existing models, I was largely thinking about https://github.com/zarrs/ome_zarr_metadata . That being said, I think there's definitely more than one way to do it, I would just make it feel intentionally to members of both communities.

@normanrz

Copy link
Copy Markdown
Member

Thanks @joshmoore. I think this comes down to whether it confuses people that the OME-Zarr metadata is in the zarr-java artifact or not. From the pov of an OME-Zarr implementation it is of course more convenient to have it in a single artifact; I got that feedback a couple of times now.

I don't particularly want to be blocked on a release by Zarr-level things

I don't think the release numbers of zarr-java have to correlate with either the zarr format nor OME-Zarr versions. Why would there be any blocking?

I don't immediately understand why this is here.

Fair enough. But it doesn't hurt unless it requires additional dependencies.

However, if this is something that we want to do/explain, it should be clear how others join.

Maybe it should move under dev.zarr.conventions.ome? Someone else could open a PR to add dev.zarr.conventions.geo when it exists.

@sbesson

sbesson commented Jul 27, 2026

Copy link
Copy Markdown
Contributor

Echoing @melissalinkert's comments above, my biggest piece of feedback is "let's not rename things (package, artifacts....) unless we have identified a clear rationale and well-identified benefit for users". The zarr-java -> zarr-java-core in particular is not something I find useful.

The biggest point of discussion started by this contribution is whether zarr-java should only be focused about the low-level Zarr implementation or also include an OME-Zarr implementation. My understanding is that OME-Zarr is not a primary citizen of this library with the OME-Zarr support introduced in an experimental package and OME-Zarr being absent from the primary README.

The most essential requirement from our side is to ensure we can maintain and rely upon a robust reference Zarr library for the JVM, as was originally discussed during the [2022 OME community meeting] (https://www.openmicroscopy.org/events/ome-community-meeting-2022/). When it comes to adding OME-Zarr support, using either one artifact with multiple packages or having multiple artifacts are both fine strategies for which we are working precedents. If we decide to use multiple artifacts, I have a preference for splitting the OME Zarr implementation in a separate downstream repository and versioning it separately instead of using a multi-module project.

Sign up for freeto 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.

5 participants

@konstibob@melissalinkert@normanrz@joshmoore@sbesson
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Extract ome module - #78

Open
konstibob wants to merge 6 commits into
zarr-developers:mainfrom
konstibob:extract-ome-module
Open

Extract ome module#78
konstibob wants to merge 6 commits into
zarr-developers:mainfrom
konstibob:extract-ome-module

Conversation

@konstibob

Copy link
Copy Markdown
Contributor

Restructured zarr-java into two Maven submodules, zarr-java-core and
zarr-java-ome, making OME-Zarr an optional import.

Also adds Jupyter notebooks under notebooks/ for exploring the library
locally without having to publish changes to Maven Central. Run with
./notebooks/start.sh.

Naming convention change: the OME package moved from
dev.zarr.zarrjava.experimental.ome to dev.zarr.omezarr.

Updated USERGUIDE.md and USERGUIDE-OME-ZARR.md for the new module layout,
package names, and dependency coordinates.

konstiboband others added 6 commits June 24, 2026 15:29
- Replace experimental.ome package refs with dev.zarr.omezarr
- Add zarr-java-ome as separate Maven/Gradle dependency
- Fix write example syntax and imports
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

@normanrznormanrz 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.

Very high-level feedback. I would rename the modules:

  • zarr-java-core -> zarr-java
  • zarr-java-ome -> omezarr-java

I don't think the notebooks need to be in the repository. Please remove.

@sbesson@melissalinkert Do you have some feedback on splitting up into 2 modules/jars?

@melissalinkert

Copy link
Copy Markdown
Member

I don't have a problem in general with splitting into separate submodules, though it would be useful to know why this is necessary.

I'm not yet using dev.zarr.zarrjava.experimental.ome, so the package rename to dev.zarr.omezarr isn't breaking right now (but it might be for anyone else who is using zarr-java). I would strongly suggest against any further package renames though.

I think my main concern is with artifact IDs. All of the pom.xml suggest that we can continue to use dev.zarr:zarr-java:<version> to get both modules (and that is my preference), but the user guide only mentions using the individual artifact IDs for the new modules. Since that would be a breaking change for everyone who uses zarr-java, it would be good to clarify what is expected for the zarr-java artifact ID.

@normanrz

Copy link
Copy Markdown
Member

@joshmoore Can you please elaborate the motivation for splitting up the jars?
Personally, I would also be fine with keeping everything in one jar.

@joshmoore

Copy link
Copy Markdown
Member

I'm running short on time so a immediate few thoughts:

  • From the OME perspective
    • I don't particularly want to be blocked on a release by Zarr-level things
    • (which goes to say, I see there as being more than one version number here)
  • From the Zarr perspective:
    • I don't immediately understand why this is here.
    • However, if this is something that we want to do/explain, it should be clear how others join.

In terms of existing models, I was largely thinking about https://github.com/zarrs/ome_zarr_metadata . That being said, I think there's definitely more than one way to do it, I would just make it feel intentionally to members of both communities.

@normanrz

Copy link
Copy Markdown
Member

Thanks @joshmoore. I think this comes down to whether it confuses people that the OME-Zarr metadata is in the zarr-java artifact or not. From the pov of an OME-Zarr implementation it is of course more convenient to have it in a single artifact; I got that feedback a couple of times now.

I don't particularly want to be blocked on a release by Zarr-level things

I don't think the release numbers of zarr-java have to correlate with either the zarr format nor OME-Zarr versions. Why would there be any blocking?

I don't immediately understand why this is here.

Fair enough. But it doesn't hurt unless it requires additional dependencies.

However, if this is something that we want to do/explain, it should be clear how others join.

Maybe it should move under dev.zarr.conventions.ome? Someone else could open a PR to add dev.zarr.conventions.geo when it exists.

@sbesson

sbesson commented Jul 27, 2026

Copy link
Copy Markdown
Contributor

Echoing @melissalinkert's comments above, my biggest piece of feedback is "let's not rename things (package, artifacts....) unless we have identified a clear rationale and well-identified benefit for users". The zarr-java -> zarr-java-core in particular is not something I find useful.

The biggest point of discussion started by this contribution is whether zarr-java should only be focused about the low-level Zarr implementation or also include an OME-Zarr implementation. My understanding is that OME-Zarr is not a primary citizen of this library with the OME-Zarr support introduced in an experimental package and OME-Zarr being absent from the primary README.

The most essential requirement from our side is to ensure we can maintain and rely upon a robust reference Zarr library for the JVM, as was originally discussed during the [2022 OME community meeting] (https://www.openmicroscopy.org/events/ome-community-meeting-2022/). When it comes to adding OME-Zarr support, using either one artifact with multiple packages or having multiple artifacts are both fine strategies for which we are working precedents. If we decide to use multiple artifacts, I have a preference for splitting the OME Zarr implementation in a separate downstream repository and versioning it separately instead of using a multi-module project.

Sign up for freeto 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.

5 participants

@konstibob@melissalinkert@normanrz@joshmoore@sbesson
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Extract ome module - #78

Open
konstibob wants to merge 6 commits into
zarr-developers:mainfrom
konstibob:extract-ome-module
Open

Extract ome module#78
konstibob wants to merge 6 commits into
zarr-developers:mainfrom
konstibob:extract-ome-module

Conversation

@konstibob

Copy link
Copy Markdown
Contributor

Restructured zarr-java into two Maven submodules, zarr-java-core and
zarr-java-ome, making OME-Zarr an optional import.

Also adds Jupyter notebooks under notebooks/ for exploring the library
locally without having to publish changes to Maven Central. Run with
./notebooks/start.sh.

Naming convention change: the OME package moved from
dev.zarr.zarrjava.experimental.ome to dev.zarr.omezarr.

Updated USERGUIDE.md and USERGUIDE-OME-ZARR.md for the new module layout,
package names, and dependency coordinates.

konstiboband others added 6 commits June 24, 2026 15:29
- Replace experimental.ome package refs with dev.zarr.omezarr
- Add zarr-java-ome as separate Maven/Gradle dependency
- Fix write example syntax and imports
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

@normanrznormanrz 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.

Very high-level feedback. I would rename the modules:

  • zarr-java-core -> zarr-java
  • zarr-java-ome -> omezarr-java

I don't think the notebooks need to be in the repository. Please remove.

@sbesson@melissalinkert Do you have some feedback on splitting up into 2 modules/jars?

@melissalinkert

Copy link
Copy Markdown
Member

I don't have a problem in general with splitting into separate submodules, though it would be useful to know why this is necessary.

I'm not yet using dev.zarr.zarrjava.experimental.ome, so the package rename to dev.zarr.omezarr isn't breaking right now (but it might be for anyone else who is using zarr-java). I would strongly suggest against any further package renames though.

I think my main concern is with artifact IDs. All of the pom.xml suggest that we can continue to use dev.zarr:zarr-java:<version> to get both modules (and that is my preference), but the user guide only mentions using the individual artifact IDs for the new modules. Since that would be a breaking change for everyone who uses zarr-java, it would be good to clarify what is expected for the zarr-java artifact ID.

@normanrz

Copy link
Copy Markdown
Member

@joshmoore Can you please elaborate the motivation for splitting up the jars?
Personally, I would also be fine with keeping everything in one jar.

@joshmoore

Copy link
Copy Markdown
Member

I'm running short on time so a immediate few thoughts:

  • From the OME perspective
    • I don't particularly want to be blocked on a release by Zarr-level things
    • (which goes to say, I see there as being more than one version number here)
  • From the Zarr perspective:
    • I don't immediately understand why this is here.
    • However, if this is something that we want to do/explain, it should be clear how others join.

In terms of existing models, I was largely thinking about https://github.com/zarrs/ome_zarr_metadata . That being said, I think there's definitely more than one way to do it, I would just make it feel intentionally to members of both communities.

@normanrz

Copy link
Copy Markdown
Member

Thanks @joshmoore. I think this comes down to whether it confuses people that the OME-Zarr metadata is in the zarr-java artifact or not. From the pov of an OME-Zarr implementation it is of course more convenient to have it in a single artifact; I got that feedback a couple of times now.

I don't particularly want to be blocked on a release by Zarr-level things

I don't think the release numbers of zarr-java have to correlate with either the zarr format nor OME-Zarr versions. Why would there be any blocking?

I don't immediately understand why this is here.

Fair enough. But it doesn't hurt unless it requires additional dependencies.

However, if this is something that we want to do/explain, it should be clear how others join.

Maybe it should move under dev.zarr.conventions.ome? Someone else could open a PR to add dev.zarr.conventions.geo when it exists.

@sbesson

sbesson commented Jul 27, 2026

Copy link
Copy Markdown
Contributor

Echoing @melissalinkert's comments above, my biggest piece of feedback is "let's not rename things (package, artifacts....) unless we have identified a clear rationale and well-identified benefit for users". The zarr-java -> zarr-java-core in particular is not something I find useful.

The biggest point of discussion started by this contribution is whether zarr-java should only be focused about the low-level Zarr implementation or also include an OME-Zarr implementation. My understanding is that OME-Zarr is not a primary citizen of this library with the OME-Zarr support introduced in an experimental package and OME-Zarr being absent from the primary README.

The most essential requirement from our side is to ensure we can maintain and rely upon a robust reference Zarr library for the JVM, as was originally discussed during the [2022 OME community meeting] (https://www.openmicroscopy.org/events/ome-community-meeting-2022/). When it comes to adding OME-Zarr support, using either one artifact with multiple packages or having multiple artifacts are both fine strategies for which we are working precedents. If we decide to use multiple artifacts, I have a preference for splitting the OME Zarr implementation in a separate downstream repository and versioning it separately instead of using a multi-module project.

Sign up for freeto 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.

5 participants

@konstibob@melissalinkert@normanrz@joshmoore@sbesson
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Extract ome module - #78

Open
konstibob wants to merge 6 commits into
zarr-developers:mainfrom
konstibob:extract-ome-module
Open

Extract ome module#78
konstibob wants to merge 6 commits into
zarr-developers:mainfrom
konstibob:extract-ome-module

Conversation

@konstibob

Copy link
Copy Markdown
Contributor

Restructured zarr-java into two Maven submodules, zarr-java-core and
zarr-java-ome, making OME-Zarr an optional import.

Also adds Jupyter notebooks under notebooks/ for exploring the library
locally without having to publish changes to Maven Central. Run with
./notebooks/start.sh.

Naming convention change: the OME package moved from
dev.zarr.zarrjava.experimental.ome to dev.zarr.omezarr.

Updated USERGUIDE.md and USERGUIDE-OME-ZARR.md for the new module layout,
package names, and dependency coordinates.

konstiboband others added 6 commits June 24, 2026 15:29
- Replace experimental.ome package refs with dev.zarr.omezarr
- Add zarr-java-ome as separate Maven/Gradle dependency
- Fix write example syntax and imports
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

@normanrznormanrz 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.

Very high-level feedback. I would rename the modules:

  • zarr-java-core -> zarr-java
  • zarr-java-ome -> omezarr-java

I don't think the notebooks need to be in the repository. Please remove.

@sbesson@melissalinkert Do you have some feedback on splitting up into 2 modules/jars?

@melissalinkert

Copy link
Copy Markdown
Member

I don't have a problem in general with splitting into separate submodules, though it would be useful to know why this is necessary.

I'm not yet using dev.zarr.zarrjava.experimental.ome, so the package rename to dev.zarr.omezarr isn't breaking right now (but it might be for anyone else who is using zarr-java). I would strongly suggest against any further package renames though.

I think my main concern is with artifact IDs. All of the pom.xml suggest that we can continue to use dev.zarr:zarr-java:<version> to get both modules (and that is my preference), but the user guide only mentions using the individual artifact IDs for the new modules. Since that would be a breaking change for everyone who uses zarr-java, it would be good to clarify what is expected for the zarr-java artifact ID.

@normanrz

Copy link
Copy Markdown
Member

@joshmoore Can you please elaborate the motivation for splitting up the jars?
Personally, I would also be fine with keeping everything in one jar.

@joshmoore

Copy link
Copy Markdown
Member

I'm running short on time so a immediate few thoughts:

  • From the OME perspective
    • I don't particularly want to be blocked on a release by Zarr-level things
    • (which goes to say, I see there as being more than one version number here)
  • From the Zarr perspective:
    • I don't immediately understand why this is here.
    • However, if this is something that we want to do/explain, it should be clear how others join.

In terms of existing models, I was largely thinking about https://github.com/zarrs/ome_zarr_metadata . That being said, I think there's definitely more than one way to do it, I would just make it feel intentionally to members of both communities.

@normanrz

Copy link
Copy Markdown
Member

Thanks @joshmoore. I think this comes down to whether it confuses people that the OME-Zarr metadata is in the zarr-java artifact or not. From the pov of an OME-Zarr implementation it is of course more convenient to have it in a single artifact; I got that feedback a couple of times now.

I don't particularly want to be blocked on a release by Zarr-level things

I don't think the release numbers of zarr-java have to correlate with either the zarr format nor OME-Zarr versions. Why would there be any blocking?

I don't immediately understand why this is here.

Fair enough. But it doesn't hurt unless it requires additional dependencies.

However, if this is something that we want to do/explain, it should be clear how others join.

Maybe it should move under dev.zarr.conventions.ome? Someone else could open a PR to add dev.zarr.conventions.geo when it exists.

@sbesson

sbesson commented Jul 27, 2026

Copy link
Copy Markdown
Contributor

Echoing @melissalinkert's comments above, my biggest piece of feedback is "let's not rename things (package, artifacts....) unless we have identified a clear rationale and well-identified benefit for users". The zarr-java -> zarr-java-core in particular is not something I find useful.

The biggest point of discussion started by this contribution is whether zarr-java should only be focused about the low-level Zarr implementation or also include an OME-Zarr implementation. My understanding is that OME-Zarr is not a primary citizen of this library with the OME-Zarr support introduced in an experimental package and OME-Zarr being absent from the primary README.

The most essential requirement from our side is to ensure we can maintain and rely upon a robust reference Zarr library for the JVM, as was originally discussed during the [2022 OME community meeting] (https://www.openmicroscopy.org/events/ome-community-meeting-2022/). When it comes to adding OME-Zarr support, using either one artifact with multiple packages or having multiple artifacts are both fine strategies for which we are working precedents. If we decide to use multiple artifacts, I have a preference for splitting the OME Zarr implementation in a separate downstream repository and versioning it separately instead of using a multi-module project.

Sign up for freeto 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.

5 participants

@konstibob@melissalinkert@normanrz@joshmoore@sbesson