Skip to content

Ship sciview with Fiji? Or make the sciview update site stay in sync with Fiji seamlessly #520

@ctrueden

Description

@ctrueden

Over time there have been various issues and dependency skew with the sciview update site(s) not matching what is currently shipped on the core update sites for vanilla Fiji. E.g. #422, #392, #179. This issue intends to document what the fundamental problem is, and ways we could/should resolve it.

The sciview dependencies must stay in sync with Fiji's dependencies. That's what the pom-scijava Bill of Materials is for: keeping dependencies at consistent versions. But it only fully works if: A) sciview and fiji releases extend the same (ideally latest release) version of pom-scijava; and B) the dependency versions uploaded to the sciview and Java-8 update sites respectively align with those releases.

This has been historically tricky for a couple of reasons. We have tooling to populate a Fiji installation with a Maven coordinate including its dependencies, and upload the resulting state to an update site, but there are a couple of wrinkles:

  1. Native dependencies need to be copied to the right places (jars/<platform> or lib/<platform>);
  2. We need to take care not to shadow the versions of any core libraries—i.e., every JAR should exist either on the Java-8 site (in which case it is "core") or the sciview update site;
  3. When a core dependency such as ImgLib2 changes in a backward-incompatible manner, we need to update all downstream code to accommodate the breakage, and then synchronize releases and uploads to avoid dependency skew across update sites.

To help scenery+sciview stay in better sync with Fiji henceforth, I propose that we add sciview to Fiji, so that it comes with Fiji. No extra update site needed—it works out of the box.

Needed steps to make this happen:

  1. Get scenery and sciview (re)added to the pom-scijava BOM.
    • This is important so that other projects can depend on scenery+sciview. It will let people e.g. write plugins that use sciview more easily.
    • It would also bring us closer to including scenery and sciview in the pom-scijava "mega melt" build+tests, to validate that changes to dependencies don't break scenery+sciview; unfortunately, because the builds are Gradle-based, the mega-melt tooling is incompatible—we would need to enhance the melting-pot.sh script to know how to override dependency versions in the scenery+sciview gradle builds.
    • We also need a release of sciview, which is what the pom-scijava BOM will reference.
  2. Add sciview as a runtime dep to the sc.fiji:fiji POM file.

And I think that's it?

@kephale @skalarproduktraum If you would rather keep scenery+sciview on a separate update site, I think that would also be OK. But we would then need to address the three wrinkles mentioned above: 1) fix any bugs in populate-app.sh, 2) stop shadowing core libs, 3) update scenery+sciview synchronously with Fiji whenever core libs break things. (Though ideally, core libs would not break things in the first place...)

Metadata

Metadata

Assignees

Labels

build-systemIssue or PR concerns build system, dependencies, etc.

Type

No type

Projects

No projects

Relationships

None yet

Development

No branches or pull requests

Issue actions