Skip to content

Commit 1505072

Browse files
committed
Avoid the terms "ImageJ" and "ImageJ2"
The SciJava Ops project is not built on those technologies, although SciJava Ops Image did evolve from ImageJ Ops, and the scijava-ops-legacy component enables backwards compatibility with ImageJ and ImageJ2.
1 parent 2cbc15a commit 1505072

File tree

12 files changed

+54
-57
lines changed

12 files changed

+54
-57
lines changed

README.md

Lines changed: 10 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ Thank you!*
3737
The following narrative details the ways in which this approach refines and
3838
updates the SciJava development process, with the goal of improving and
3939
streamlining development of projects across the entire software stack,
40-
including SciJava, ImageJ2, SCIFIO, Fiji, and other SciJava-based software
40+
including SciJava, ImgLib2, SCIFIO, Fiji, and other SciJava-based software
4141
layers. This discussion assumes the reader is familiar with the
4242
[current SciJava development methodology and project
4343
architecture](https://imagej.net/develop/architecture).
@@ -114,9 +114,10 @@ remains a way to see what everyone is working on easily.
114114
##### Minimize complexity
115115

116116
The goal here is to make the projects accessible to potential contributors.
117-
Currently, even the naming of these projects is confusing—ImageJ, Fiji,
118-
SciJava, ImageJ2, SCIFIO... Is there a way moving forward where we can
119-
streamline naming and consider alternatives?
117+
Even the naming of projects during the ImageJ2 era was confusing—ImageJ,
118+
Fiji, SciJava, ImageJ2, ImgLib2, SCIFIO... To move forward, we are streamlining
119+
the naming to use "SciJava" in more situations, and eschew use of the terms
120+
"ImageJ" and "ImageJ2" to avoid confusion with the original ImageJ project.
120121

121122
##### Release as early as possible, but be completely stable once released
122123

@@ -197,15 +198,14 @@ highlighted here needs to be reexamined.\]
197198
The next iteration of our core development process, addressing these challenges
198199
and applying lessons learned.
199200

200-
The SciJava, ImageJ2 and Fiji projects are distinct, but heavily overlap.
201+
The SciJava, ImgLib2 and Fiji projects are distinct, but heavily overlap.
201202

202-
* **ImageJ2** consists of *core libraries* and an *end-user application* for
203+
* **ImgLib2** consists of *core libraries* for
203204
scientific multidimensional image processing and analysis.
204205
* **SciJava** consists of *core Java libraries more general than image
205206
processing*, including an extensible framework for plugins, an application
206207
container, and many useful utilities.
207-
* **Fiji** is a *suite of ImageJ plugins for the life sciences* and a
208-
*distribution of ImageJ including those plugins*.
208+
* **Fiji** is an *end-user application* and *suite of ImageJ plugins for the
209209

210210
#### Proposed iteration of the SciJava development process: the SciJava incubator
211211

@@ -318,10 +318,8 @@ together. Makes it clearer who is a "core developer" as well.
318318
* SciJava: Cultivate a sustainable development community where powerful
319319
scientific tools grow.
320320
* ImgLib2: Provide powerful reusable image processing libraries.
321-
* ImageJ2: Broaden the paradigm of ImageJ beyond the limitations of the
322-
original ImageJ application.
323-
* Fiji: Make powerful scientific imaging software tools accessible to
324-
biologists. Batteries included.
321+
* Fiji: Make powerful scientific imaging software tools accessible to all.
322+
Batteries included.
325323

326324
**What about complexity compared to e.g. Python ecosystem?**
327325
The "genes" of our Java ecosystem, accessibility with type safety, play to
@@ -403,7 +401,6 @@ Multi-module codebase but everything has a single version for a given component.
403401

