xdrop / fuzzywuzzy

Java fuzzy string matching implementation of the well known Python's fuzzywuzzy algorithm. Fuzzy search for Java
GNU General Public License v2.0
822 stars 118 forks source link

Propose to change the license to MIT #101

Open borovikovd opened 2 years ago

borovikovd commented 2 years ago

Hello,

We at Synthesized LTD really like your library and would like to use it in production. However, the license is too restrictive for us.

Do you mind changing it to more permissive such as MIT?

Cheers, Denis

maxbachmann commented 2 years ago

This license change is not this simple. The library includes a copy of the Levenshtein implementation from https://github.com/ztane/python-Levenshtein, which is GPL licensed. As noted here: https://github.com/xdrop/fuzzywuzzy/issues/84 I maintain a complete rewrite for C++/Python, which could be ported to Java or wrapped using JNI if someone wants a MIT licensed implementation.

borovikovd commented 2 years ago

Thanks for the explanation @maxbachmann! I think we could help with a port/jni wrapper ;) It seems we can allocate one person to work on this topic.

maxbachmann commented 2 years ago

I think we could help with a port/jni wrapper ;) It seems we can allocate one person to work on this topic.

Sounds good. You can find the C++ sources here and the Python wrapper here. I do not know whether a wrapper or a Java port is better for the performance. I assume a wrapper is less maintenance work. Someone started to write a JNI wrapper for java on android last year: https://github.com/MuntashirAkon/rapidfuzz-android/ and you can find some discussion regarding this here. However this seems abandoned and has a memory leak in pretty much every function.

stevensiht commented 1 year ago

Hey, I was wondering if there are any updates related to the licensing topic. Did anyone start work on the JNI wrapper?

maxbachmann commented 1 year ago

I am not aware of anyone working on the JNI wrapper yet. I am not familiar with java myself, so this would need the help of someone familiar with Java + JNI to write the wrapper. I am willing to help with any questions. Especially on the following topics:

For the python wrapper the main complexities are the following topics: