Hello,

We've been working for a few months on using Avro encoded messages between
our services in my company.

Our backend heavily relies on PHP, whereas some orbiting services are
written in Java/Kotlin/Python.
At first glance, the lake of official support for PHP looked like a big
no-go for us.

I know that there is an official library, embedded in the avro library at
https://github.com/apache/avro/tree/master/lang/php/lib.

However this library suffers from blocking issues:
- It is not available through the de facto standard Composer dependency
manager
- It is not tested
- It does not rely on autoloading PSR
- It uses global namespace
- It uses unknown php functions
- It lacks some spec features (support for logicalType attribute for
instance)
- It is buggy

Despite these issues, latest commit is 1 year old (about a typo), and the
one before that is almost 3 years old. Thus, I think it is safe to say that
this library is not maintained anymore.

Many organizations have realized such issue and have created their own fork
of the library, none of them being thoroughly maintained and having the
same level of bug fixing.

Here are a few examples:
- https://github.com/wikimedia/avro-php
- https://github.com/flix-tech/avro-php
- https://github.com/researchgate/avro-php
- https://gitlab.com/Jaumo/avro-php (I am the maintainer of this one)

I have tried to contribute to Wikimedia's fork, but they also seem to have
dropped support (see activity in
https://gerrit.wikimedia.org/r/q/status:open+project:avro-php). The awesome
thing is that they have brought a test suite (that we are reusing in our
fork)!

Flix-tech is doing an awesome job at providing a Schema Registry API client
as well as an Avro Serializer/Deserializer using their Schema Registry
client.

There are great initiatives out there to modernize this library, but none
of them trully gather the focus of the many maintainers, scattered through
private organizations.

I think it is time to give avro-php some love and I would like to help in
this matter.

My feeling is that the first step should be to open a separate git
repository under the hood of the ASF organization.
This could either be done through an automatic subtree of
https://github.com/apache/avro/tree/master/lang/php/lib to a read-only
repository (as Symfony is doing), in order to register it on packagist.org
or through the opening of a separate read/write repository (and the removal
of the lib from the avro lib repository).

Second step is to communicate, directly by contacting fork maintainers
annoucing the good news, and through ASF official communication vectors
(thinking about ML, Twitter, ...). The goal being to bring back all the PHP
avro user to an official implementation of the library.

Thank you very much for your answer,
And I wish you all fantastic time within friends and family for the end of
the year.

Best Regards.

*Gildas Quéméner*

Reply via email to