404402
Which layers?
405403
- SciJava → scijava/scijava
406-
- ImageJ2 → imagej/imagej3 (!) (but should we move on from this name?)
407404
- SCIFIO → scifio/scifio (but it clashes with existing repo)
408405
- Fiji → consider consolidating things like `fiji-lib`, `Fiji_Developer`
409406
into fiji? `fiji-lib` is the thing other plugins can depend on. Unless we
Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
# Scripting in ImageJ2
1+
# Scripting in Fiji
22

3-
Using SciJava Ops and ImageJ Ops2 within scripts provide the most powerful aspects of Ops. The following page will explain how you can write a script in ImageJ2's Script Editor that utilizes Ops for image processing.
3+
Using SciJava Ops within scripts unlocks the most powerful aspects of Ops. The following page will explain how you can write a script in Fiji's Script Editor that utilizes Ops for image processing.
44

55
## Obtaining an OpEnvironment
66

docs/ops/doc/Installation.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,13 @@
22

33
## Fiji
44

5-
One easy way to use SciJava Ops is within ImageJ2/Fiji, using SciJava's Script Editor. **Note that to use ImageJ2/Fiji, you must use Java 11+. Instructions on using Java 11+ for ImageJ2/Fiji can be found [here](https://imagej.net/learn/faq#how-do-i-launch-imagej-with-a-different-version-of-java)**.
5+
One easy way to use SciJava Ops is within [Fiji](https://fiji.sc), using SciJava's Script Editor. **Note that to use Fiji, you must use Java 11+. Instructions on using Java 11+ for Fiji can be found [here](https://imagej.net/learn/faq#how-do-i-launch-imagej-with-a-different-version-of-java)**.
66

7-
### Installing the SciJava Ops update site
7+
### Installing SciJava Ops
88

9-
You can install the SciJava Ops update site (containing ImageJ Ops2, SciJava Ops, and all other required components) by following the [Update site tutorial](https://imagej.net/update-sites/following#add-update-sites).
9+
You can install SciJava Ops into Fiji by enabling the SciJava Ops update site, as described in the [Update site tutorial](https://imagej.net/update-sites/following#add-update-sites).
1010

11-
1. With Fiji open, navigate to `Help --> Update...`
11+
1. With Fiji open, navigate to `Help → Update...`
1212
2. Click `Manage Update Sites`
1313
3. In the `Search` bar at the top of the popup, search `SciJava Ops`
1414
4. Find the `SciJava Ops` row, and check the checkbox in the `Active` column.

docs/ops/doc/MigratingFromImageJOps.md

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,14 @@ The [ImageJ Ops](https://imagej.net/libs/imagej-ops/index) framework is the pred
44

55
## Upgrading pom-scijava
66

7-
Before doing anything else, you should ensure that your version of pom-scijava is new enough to make use of SciJava 3 goodness.
7+
Before doing anything else, you should ensure that your version of pom-scijava is new enough to make use of SciJava Ops goodness.
88

99
TODO: Replace with the pom-scijava version needed to grab this annotation processor.
1010

11-
Until the SciJava 3 annotation processor is added to pom-scijava, developers must add the following block of code to the `build` section of your POM:
11+
Until the SciJava Ops annotation processor is integrated into [pom-scijava](https://github.com/scijava/pom-scijava), developers must add the following block of code to the `build` section of their project POM:
1212

13+
TODO: Replace with the pom-scijava version needed to grab this annotation processor.
14+
TODO: Replace the SciJava Ops Indexer version with the correct initial version
1315
```xml
1416
<build>
1517
<plugins>
@@ -19,14 +21,15 @@ Until the SciJava 3 annotation processor is added to pom-scijava, developers mus
1921
<annotationProcessorPaths>
2022
<path>
2123
<groupId>org.scijava</groupId>
22-
<artifactId>scijava-javadoc-parser</artifactId>
23-
<version>${project.version}</version>
24+
<artifactId>scijava-ops-indexer</artifactId>
25+
<version>1.0.0</version>
2426
</path>
2527
</annotationProcessorPaths>
2628
<fork>true</fork>
2729
<showWarnings>true</showWarnings>
2830
<compilerArgs>
29-
<arg>-Ajavadoc.packages="${therapi.packages}"</arg>
31+
<arg>-Aparse.ops=true</arg>
32+
<arg>-Aop.version="${project.version}"</arg>
3033
</compilerArgs>
3134
</configuration>
3235
</plugin>
@@ -54,7 +57,7 @@ SciJava Ops uses a separate annotation processor to record plugins at compile ti
5457

5558
Additional options include:
5659
* Providing multiple names by replacing `names='name1'` with `names='name1,name2,...'` to allow your Op to be discoverable under multiple names
57-
* Providing the Op's priority by appending `priority=<the priority>`. SciJava Ops uses the same priority values as ImageJ Ops2, and relative priorities can be retained by using the new SciJava Priority library.
60+
* Providing the Op's priority by appending `priority=<the priority>`. SciJava Ops uses the same priority values as ImageJ Ops, and relative priorities can be retained by using the new SciJava Priority library.
5861

5962
The following diff shows the changes needed to replace the `@Plugin` annotation:
6063

docs/ops/doc/README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
# Ops Reference Documentation
22

3-
To access SciJava Ops's and ImageJ Ops2's installation, initialization, tutorial, troubleshooting and API reference documentation please visit the [SciJava Ops ReadTheDocs](https://ops.scijava.org/en/latest/index.html) website or build the documentation locally (see [building the reference documentation](https://pyimagej.readthedocs.io/en/latest/Development.html#building-the-reference-documentation) for more details).
3+
To access SciJava Ops's installation, initialization, tutorial, troubleshooting and API reference documentation please visit the [SciJava Ops ReadTheDocs](https://ops.scijava.org/en/latest/index.html) website or build the documentation locally (see [building the reference documentation](https://pyimagej.readthedocs.io/en/latest/Development.html#building-the-reference-documentation) for more details).

docs/ops/doc/WhyOps.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ SciJava Ops takes strides to ease these burdens by separating the *what* ("I wan
1010
## What are the driving values of SciJava Ops?
1111

1212
1. **Consistency**: All Ops are called in the same way, regardless of the mechanisms used by the underlying framework. This means that you don't have to learn Python to call Ops written in Python, but it also means that you could pass the output from an Op written in Python to an Op written in Java, all with the same syntax!
13-
2. **Reusability**: Ops extends Java's mantra of "write once, run anywhere" to image processing algorithms. Algorithms written for the SciJava Ops framework are usable as-is from any SciJava-compatible software project including ImageJ2/Fiji or from Python using PyImageJ.
13+
2. **Reusability**: Ops extends Java's mantra of "write once, run anywhere" to image processing algorithms. Algorithms written for the SciJava Ops framework are usable as-is from any SciJava-compatible software project including Fiji, or from Python using PyImageJ.
1414
3. **Reproducibility**: Ops are deterministic: calling the same op twice with the same arguments yields the same result, always. Ops are also versioned, meaning that if you use the same Op environment with the same library versions, you will always have reproducible workflows.
1515
4. **Flexibility**: Through adaptation and simplification pathways, Ops can be applied to all kinds of inputs, relaxing considerations for data structures. For example, binary numerical Ops are automatically looped and parallelized to operate on images. New data types extending core interfaces can be supported immediately, without rewriting existing algorithms.
1616
5. **Safety**: An op may consist of any number of strongly typed inputs, and calls to access those ops can be as specific as desired. This allows analyst users to use ops without regard for data structure, while developers can rely on the type safety guarantees needed for optimization.

docs/ops/doc/WritingYourOwnOpPackage.md

Lines changed: 14 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -4,19 +4,16 @@ Right now, there are two ways to write and expose your own Ops.
44

55
## Ops Through Javadoc
66

7-
Ops can be declared directly through Javadoc - this yields a couple of benefits, namely:
8-
* No additional runtime dependencies needed for simple Ops
7+
The recommended way to declare your Ops is through Javadoc. This approach requires no additional runtime dependencies&mdash;only a correctly formatted `@implNote` tag in the javadoc block of each routine you wish to make available as an Op, plus the scijava-ops-indexer annotation processor component present on your annotation processor path at compile time.
98

10-
This mechanism of Op declaration is used by the ImageJ Ops2 project
9+
### Adding the SciJava Ops Indexer to your POM
1110

12-
### Adding the SciJava Javadoc Parser to your POM
11+
Ops written through Javadoc are discovered by the SciJava Ops Indexer, which creates a file `op.yaml` containing all of the data needed to import each Op you declare.
1312

14-
Ops written through Javadoc are discovered by the SciJava Javadoc Parser, which creates a file `op.yaml` containing all of the data needed to import each Op you declare.
15-
16-
Until the SciJava 3 annotation processor is added to pom-scijava, developers must add the following block of code to the `build` section of your POM:
13+
Until the SciJava Ops annotation processor is integrated into [pom-scijava](https://github.com/scijava/pom-scijava), developers must add the following block of code to the `build` section of their project POM:
1714

1815
TODO: Replace with the pom-scijava version needed to grab this annotation processor.
19-
TODO: Replace the SciJava Javadoc Parser version with the correct initial version
16+
TODO: Replace the SciJava Ops Indexer version with the correct initial version
2017
```xml
2118
<build>
2219
<plugins>
@@ -26,14 +23,15 @@ TODO: Replace the SciJava Javadoc Parser version with the correct initial versio
2623
<annotationProcessorPaths>
2724
<path>
2825
<groupId>org.scijava</groupId>
29-
<artifactId>scijava-javadoc-parser</artifactId>
30-
<version>${project.version}</version>
26+
<artifactId>scijava-ops-indexer</artifactId>
27+
<version>1.0.0</version>
3128
</path>
3229
</annotationProcessorPaths>
3330
<fork>true</fork>
3431
<showWarnings>true</showWarnings>
3532
<compilerArgs>
36-
<arg>-Ajavadoc.packages="-"</arg>
33+
<arg>-Aparse.ops=true</arg>
34+
<arg>-Aop.version="${project.version}"</arg>
3735
</compilerArgs>
3836
</configuration>
3937
</plugin>
@@ -141,9 +139,9 @@ Note again that the only supported functional interfaces that can be used withou
141139

142140
## Ops using JPMS
143141

144-
The other way to expose Ops is by using the [Java Platform Module System](https://www.oracle.com/corporate/features/understanding-java-9-modules.html). This mechanism is used to expose the Ops declared within SciJava Ops Engine, and may be preferred for its usage of plain Java mechanisms:
142+
The other way to expose Ops is by using the [Java Platform Module System](https://www.oracle.com/corporate/features/understanding-java-9-modules.html). This mechanism is used to expose the Ops declared within SciJava Ops Engine, and may be preferred for its usage of plain Java mechanisms and strong type safety:
145143

146-
In opposition to the Javadoc mechanism, all projects wishing to declare Ops using JPMS must add a dependency on the SciJava Ops SPI library:
144+
In contrast to the Javadoc mechanism, all projects wishing to declare Ops using JPMS must add a dependency on the SciJava Ops SPI library:
147145

148146
```xml
149147
<dependencies>
@@ -280,7 +278,7 @@ class DoubleSizeOp implements Function<double[], Double> {
280278

281279
### Element-wise Ops
282280

283-
Simple pixel-wise operations like addition, inversion, and more can be written on a single pixel (i.e. `RealType`) - therefore, ImageJ Ops2 takes care to automagically adapt pixel-wise Ops across a wide variety of image types. If you would like to write a pixel-wise Op, we recommend the following structure.
281+
Simple pixel-wise operations like addition, inversion, and more can be written on a single pixel (i.e. `RealType`) - therefore, SciJava Ops Image takes care to automagically adapt pixel-wise Ops across a wide variety of image types. If you would like to write a pixel-wise Op, we recommend the following structure.
284282

285283
```java
286284
/**
@@ -297,7 +295,7 @@ class MyPixelwiseOp<T extends RealType<T>> implements Computers.Arity2<T, T, T>
297295
}
298296
```
299297

300-
If you then have ImageJ Ops2, the following Op call will match your pixel-wise Op using ImageJ Ops2's lifting mechanisms:
298+
The following Op call will match your pixel-wise Op using SciJava Ops's lifting mechanisms:
301299

302300
```java
303301
ArrayImg<UnsignedByteType> in1 = ...
@@ -349,7 +347,7 @@ class MyNeighborhoodOp<T extends RealType<T>> implements Computers.Arity1<Neighb
349347
}
350348
```
351349

352-
ImageJ Ops2 will then lift this algorithm to operate on images in parallel, requiring users to only define the shape of the neighborhoods to be used:
350+
SciJava Ops will then lift this algorithm to operate on images in parallel, requiring users to only define the shape of the neighborhoods to be used:
353351

354352
```java
355353
ArrayImg<DoubleType> input = ...

docs/ops/doc/conf.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,8 @@
1919
# -- Project information -----------------------------------------------------
2020

2121
project = "SciJava Ops"
22-
copyright = "2022 ImageJ2 developers"
23-
author = "ImageJ2 developers"
22+
copyright = "2014-2024 SciJava developers"
23+
author = "SciJava developers"
2424

2525

2626
# -- General configuration ---------------------------------------------------

docs/ops/doc/index.rst

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
66
Welcome to the Ops documentation!
77
====================================
8-
SciJava Ops is a library for extensible algorithm retrieval and execution. ImageJ Ops2 is a library for scientific image processing, built atop SciJava Ops and deriving from `ImageJ Ops <https://imagej.net/libs/imagej-ops/>`_.
8+
SciJava Ops is a library for extensible algorithm retrieval and execution. SciJava Ops Image is a collection of Ops for scientific image processing, built on SciJava Ops.
99

1010
The combination of these libraries allows declarative image analysis workflows, allowing users to think more about the *what* than the *how*.
1111

@@ -22,7 +22,7 @@ The combination of these libraries allows declarative image analysis workflows,
2222

2323
CallingOps
2424
SearchingForOps
25-
ScriptingInImageJ2
25+
ScriptingInFiji
2626
Benchmarks
2727

2828
.. toctree::

scijava-common3/src/main/java/org/scijava/common3/Apps.java

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -218,12 +218,11 @@ public static File getBaseDirectory(final Class<?> c,
218218
* itself will reside <b>in its Maven build directory</b>. So as long as you
219219
* ask for the base directory relative to a class <em>of the executed
220220
* project</em> it will be found.</li>
221-
* <li><b>Running as an application bundle (e.g., ImageJ).</b> Typically this
222-
* means downloading ImageJ from the web site, unpacking it and running the
223-
* ImageJ launcher (double-clicking ImageJ-win32.exe on Windows,
224-
* double-clicking the {@code ImageJ.app} on OS X, etc.). In this case, all
225-
* components reside in the {@code jars} folder of the application bundle, and
226-
* the base directory will be found one level above that.</li>
221+
* <li><b>Running as an application bundle (e.g., Fiji).</b> Typically this
222+
* means downloading Fiji from its web site, unpacking it and running it using
223+
* its native launcher. In this case, all components reside in the
224+
* {@code jars} folder of the application bundle, and the base directory will
225+
* be found one level above that.</li>
227226
* </ol>
228227
*
229228
* @param classLocation The location from which the base directory should be

0 commit comments

Comments
 (0)