Elastic has modified the official Python client for its Elasticsearch database not to work with forked versions, and closed the GitHub issue to comments.
Elasticsearch is a database manager and analytics engine, often used for log analytics. The elasticsearch-py client has over 202,000 downloads and is described as the "official low-level client for Elasticsearch. Its goal is to provide common ground for all Elasticsearch-related code in Python; because of this it tries to be opinion-free and very extendable."
It is also used as a library by Elasticsearch DSL, a high-level library for running Elasticsearch queries.
Elasticsearch was an open-source product, but in January changed its licensing in response to what the company saw as unfair usage by public cloud platforms, AWS in particular. AWS forked Elasticsearch, before the licence change, to create the Open Distro for Elasticsearch, which later evolved into OpenSearch, which had its 1.0 release last month. Casualties of this corporate battle include open-source developers who contributed to Elasticsearch but now feel let down.
Developers have now picked up on a quiet change to the elasticsearch-py source, which checks that the database is Elastic's product and not a fork. "If there is no X-Elastic-Product HTTP header in the response or if the X-Elastic-Product HTTP header value isn't Elasticsearch raise an error," is one of the changes noted.
"It's disappointing to see this :-( You're forcing us as bystanders in a battle to choose sides," said Lars Holm Nielsen, product manager for an open-source project called Invenio used for research data management.
"We develop an Open Source product that could likely easily work with both Elasticsearch or OpenSearch and then the users can choose for themselves if they want Elasticsearch or OpenSearch… This and other behaviours from Elastic really does not give me any confidence in Elastic and what you might do in the future. And don't blame it all on Amazon – you've already changed the server license, you didn't have to make this move."
- OpenSearch, the AWS-sponsored Elasticsearch fork, reaches 1.0 milestone
- Open-source developers under corporate pressure to adopt less-permissive licenses, Percona CEO says
- You know what? Fork this: AWS renames its take on Elasticsearch to OpenSearch following trademark fight
- Ruby off the Rails: Code library yanked over license blunder, sparks chaos for half a million projects
Philip Krauss, senior engineering manager at Elastic, responded: "Amazon OpenSearch is a different product. And while there is some shared history, there are already many differences that cause real confusion and issues."
A further comment on the issue was deleted and the thread has now been locked.
The same thing has happened with the .NET Connector for Elasticsearch, leading to error messages like "The client noticed that the server is not a supported distribution of Elasticsearch." When users complained, Elastic's Steve Gordon, senior software engineer, said that "the recommendation is to upgrade to the latest default distribution of Elasticsearch, which is free to use under Elastic License v2… we have labelled this as an enhancement since it affects only unsupported client and server combinations. In supported configurations, the change is not breaking. The intent here is to make this incompatibility explicit by failing fast to avoid consumers incorrectly assuming they are running in a supported configuration which is not tested and may not function as expected."
Another change is that the Java client for Elasticsearch has been switched to the Elastic License.
Over in the OpenSearch community, this topic has caused some anxiety. "What should opensearch do about all the connectors and bindings for the different programming languages currently available? A lot of them are already integrating anti-competitive measures as it has been reported," said one user.
The licensing is a different matter than the product check. Elastic said: "Our client libraries remain licensed under Apache 2.0, with the exception of our Java High Level Rest Client (Java HLRC). The Java HLRC has dependencies on the core of Elasticsearch, and as a result this client library will be licensed under the Elastic License. Over time, we will eliminate this dependency and move the Java HLRC to be licensed under Apache 2.0."
Licensing these clients under Apache 2.0 (as is the case with the Python and .NET clients) is not sufficient for use with OpenSearch if the code blocks connection, although it does mean that the clients can easily be forked and modified.
Elastic may be hoping that the momentum behind the official release, along with its own contributions, will be sufficient that the open-source alternative cannot keep up. ®