[ 
https://issues.apache.org/jira/browse/LUCENE-6997?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15120317#comment-15120317
 ] 

Nicholas Knize commented on LUCENE-6997:
----------------------------------------

bq. ...can you explain better? I'm unfamiliar with restrictions imposed by 
sandbox.

I had the understanding the sandbox module provides no backwards compatibility. 
Not "it doesn't guarantee backwards compatibility" but there is "NO backwards 
compatibility". Other modules do not have this restriction. In this particular 
case the restriction makes it difficult/impossible to experiment and evolve 
alternative postings based encoding methods without adding some crazy 
abstraction layer (that just masks backcompat), or duplicating code and (like 
codecs) changing class names.

bq. ...doesn't depend on Spatial4j (what I assume you imply by "dependency 
free")

Just no dependencies whatsoever, be them optional or not (to include JTS or 
future dependencies).

bq. I don't think that need be fundamental to the spatial module's future.

I agree. While the GeoUtils API is really close to being able to remove the JTS 
dependency there are some Apache friendly libraries I think would really boost 
lucene-spatial's capabilities. And IMHO that's what defines the lucene-spatial 
module. A provider of the more advanced GIS capabilities with dependencies from 
only "friendly" licenses (I'm not a lawyer so I don't know what this list would 
include).

bq. From a maven standpoint, they could be marked "optional". 

I think that's part of the benefits for having a lightweight dependency free 
module. I was told (and did some quick research - a la elgoog) that optional 
dependencies are no longer going to be supported by Java 9? I'm sure someone 
far smarter than me on Java 9 can chime in but if class A depends on B which 
optionally depends on C you can no longer include B without C? Sounds like that 
will break the current Spatial4J / JTS model? Also Optional dependencies aren't 
well supported for build systems other than maven (e.g., gradle)? I'm certainly 
not a gradle expert (by any means) but I know I've seen this as enough of a 
headache in the past that gradle users try to avoid them unless necessary.

To me these seem like compelling reasons to split the complexity of spatial 
into a lightweight dependency free core module that can be leveraged by modules 
that either do or do not have a dependency restriction.

> Graduate GeoUtils and postings based GeoPointField from sandbox...
> ------------------------------------------------------------------
>
>                 Key: LUCENE-6997
>                 URL: https://issues.apache.org/jira/browse/LUCENE-6997
>             Project: Lucene - Core
>          Issue Type: Improvement
>            Reporter: Nicholas Knize
>
> {{GeoPointField}} is a lightweight dependency-free postings based geo field 
> currently in sandbox. It has evolved into a very fast lightweight geo option 
> that heavily leverages the optimized performance of the postings structure. 
> It was originally intended to graduate to core but this does not seem 
> appropriate given the variety of "built on postings" term encoding options 
> (e.g., see LUCENE-6930).  
> Additionally, the {{Geo*Utils}} classes are dependency free lightweight 
> relational approximation utilities used by both {{GeoPointField}} and the BKD 
> based {{LatLonField}} and can also be applied to benefit the lucene-spatial 
> module.
> These classes have been evolving and baking for some time and are at a 
> maturity level qualifying for promotion from sandbox. This will allow support 
> for experimental encoding methods with (minimal) backwards compatibility - 
> something sandbox does not allow.
> Since GeoPoint classes are dependency free, all GeoPointField and support and 
> utility classes currently in sandbox would be promoted to the spatial3d 
> package. (possibly a separate issue to rename spatial3d to spatialcore or 
> spatiallite?) Such that for basic lightweight Geo support one would only need 
> a handful of lucene jars. By simply adding the lucene-spatial module and its 
> dependency jars users can obtain more advanced geospatial support (heatmap 
> facets, full shape relations, etc).



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@lucene.apache.org
For additional commands, e-mail: dev-h...@lucene.apache.org

Reply via email to