I understand we've been willing to introduce backward-incompatible API changes (not file-format changes) into minor release versions. If so, here's an idea for consideration:
Let's eliminate recursive records from Avro 1.9.x. Recursion introduces a _lot_ of complexity into many parts of the Avro code base. We could vastly simplify the code base, and probably speed things up, by getting rid of this feature. The specific proposal would be that Avro 1.9.x would refuse to accept recursive records, and thus would not be able to read binary files written by older versions of Avro. I haven't heard of anyone actually using them, so I don't think this would be a problem.