Hello all

There is a technical problem for which the current situation is not satisfying, and for which I have trouble to find the best action...

We needs a "Unit of measurement" framework. Because this is important to so many domains (even the JDK has a TimeUnit class), we made a standardisation attempts 12 years ago (JSR-108), which failed [1]. We made a second attempt (JSR-275), which failed again [2]. GeoAPI - and consequently current Apache SIS - currently have a dependency toward this failed JSR-275 attempt. This obviously brings two problems:

1) JSR-275 namespace (javax.measure.unit) is not supposed to exist.
2) JSR-275 bugs will never be fixed.

After JSR-275 rejection, the main JSR-275 authors moved their API as interfaces in the "org.unitsofmeasurement.unit" package under a BSD-like license [3]. Those interfaces are implemented by the Eclipse UOMo project among others [4], and his maintainer told me that they are gaining acceptance in the Eclipse community.

However the maintainer told me that a sensor-related JSR have good chances to start in 2013, could include units of measurement, and that they want to go fast. This would bring yet another package name in the mix (or maybe they would reuse the javax.measure.unit one - we don't know). So the alternatives at this time are:

1) Keep JSR-275 for now, wait and see.
2) Adopt org.unitsofmeasurement interfaces, then:
2a) Adopt UOMo implementation
2b) Provide our own implementation
3) Define our own interfaces

On 1), we are already waiting for two years and I still have trouble to figure out if yes or no a third JSR attempt will happen... On 2), the problem is that the decision does not involve only SIS, but also GeoAPI, and as a standardisation attempt we are better to be as sure as possible that we will not change again if, for example, Oracle starts a new JSR. On 2a), I have not tried this UOMo implementation. But I had some trouble with the JSR-275 implementation. Many statics methods in the Units class that I just committed today [5] are workarounds for JSR-275 bugs or limitations. Some methods like "valueOfEPSG" (scroll down until the bottom of the page) are very specific to the geospatial domain and unlikely to be supported natively by an external unit framework. The NetCDF unit names ("degrees_east", "degrees_north") are also quite specific, so maybe having our own implementation is not completely non-sense. On 2b) actually we already have an implementation from old JSR-108 days, so it could be easily refactored to "org.unitsofmeasurement" interfaces. On 3), it would need to be done in GeoAPI I don't think it would have a lot of support...

The GeoAPI working group is not active at this time, so I suspect that we may have more discussion on this SIS list, then brings a proposal to the GeoAPI list. This proposal (about interfaces only - the implementation decision stay on the SIS side only) would need to be written as a change request and posted before December 27 if we want it to be considered at the next OGC meeting.

Any though, opinion, proposal would be highly appreciated...

    Regards,

        Martin


[1] http://jcp.org/en/jsr/detail?id=108
[2] http://jcp.org/en/jsr/detail?id=275
[3] http://www.unitsofmeasurement.org/
[4] http://www.eclipse.org/uomo/
[5] https://builds.apache.org/job/sis-jdk7/site/apidocs/org/apache/sis/measure/Units.html

Reply via email to