Repository: erikbern/ann-benchmarks
Issue: Upgrade Ubuntu and Python
Root cause: Environment Incompatibility

The repo is on Ubuntu 18 and Python 3.6. 

I'm having trouble upgrading the Elastiknn benchmarks because the latest Elasticseach Ubuntu installer relies on some things that don't seem to be in Ubuntu 18. I've also jumped through some hoops with Python, e.g., intentionally installing older versions of scipy for compat w/ 3.6.

Any reason not to upgrade? Any dragons to be aware of in case I take a first pass at it?

A long time ago, a few implementations failed on Python 3.8, but I'm not sure of the exact status. The base repo runs Python 3.8 and Ubuntu 20.04, it would be great if the docker images use the same. 

Yeah let's upgrade to Python 3.10 (or at least 3.9)

I finally took a pass at this in #326, w/ ubuntu 22.04 and python 3.10.

I found that 14/33 fail to build for this combination. I spot checked a few. Some might be fixable w/ changes to the local Dockerfiles. Others seem to require changes to the upstream source (e.g., kgraph). I might be mistaken on the specifics, as this was a pretty quick look. Feel free to double check me.

In any case, what should we do for these failing libraries? I think an update is necessary, as Python 3.6 is EOL as of December 2021. Ubuntu 18 is EOL April 2023. But I don't really think it's viable for one of us to try to upgrade source in all of these libraries. I see a couple other viable options...

* Just let them fail. If the authors care, they will update.
* Try Ubuntu 20 and Python 3.8. Maybe some more of them will build without serious changes?

LMK what you guys think.

Here's a more precise summary of what I'm seeing:

* 6 libraries currently fail on master. [See this action](https://github.com/erikbern/ann-benchmarks/actions/runs/4006679948).
* With ubuntu 20.04, at least 9 libraries fail. It's probably actually 15, though, as [this action](https://github.com/erikbern/ann-benchmarks/actions/runs/4039797834) from [this PR](https://github.com/erikbern/ann-benchmarks/pull/328), still has some libraries running after three hours.
* With ubuntu 22.04, 14 libraries fail. [See this action](https://github.com/erikbern/ann-benchmarks/actions/runs/4039309819).

Why don't we merge the PR that builds on 20.04 first? I'm happy to try to fix a few of the failing ones. Usually it's not too bad.

Then let's do 22.04!

Thanks for the effort @alexklibisz. I think Ubuntu 20.04 + Python 3.8 would be a nice first step.  

If it seems difficult to do for us, we could reach out to the authors of the contributed implementations and ask them to fix the problem. 

Let's merge #327 for sure.

On merging 20.04 vs. 22.04, my thinking is: 20.04 gets me where I need to be with Elastiknn. So I'm fine if we just merge that. But, if we want to end up on 22.04 anyways, I'd recommend actually skipping 20.04. I mostly opened the 20.04 PR to see how much worse the breakage is compared to 22.04, and they seem roughly identical. So, no point trying to work through broken libraries for 20.04 if we're just going to do it again for 22.04.

@erikbern @maumueller I think we can probably move along with #328 now