Hello all

The joint OGC/ASF/OSGeo code sprint was this week near Lausanne [1]. A joint report of activity will be published later. For the part specific to Apache projects, below is a small summary of what we did.


   Apache Sedona

Sedona did a presentation about their background and architecture. The ST_Distance function was taken as an example for showing how it is used in a query, and what kind of geodetic calculations it requires under the hood. The geodetic services in Sedona are currently handled by GeoTools, which is a LGPL library. The licensing issue that it poses for an Apache project was discussed, as well as concerns about whether GeoTools referencing services are maintained. A proposal to migrate to Apache SIS was presented.

We did not had the time to start actual coding work on a migration experiment. Anyway such work could not be completed before either Apache SIS offers all features that Sedona needs (SIS currently misses a GeoTIFF writer and a ShapeFile reader), or before GeoTools resolves its conflict with GeoAPI (see "GeoAPI" section below) for allowing the two projects to coexist. Both issues are expected to be at least partially resolved by this autumn.


   Apache Baremaps

Baremaps did a 5-minutes pitch showing the project features. Bertil was physically present at the event, which has been a great opportunity for discussions.

Bertil: would you like to expand more on what happened on Baremaps side during those 3 days?


   Apache SIS / GeoAPI

We did not had the time to work on Apache SIS directly. But on the GeoAPI side (which SIS implements), we had an announcement concerning the resolution of "org.opengis" package name collision with GeoTools [2]. A GeoTools PMC representative announced that they were going to work on this issue in August, by stopping to use the "opengis" name on their side. My expectation is that this issue will be resolved for next GeoTools release. This is a significant announcement for any Apache projects that could benefit from SIS services, such as Apache Sedona and Baremaps.

During the code sprint, we completed the full migration of PROJ-JNI [3] and GIGS [4] to Java 11. Actually those two projects were already Java 11 compatible, but the service providers were still registered in the Java 8 way. Service providers are the Java standard mechanism by which an application such as GIGS can detect automatically which GeoAPI implementation is available at runtime, without any previous knowledge of GIGS about those implementations. Before Java 9, services were registered by putting files in the META-INF/services directory, and third-party JAR files were loaded dynamically at runtime using ClassLoader. Since Java 9, services are registered by declaring them in the module-info.java file, and third-party JAR files are loaded dynamically at runtime using ModuleLayer. Upgrading GIGS code base to use ModuleLayer worked well on the Java side. The biggest difficulty was not with Java, but with Maven. The problem is that even if a project is fully modularized in the Java 9+ way, Maven exec:java goal still launches the application using "java --classpath" when it should use "java --modulepath". The consequence is that Maven systematically launches Java in a kind of Java 8 compatibility mode, which causes difficulties in finding services declared in the Java 9+ way.

Apache SIS has not yet been migrated to a fully Java 9+ modularized project. Consequently, GIGS tests may temporarily not work anymore on SIS. We will try to fix that issue before next SIS release, by finishing the Jigsaw modularisation of SIS.

    Martin

[1]https://github.com/opengeospatial/developer-events/wiki/Open-Standards-and-Open-Source-Software-Code-Sprint
[2]https://desruisseaux.github.io/history/GeoAPI.html
[3]https://github.com/OSGeo/PROJ-JNI
[4]https://github.com/IOGP-GIGS/GIGSGeoAPI

Reply via email to