rickardp commented on issue #793:
URL: https://github.com/apache/lucenenet/issues/793#issuecomment-1781160217

   Thank you for the really nice and transparent explanation, @NightOwl888! 
Ultimately, it is down to a fundamental architectural decision on whether this 
is a line-by-line, version-by-version port of the Java Lucene or if this is a 
full-text search *library based* on Java Lucene. This decision is one that 
would be made by the maintainers, and respected by the users of this library.
   
   > While we could simply abandon 4.8.0 and start working on the latest 
version of Lucene now, we would be stuck in a situation where we have all of 
the same work to finish we do now plus an estimated 1800 hours of upgrading work
   
   If I read the entire thread correctly, there was never a suggestion to just 
abandon 4.8, but instead to decide the API is stable and focus on bug fixes, 
then release 4.8 and figure out a different way to version the library so that 
API changes can be done later. This way, going from beta to release would mean 
the current feature set is stable, but without the guarantees of implementing 
100% of the APIs of the Java version.
   
   Just to give an example, speaking only from my experience with the library, 
I personally was not aware of the desire to keep on-disk binary formats the 
same between Java and .NET. We are only using a subset of all this 
functionality, and we would definitely not be using the Java version, let alone 
on the same data. We don't care about Java Lucene at all, we just want a really 
good .NET full text search engine (actually we don't care about on-disk format 
at all as we are 100% in memory, but that's a different story).
   
   > The bottom line is there is no maintenance plan for making a Frankenstein 
version of Lucene that incorporates features from different versions
   
   I respect the decision to do a line-by-line port of Java Lucene, but I do 
like to point out that porting the most relevant features would not necessarily 
lead to a "Frankenstein" version. Obviously any feature that goes into the 
codebase have to be well architected and any technical dependencies for this 
feature have to be implemented properly. But consider if the goal was just to 
make the best .NET full text search engine out there, maybe omitting the long 
tail of rarely used features to not have to spend 1800 hours on version 4.8, 
instead focusing on the most popular features (again, building on robust 
foundation) may be serving the community better. This could perhaps lead to a 
higher engagement from the community (in terms of collaboration/PRs and 
possibly funding). You could still use Java Lucene as a blueprint for the 
implementation, but with the additional insight in what turned out well and 
what did not turn out so well there, without being burdened like they have by 
keepi
 ng compatibility also with less used and less well designed features.
   
   > We could alternatively move on to 4.8.0 release while keeping the 
Lucene.Net.ICU and components that depend on it unstable
   
   To be blunt, and in all respect, it might get hard to find funding for 
hundreds or thousands of dev hours fixing the ICU library to support rare 
scripts and languages, until someone with a clear business case for it turns 
up. Just for comparison, if some company needed, say, vector valued fields 
(just as a random example) they might have the resources to fund the 
maintainers directly or devote professional developers to work with you on 
implementing this feature. But since I understand it you want to go to 
9.something directly after 4.8, maybe we'll see a lot more contributions coming 
in as the field will be more open for new features.
   
   > but unfortunately that means either splitting up the lucene-cli component 
or releasing it as stable with unstable dependencies
   
   If you have policies against pre-release libraries this is probably also a 
no go. I think policies like this are based on the assumption that pre-release 
means unstable implementation, while you mean unstable API. This is probably 
the core of this discussion, as it is clear that the code base is very stable 
from a bugs point of view.
   
   It sounds like you have made a well-motivated and conscious decision w.r.t 
the versioning policy and the way to integrate new features. Your code, your 
versioning policy. Thank you for an awesome effort!
   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: dev-unsubscr...@lucenenet.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org

Reply via email to