Dear Martin,

Thanks for your suggestion!

1. I am interested in exploring replacing geotools with Proj4J or Apache
SIS if this replacement can serve this purpose: this library can be shipped
together in Sedona binary (Maven 'compile' scope) and users no longer need
to manually add another dependency like the geotools-wrapper [1].

Given this purpose, I can see there are a few features that Apache SIS
lacks. Please correct me if I am wrong since you are an expert of Apache
SIS.

(1) Compatibility with both Java 8 and Java 11. SIS only works for Java 11
however many Sedona users are still on Java 8. We have no plan to get rid
of Java 8 support any time soon.
(2) Support of ESRI shapefile read.
(3) Support of GeoTiiff read and write. SIS supports GeoTiiff read but
Sedona also writes result to GeoTiiff.
(4) Apache SIS also does not ship EPSG dataset in its binary meaning that
the users still have to manually add another dependency.

2. Sedona pom files are kind of very complicated since we have modules for
both Spark and Flink. The core logic is:

(1) The root pom does not have any compile-scope dependencies. All these
dependencies are just for development purposes. We never package Spark and
Flink dependency because expect users to add Spark, Flink dependencies on
their own.
(2) If it is really necessary, dependencies that need to be shipped in
Sedona binary are put in the corresponding child module pom under 'compile'
scope.
(3) There are a few exceptions: JTS, jts2geojson, GeoTools [2]. We don't
ship them in binary because these libraries are very commonly used in GIS
applications. Packaging them to Sedona might end up polluting the user's
environment.
(4) Sedona has a special module called sedona-python-adapter which is
designated for non-JVM world users (Python and R). In this module, we
package all dependencies in compile scope since these users usually don't
know much about Maven packaging. However, geotools is excluded due to the
license issue.

3. If you think using SIS can serve the purpose mentioned above, you can
create a fork of Sedona and work on it. Then you can create a PR on Sedona
and the CI will automatically test the code.

Thanks,
Jia

[1] https://sedona.apache.org/setup/maven-coordinates/#use-sedona-fat-jars
[2]
https://sedona.apache.org/setup/maven-coordinates/#use-sedona-and-third-party-jars-separately

On Wed, Dec 14, 2022 at 2:26 PM Martin Desruisseaux <
martin.desruisse...@geomatys.com> wrote:

> Hello all
>
> To follow-up on this question, is there an interest for experimenting a
> replacement of GeoTools dependency (LGPL license) by Apache SIS? (not
> knowing in advance if the experiment would be conclusive or not). If
> yes, where should be the branch?
>
> Regarding dependencies, by looking at the root pom.xml file [1] I'm a
> little bit confused. All non-test dependencies are declared with
> <scope>${dependency.scope}</scope> where the ${dependency.scope}
> property is set to "provided" be default. This pom.xml file seems to
> implement an "all or nothing" behavior regarding dependency scope
> management. I would have expected the default scope ("compile") for a
> set of dependencies that are essential to Sedona working, and the
> "provided" scope for optional dependencies. Are all the dependencies
> really optional?
>
> I think that the NOTICE file needs to list the licenses of dependencies.
> Maybe [3] can be used as a source of inspiration? Note that gt-epsg is
> under EPSG Terms of use, not only LGPL. A similar issue raised for
> Apache Calcite goes deeper in this topic and how it can be resolved [4].
>
> I mention those licensing topics because I guess they are the reason for
> the way dependencies are declared in the root pom.xml, and if I create a
> branch for experimenting some dependencies replacement, understanding
> their purposes would be better.
>
>      Thanks,
>
>          Martin
>
> [1]
> https://github.com/apache/incubator-sedona/blob/sedona-1.3.1-incubating-rc1/pom.xml
> [2]
> https://github.com/apache/incubator-sedona/blob/sedona-1.3.1-incubating-rc1/NOTICE
> [3]https://github.com/apache/sis/blob/master/NOTICE
> [4]https://github.com/locationtech/proj4j/issues/90
>

Reply via email to