[ImageJ-devel] JEX

Curtis Rueden ctrueden at wisc.edu
Thu Apr 17 10:32:26 CDT 2014


Hi Jay & Erwin,

> Erwin and I are exploring the idea of a new version of JEX that would
> itself be a plugin of ImageJ.

That would be fantastic.

> There are a few different ways this could be developed... Either as
> part of the imagej managed code base (i.e. a package within a current
> ImageJ2 project or as its own maven project that is updated and
> managed like the rest of the ImageJ2 suite of projects like ij-app,
> ij-core, etc.) or as a completely separate project that we jarify and
> allow users to put into the plugin folder of ImageJ afterward.

The model we are targeting is "one Git repository per JAR file" with each
being a Maven module with its own version. We have already completed this
transition with the Fiji project [1], and ImageJ2 will be completely
structured that way soon as well. This approach has many advantages:

1) Stable release version couplings between components, so that if an
upstream component changes, downstream components are not affected/broken
until they intentionally upgrade to the newer version.

2) Independent versioning of each component. When a bug is fixed in a
particular component, we just release a new version of that component. No
need to cut vacuous releases of the entire collection of ImageJ2 JARs.

3) Easier and less intimidating to contribute to an individual plugin: just
fork that one repo, push your changes and file a PR. No need to clone an
all-encompassing fiji.git or imagej.git repository.

Further, in the Fiji project, each module is now what we call an "external
plugin" that lives in its own repository, either in the
github.com/fijinamespace, or in some cases [2, 3] in the plugin
developer's personal space
(doesn't matter that much).

ImageJ2 and Fiji support multiple update sites [4]. There is a core ImageJ2
update site [5], a core Fiji update site [6], and many others as well [7].
JEX would be a perfect fit for its own update site, giving you full control
over every aspect of your releases while leveraging the power of ImageJ2
for deployment to your users.

In short: I would suggest creating a personal update site for JEX and
serving your releases from there. That way, anyone using ImageJ2 or Fiji
can install JEX simply by checking a box. For details, see:

    http://fiji.sc/How_to_set_up_and_populate_an_update_site

And as you know I would certainly advise structuring JEX as a Maven
project, though it is not required. Here is a template you can use as a
starting point:

    https://github.com/imagej/minimal-ij1-plugin

Very happy to answer any questions our issues you have on your journey. :-)

Regards,
Curtis

[1] https://github.com/fiji
[2] https://github.com/tferr/ASA
[3] git://repo.or.cz/trakem2.git
[4] http://fiji.sc/Update_Sites
[5] http://update.imagej.net/
[6] http://fiji.sc/update/
[7] http://fiji.sc/List_of_update_sites


On Thu, Apr 17, 2014 at 9:41 AM, Jay Warrick <warrick at wisc.edu> wrote:

> Sorry to clog your inbox. Evidently this didn't send last night and it got
> sent without closing the email...
>
> Any ideas or suggestions on a development approach would be welcome. You
> have sold me/us on your approach to application development. We want to
> integrate ourselves the best way possible but don't want to bring the
> project down by being less professional in our coding abilities and
> practices. We'll do our best but I'm not sure we'll ever be able to be on
> par with the rest of you guys :-)
>
> I look forward to hearing from you. Thanks,
>
> Jay (and Erwin)
>
>
> Begin forwarded message:
>
> *From: *Jay Warrick <warrick at wisc.edu>
> *Subject: **JEX*
> *Date: *April 17, 2014 at 9:35:04 AM CDT
> *To: *Curtis Rueden <ctrueden at wisc.edu>
>
> Hi Curtis,
>
> Erwin and I are exploring the idea of a new version of JEX that would
> itself be a plugin of ImageJ.
>
> There are a few different ways this could be developed... Either as part
> of the imagej managed code base (i.e. a package within a current ImageJ2
> project or as its own maven project that is updated and managed like the
> rest of the ImageJ2 suite of projects like ij-app, ij-core, etc.) or as a
> completely separate project that we jarify and allow users to put into the
> plugin folder of ImageJ afterward. What might you recommend? We don't want
> to impose or muddy up your architecture but also really like the idea of
> being well-integrated with your current lifecycle management schemes (i.e.
> maven dependancies, compiling, versioning, and updating of jars (Jenkins
> etc).
>
>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://imagej.net/pipermail/imagej-devel/attachments/20140417/3ceb35b1/attachment.html>


More information about the ImageJ-devel mailing list