SoilJ - a plugin for a semi-automatized 3-D image analyses of soil samples

Hej everyone,

I would like to bundle the SoilJ plugin with Fiji.
It is a wrapper that is designed to semi-automatize 3-D image analyses of soil samples.
The plugin is presented in the following publication.
https://dl.sciencesocieties.org/publications/vzj/abstracts/17/1/170062

SoilJ comes as a mavenized ImageJ 1 plugin that relies on
ImageJ, Fiji, Java-8, 3D ImageJ Suite, IJPB-plugins.
It is stored under https://github.com/johnkoestel/soilj.

I am presently reading through the howto on imagej.net. But I would be glad about some more personalized guidance.

Cheers from the North,

John

1 Like

Hi John,
The best to distribute your plugins is to create an update site.
The wiki is quite detailed but let us know if you need more guidance about what to upload…

OK, thanks for the advice. I had not yet found this page, yet.

Please give us an update when you do get that done, I’m interested.
Bob

I’m very interested! Please, update when you do it.

Interested and following!!!

Here is the page describing best practices for distributing your plugin to users:

As @LThomas said, an update site is a great way to go. That said, if you do decide you still want to distribute your plugin with Fiji itself, there is a process for that:

Just let us know what you decide to do.

1 Like

Hej Curtis,

thanks for the answer. Exactly: this was why I had not found the website that Laurent had recommended. I would like to distribute SoilJ with Fiji itself. This is also why I posted the announcement in the forum, as the site on how to distribute plugins recommends to do it if you want to distribute it with Fiji. I had not expected to get an answer on how to not distribute it with Fiji itself. : )
But sure, the way I had written the forum entry was probably not too clear on that point.

I will read the Fiji/contribution requirements more carefully today, as planned. I will probably come back with some questions then.

Cheers and thanks,

/John

1 Like

@johnkoestel Thanks for clarifying!

I took a look at your source. Here are some things we would need to solve in order to make it feasible to distribute SoilJ with Fiji:

  1. The POM currently extends pom-scijava 12.0.0. This needs to be updated to 27.0.1, since that is the version with which Fiji is currently aligned. If we do not update this, your plugin will depend on old library versions at build time, and then not work properly at runtime with current Fiji. Note that updating pom-scijava to later versions requires the inclusion of more metadata fields documenting things like SciJava team roles; see the guide to these fields for details, and let me know if you have any questions. I am willing to file a PR against your repository doing this work, if it helps.

  2. Your plugin needs to have a release version cut, rather than staying at SNAPSHOT forever. To do that, all its dependencies must also be at release versions. In practice here, that means we need to have a release of com.github.mcib3d:mcib3d-core. We would need to work with @ThomasBoudier to make that happen. Alternately, you could eliminate that dependency in favor of some other 3D-capable libraries such as the 3D Viewer, or ImgLib2 + SciView, depending on the functionality you need.

  3. If your plugin ships with Fiji, then all its dependencies must also ship with Fiji. Otherwise, people who download Fiji will not be able to use your plugin as expected. That means Fiji would need to start shipping the 3D ImageJ Suite and MorphoLibJ, meaning the authors (@ThomasBoudier and @iarganda respectively) would need to agree also. Alternately, you could change your plugin so that the functionality using 3D ImageJ Suite and MorphoLibJ is optional—that way, users who download Fiji can still use your plugin, but would gain extra functionality by enabling those two update sites. E.g., this is what @iarganda and I did for Trainable Weka Segmentation’s use of the ImageScience code when it moved to a separate update site.

With these factors in mind: do you still want to pursue distribution with Fiji? We need buy-in from @iarganda and @ThomasBoudier. And it would be a bit of work to get your codebase to where it needs to be to work correctly with Fiji. There are major advantages, though: easier to ensure your plugin continues working as time goes on; and makes your plugin available in other deployment contexts, such as in Python via pyimagej, without needing a local Fiji installation—so you could use it e.g. from Jupyter notebooks.

Hi @ctrueden, @johnkoestel,

Just regarding 3D suite, following advice from Curtis there is now a version number 3.96 that you can use in your pom.xml . I am still a bit confused, if this will become a plugin in Fiji with an update site, it will just require to have other dependencies, one being 3D Suite ? Anyway happy to help if needed.

Best,

Thomas

@ThomasBoudier Ah, since you are using jitpack.io, there are reproducible builds for every commit, and available from maven.scijava.org thanks to proxying—see here for examples.

My understanding is that @johnkoestel does not want to create an update site for SoilJ, but rather wants to ship the SoilJ JAR file with Fiji itself—which would entail shipping all of SoilJ’s dependencies with Fiji as well. Since one of its dependencies is com.github.mcib3d:mcib3d-core, that artifact would then be shipped with Fiji. This has ramifications for the 3D ImageJ Suite update site, since there would then be artifact overlap. It might make sense to then also ship mcib3d_plugins with Fiji, and dispense with the separate 3D ImageJ Suite update site altogether.

Does that clarify things?

Hej Curtis and Thomas,

Thanks a lot for your replies! Also apologies for the delayed reaction to these. Believe it or not, but I am presently at a hotel without internet Connection, including a lack of mobile net coverage.

Yes, I would like to ship SoilJ JAR with Fiji, but I also would like to continue to use the mcib3d_plugins in SoilJ. I was not aware on the requirement that the 3D suite also needs to be shipped with Fiji in this case.

So, I now understand whether you, Thomas, and Ignacio would also follow the same example. It now depends on what you decide and then, what the alternatives would be for me (i.e. if I could make do without the 3D suite… which I do not believe, actually).

So far for now,

thanks again and cheers,

/John

P.S.: yes, I will implement the suggested versions into the POM as soon as I have time for it.

Hi @johnkoestel and @ctrueden,

Regarding mcib3d, it makes sense to always ship them together since they are kind of part of the same project. Excuse my down to earth approach, but why not zip your actual Fiji and distribute it, of course you may need to disallow automatic update and from time to time release new zips. Maybe you can have a look to Bio7 which is a customized release of Fiji if I understand correctly.

Anyway if I can help by migrating mcib3d or part of it to Fiji, I will be happy to do.

Best,

Thomas