- 
                Notifications
    
You must be signed in to change notification settings  - Fork 20
 
Description
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:
- Native dependencies need to be copied to the right places (
jars/<platform>orlib/<platform>); - 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;
 - 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:
- 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.shscript 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.
 
 - Add sciview as a runtime dep to the 
sc.fiji:fijiPOM 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...)